diff options
author | Antenore Gatta <antenore@simbiosi.org> | 2022-11-14 17:57:47 +0300 |
---|---|---|
committer | Antenore Gatta <antenore@simbiosi.org> | 2022-11-14 17:57:47 +0300 |
commit | b0a55ee4705599a27edf0cd5d6bfea1308a2b75d (patch) | |
tree | bd0da582b678414f6dbb10eff8b097fd5305b79e | |
parent | d9ef38251afe1f8c2da1fc84c44964d54e8da8e3 (diff) |
Automatic doc build by remmina-ci
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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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> | <a class="qindex" href="#letter_d">d</a> | <a class="qindex" href="#letter_i">i</a> | <a class="qindex" href="#letter_l">l</a> | <a class="qindex" href="#letter_m">m</a> | <a class="qindex" href="#letter_o">o</a> | <a class="qindex" href="#letter_p">p</a> | <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">  _  </div></td></tr></table> -</td><td valign="top"><a class="el" href="struct___remmina_f_t_p_client_class.html">_RemminaFTPClientClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_event.html">_RemminaPluginVncEvent</a>   </td><td valign="top"><a class="el" href="struct___remmina_tool_plugin.html">_RemminaToolPlugin</a>   </td><td valign="top"><a class="el" href="struct_py_generic.html">PyGeneric</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_f_t_p_task.html">_RemminaFTPTask</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_w_w_w_data.html">_RemminaPluginWWWData</a>   </td><td valign="top"><a class="el" href="struct___remmina_tp_channel_handler.html">_RemminaTpChannelHandler</a>   </td><td valign="top"><a class="el" href="struct_py_g_object.html">PyGObject</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___connection_data.html">_ConnectionData</a>   </td><td valign="top"><a class="el" href="struct___remmina_group_data.html">_RemminaGroupData</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_x2_go_data.html">_RemminaPluginX2GoData</a>   </td><td valign="top"><a class="el" href="struct___remmina_tp_handler.html">_RemminaTpHandler</a>   </td><td valign="top"><a class="el" href="struct_py_g_param_spec.html">PyGParamSpec</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___dialog_data.html">_DialogData</a>   </td><td valign="top"><a class="el" href="struct___remmina_icon.html">_RemminaIcon</a>   </td><td valign="top"><a class="el" href="struct___remmina_pref.html">_RemminaPref</a>   </td><td valign="top"><a class="el" href="struct___remmina_tp_handler_class.html">_RemminaTpHandlerClass</a>   </td><td valign="top"><a class="el" href="struct_py_g_pointer.html">PyGPointer</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___g_vnc_plugin_data.html">_GVncPluginData</a>   </td><td valign="top"><a class="el" href="struct___remmina_key_chooser_arguments.html">_RemminaKeyChooserArguments</a>   </td><td valign="top"><a class="el" href="struct___remmina_pref_dialog.html">_RemminaPrefDialog</a>   </td><td valign="top"><a class="el" href="struct___remmina_unlock_dialog.html">_RemminaUnlockDialog</a>   </td><td valign="top"><a class="el" href="struct_py_plugin.html">PyPlugin</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___py_g_closure.html">_PyGClosure</a>   </td><td valign="top"><a class="el" href="struct___remmina_key_val.html">_RemminaKeyVal</a>   </td><td valign="top"><a class="el" href="struct___remmina_pref_dialog_priv.html">_RemminaPrefDialogPriv</a>   </td><td valign="top"><a class="el" href="struct___x2_go_custom_user_data.html">_X2GoCustomUserData</a>   </td><td valign="top"><a class="el" href="struct_py_remmina_file.html">PyRemminaFile</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___py_g_object___functions.html">_PyGObject_Functions</a>   </td><td valign="top"><a class="el" href="struct___remmina_language_wrapper_plugin.html">_RemminaLanguageWrapperPlugin</a>   </td><td valign="top"><a class="el" href="struct___remmina_pref_plugin.html">_RemminaPrefPlugin</a>   </td><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  d  </div></td></tr></table> +</td><td valign="top"><a class="el" href="struct___remmina_f_t_p_client_class.html">_RemminaFTPClientClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_w_w_w_data.html">_RemminaPluginWWWData</a>   </td><td valign="top"><a class="el" href="struct___remmina_tp_channel_handler.html">_RemminaTpChannelHandler</a>   </td><td valign="top"><a class="el" href="struct_py_g_object.html">PyGObject</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_f_t_p_task.html">_RemminaFTPTask</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_x2_go_data.html">_RemminaPluginX2GoData</a>   </td><td valign="top"><a class="el" href="struct___remmina_tp_handler.html">_RemminaTpHandler</a>   </td><td valign="top"><a class="el" href="struct_py_g_param_spec.html">PyGParamSpec</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___connection_data.html">_ConnectionData</a>   </td><td valign="top"><a class="el" href="struct___remmina_group_data.html">_RemminaGroupData</a>   </td><td valign="top"><a class="el" href="struct___remmina_pref.html">_RemminaPref</a>   </td><td valign="top"><a class="el" href="struct___remmina_tp_handler_class.html">_RemminaTpHandlerClass</a>   </td><td valign="top"><a class="el" href="struct_py_g_pointer.html">PyGPointer</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___dialog_data.html">_DialogData</a>   </td><td valign="top"><a class="el" href="struct___remmina_icon.html">_RemminaIcon</a>   </td><td valign="top"><a class="el" href="struct___remmina_pref_dialog.html">_RemminaPrefDialog</a>   </td><td valign="top"><a class="el" href="struct___remmina_unlock_dialog.html">_RemminaUnlockDialog</a>   </td><td valign="top"><a class="el" href="struct_py_plugin.html">PyPlugin</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___g_vnc_plugin_data.html">_GVncPluginData</a>   </td><td valign="top"><a class="el" href="struct___remmina_key_chooser_arguments.html">_RemminaKeyChooserArguments</a>   </td><td valign="top"><a class="el" href="struct___remmina_pref_dialog_priv.html">_RemminaPrefDialogPriv</a>   </td><td valign="top"><a class="el" href="struct___x2_go_custom_user_data.html">_X2GoCustomUserData</a>   </td><td valign="top"><a class="el" href="struct_py_remmina_file.html">PyRemminaFile</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___py_g_closure.html">_PyGClosure</a>   </td><td valign="top"><a class="el" href="struct___remmina_key_val.html">_RemminaKeyVal</a>   </td><td valign="top"><a class="el" href="struct___remmina_pref_plugin.html">_RemminaPrefPlugin</a>   </td><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  d  </div></td></tr></table> </td><td valign="top"><a class="el" href="struct_py_remmina_plugin_screenshot_data.html">PyRemminaPluginScreenshotData</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu.html">_RemminaAppletMenu</a>   </td><td valign="top"><a class="el" href="struct___remmina_log_window.html">_RemminaLogWindow</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_feature.html">_RemminaProtocolFeature</a>   </td><td valign="top"><a class="el" href="struct_py_remmina_protocol_feature.html">PyRemminaProtocolFeature</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_class.html">_RemminaAppletMenuClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_log_window_class.html">_RemminaLogWindowClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a>   </td><td valign="top"><a class="el" href="structdistro__info.html">distro_info</a>   </td><td valign="top"><a class="el" href="struct_py_remmina_protocol_setting.html">PyRemminaProtocolSetting</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_item.html">_RemminaAppletMenuItem</a>   </td><td valign="top"><a class="el" href="struct___remmina_main.html">_RemminaMain</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_setting.html">_RemminaProtocolSetting</a>   </td><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  i  </div></td></tr></table> +<tr><td valign="top"><a class="el" href="struct___py_g_object___functions.html">_PyGObject_Functions</a>   </td><td valign="top"><a class="el" href="struct___remmina_language_wrapper_plugin.html">_RemminaLanguageWrapperPlugin</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_feature.html">_RemminaProtocolFeature</a>   </td><td valign="top"><a class="el" href="struct_py_remmina_protocol_feature.html">PyRemminaProtocolFeature</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu.html">_RemminaAppletMenu</a>   </td><td valign="top"><a class="el" href="struct___remmina_log_window.html">_RemminaLogWindow</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a>   </td><td valign="top"><a class="el" href="structdistro__info.html">distro_info</a>   </td><td valign="top"><a class="el" href="struct_py_remmina_protocol_setting.html">PyRemminaProtocolSetting</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_class.html">_RemminaAppletMenuClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_log_window_class.html">_RemminaLogWindowClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_setting.html">_RemminaProtocolSetting</a>   </td><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  i  </div></td></tr></table> </td><td valign="top"><a class="el" href="struct_py_remmina_protocol_widget.html">PyRemminaProtocolWidget</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_item_class.html">_RemminaAppletMenuItemClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_main_priv.html">_RemminaMainPriv</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_setting_opt.html">_RemminaProtocolSettingOpt</a>   </td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  r  </div></td></tr></table> +<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_item.html">_RemminaAppletMenuItem</a>   </td><td valign="top"><a class="el" href="struct___remmina_main.html">_RemminaMain</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_setting_opt.html">_RemminaProtocolSettingOpt</a>   </td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  r  </div></td></tr></table> </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_avahi.html">_RemminaAvahi</a>   </td><td valign="top"><a class="el" href="struct___remmina_monitor.html">_RemminaMonitor</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a>   </td><td valign="top"><a class="el" href="structitem.html">item</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_avahi_priv.html">_RemminaAvahiPriv</a>   </td><td valign="top"><a class="el" href="struct___remmina_news_dialog.html">_RemminaNewsDialog</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_class.html">_RemminaProtocolWidgetClass</a>   </td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  l  </div></td></tr></table> +<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_item_class.html">_RemminaAppletMenuItemClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_main_priv.html">_RemminaMainPriv</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a>   </td><td valign="top"><a class="el" href="structitem.html">item</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_avahi.html">_RemminaAvahi</a>   </td><td valign="top"><a class="el" href="struct___remmina_monitor.html">_RemminaMonitor</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_class.html">_RemminaProtocolWidgetClass</a>   </td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  l  </div></td></tr></table> </td><td valign="top"><a class="el" href="structregion.html">region</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_cell_renderer_pixbuf.html">_RemminaCellRendererPixbuf</a>   </td><td valign="top"><a class="el" href="struct___remmina_passwd_dialog.html">_RemminaPasswdDialog</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a>   </td><td valign="top"><a class="el" href="structremmina__masterthread__exec__data.html">remmina_masterthread_exec_data</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_cell_renderer_pixbuf_class.html">_RemminaCellRendererPixbufClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin.html">_RemminaPlugin</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a>   </td><td valign="top"><a class="el" href="structlsb__distro__info.html">lsb_distro_info</a>   </td><td valign="top"><a class="el" href="structremmina__plugin__rdp__event.html">remmina_plugin_rdp_event</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_chat_window.html">_RemminaChatWindow</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_exec_data.html">_RemminaPluginExecData</a>   </td><td valign="top"><a class="el" href="struct___remmina_scrolled_viewport.html">_RemminaScrolledViewport</a>   </td><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  m  </div></td></tr></table> +<tr><td valign="top"><a class="el" href="struct___remmina_avahi_priv.html">_RemminaAvahiPriv</a>   </td><td valign="top"><a class="el" href="struct___remmina_passwd_dialog.html">_RemminaPasswdDialog</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a>   </td><td valign="top"><a class="el" href="structremmina__masterthread__exec__data.html">remmina_masterthread_exec_data</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_cell_renderer_pixbuf.html">_RemminaCellRendererPixbuf</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin.html">_RemminaPlugin</a>   </td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a>   </td><td valign="top"><a class="el" href="structlsb__distro__info.html">lsb_distro_info</a>   </td><td valign="top"><a class="el" href="structremmina__plugin__rdp__event.html">remmina_plugin_rdp_event</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_cell_renderer_pixbuf_class.html">_RemminaCellRendererPixbufClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_exec_data.html">_RemminaPluginExecData</a>   </td><td valign="top"><a class="el" href="struct___remmina_scrolled_viewport.html">_RemminaScrolledViewport</a>   </td><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  m  </div></td></tr></table> </td><td valign="top"><a class="el" href="structremmina__plugin__rdp__keymap__entry.html">remmina_plugin_rdp_keymap_entry</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_chat_window_class.html">_RemminaChatWindowClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_rdpset_grid.html">_RemminaPluginRdpsetGrid</a>   </td><td valign="top"><a class="el" href="struct___remmina_scrolled_viewport_class.html">_RemminaScrolledViewportClass</a>   </td><td valign="top"><a class="el" href="structremmina__plugin__rdp__ui__object.html">remmina_plugin_rdp_ui_object</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_color_pref.html">_RemminaColorPref</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_rdpset_grid_class.html">_RemminaPluginRdpsetGridClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_secret_plugin.html">_RemminaSecretPlugin</a>   </td><td valign="top"><a class="el" href="structmpchanger__params.html">mpchanger_params</a>   </td><td valign="top"><a class="el" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_connection_object.html">_RemminaConnectionObject</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_screenshot_data.html">_RemminaPluginScreenshotData</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p.html">_RemminaSFTP</a>   </td><td valign="top"><a class="el" href="struct_mp_run_info.html">MpRunInfo</a>   </td><td valign="top"><a class="el" href="struct_remmina_message_panel_private.html">RemminaMessagePanelPrivate</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_connection_window.html">_RemminaConnectionWindow</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_service.html">_RemminaPluginService</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p_client.html">_RemminaSFTPClient</a>   </td><td rowspan="2" valign="bottom"><a name="letter_o"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  o  </div></td></tr></table> +<tr><td valign="top"><a class="el" href="struct___remmina_chat_window.html">_RemminaChatWindow</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_rdpset_grid.html">_RemminaPluginRdpsetGrid</a>   </td><td valign="top"><a class="el" href="struct___remmina_scrolled_viewport_class.html">_RemminaScrolledViewportClass</a>   </td><td valign="top"><a class="el" href="structremmina__plugin__rdp__ui__object.html">remmina_plugin_rdp_ui_object</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_chat_window_class.html">_RemminaChatWindowClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_rdpset_grid_class.html">_RemminaPluginRdpsetGridClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_secret_plugin.html">_RemminaSecretPlugin</a>   </td><td valign="top"><a class="el" href="structmpchanger__params.html">mpchanger_params</a>   </td><td valign="top"><a class="el" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_color_pref.html">_RemminaColorPref</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_screenshot_data.html">_RemminaPluginScreenshotData</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p.html">_RemminaSFTP</a>   </td><td valign="top"><a class="el" href="struct_mp_run_info.html">MpRunInfo</a>   </td><td valign="top"><a class="el" href="struct_remmina_message_panel_private.html">RemminaMessagePanelPrivate</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_connection_object.html">_RemminaConnectionObject</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_service.html">_RemminaPluginService</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p_client.html">_RemminaSFTPClient</a>   </td><td rowspan="2" valign="bottom"><a name="letter_o"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  o  </div></td></tr></table> </td><td valign="top"><a class="el" href="struct_remmina_plugin_loader.html">RemminaPluginLoader</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_connection_window_class.html">_RemminaConnectionWindowClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_sftp_data.html">_RemminaPluginSftpData</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p_client_class.html">_RemminaSFTPClientClass</a>   </td><td valign="top"><a class="el" href="structrf__bitmap.html">rf_bitmap</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_entry_plugin.html">_RemminaEntryPlugin</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_spice_data.html">_RemminaPluginSpiceData</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_s_h.html">_RemminaSSH</a>   </td><td valign="top"><a class="el" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a>   </td><td valign="top"><a class="el" href="structrf__clipboard.html">rf_clipboard</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_file.html">_RemminaFile</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_spice_xfer_widgets.html">_RemminaPluginSpiceXferWidgets</a>   </td><td valign="top"><a class="el" href="struct___remmina_ssh_search.html">_RemminaSshSearch</a>   </td><td rowspan="2" valign="bottom"><a name="letter_p"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  p  </div></td></tr></table> +<tr><td valign="top"><a class="el" href="struct___remmina_connection_window.html">_RemminaConnectionWindow</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_sftp_data.html">_RemminaPluginSftpData</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p_client_class.html">_RemminaSFTPClientClass</a>   </td><td valign="top"><a class="el" href="structrf__bitmap.html">rf_bitmap</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_connection_window_class.html">_RemminaConnectionWindowClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_spice_data.html">_RemminaPluginSpiceData</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_s_h.html">_RemminaSSH</a>   </td><td valign="top"><a class="el" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a>   </td><td valign="top"><a class="el" href="structrf__clipboard.html">rf_clipboard</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_entry_plugin.html">_RemminaEntryPlugin</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_spice_xfer_widgets.html">_RemminaPluginSpiceXferWidgets</a>   </td><td valign="top"><a class="el" href="struct___remmina_ssh_search.html">_RemminaSshSearch</a>   </td><td rowspan="2" valign="bottom"><a name="letter_p"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  p  </div></td></tr></table> </td><td valign="top"><a class="el" href="structrf__context.html">rf_context</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_file_editor.html">_RemminaFileEditor</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_ssh_data.html">_RemminaPluginSshData</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_s_h_shell.html">_RemminaSSHShell</a>   </td><td valign="top"><a class="el" href="structrf__glyph.html">rf_glyph</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_file_editor_class.html">_RemminaFileEditorClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_coordinates.html">_RemminaPluginVncCoordinates</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a>   </td><td valign="top"><a class="el" href="struct_p_con___spinner.html">PCon_Spinner</a>   </td><td valign="top"><a class="el" href="structrf__pointer.html">rf_pointer</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_file_plugin.html">_RemminaFilePlugin</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_cuttext_param.html">_RemminaPluginVncCuttextParam</a>   </td><td valign="top"><a class="el" href="struct___remmina_string_list.html">_RemminaStringList</a>   </td><td valign="top"><a class="el" href="struct_profiles_data.html">ProfilesData</a>   </td><td valign="top"><a class="el" href="structrs_sched_data.html">rsSchedData</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct___remmina_f_t_p_client.html">_RemminaFTPClient</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_data.html">_RemminaPluginVncData</a>   </td><td valign="top"><a class="el" href="struct___remmina_string_list_priv.html">_RemminaStringListPriv</a>   </td><td valign="top"><a class="el" href="struct_py_g_boxed.html">PyGBoxed</a>   </td><td></td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_file.html">_RemminaFile</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_ssh_data.html">_RemminaPluginSshData</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_s_h_shell.html">_RemminaSSHShell</a>   </td><td valign="top"><a class="el" href="structrf__glyph.html">rf_glyph</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_file_editor.html">_RemminaFileEditor</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_coordinates.html">_RemminaPluginVncCoordinates</a>   </td><td valign="top"><a class="el" href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a>   </td><td valign="top"><a class="el" href="struct_p_con___spinner.html">PCon_Spinner</a>   </td><td valign="top"><a class="el" href="structrf__pointer.html">rf_pointer</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_file_editor_class.html">_RemminaFileEditorClass</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_cuttext_param.html">_RemminaPluginVncCuttextParam</a>   </td><td valign="top"><a class="el" href="struct___remmina_string_list.html">_RemminaStringList</a>   </td><td valign="top"><a class="el" href="struct_profiles_data.html">ProfilesData</a>   </td><td valign="top"><a class="el" href="structrs_sched_data.html">rsSchedData</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_file_plugin.html">_RemminaFilePlugin</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_data.html">_RemminaPluginVncData</a>   </td><td valign="top"><a class="el" href="struct___remmina_string_list_priv.html">_RemminaStringListPriv</a>   </td><td valign="top"><a class="el" href="struct_py_g_boxed.html">PyGBoxed</a>   </td><td></td></tr> +<tr><td valign="top"><a class="el" href="struct___remmina_f_t_p_client.html">_RemminaFTPClient</a>   </td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_event.html">_RemminaPluginVncEvent</a>   </td><td valign="top"><a class="el" href="struct___remmina_tool_plugin.html">_RemminaToolPlugin</a>   </td><td valign="top"><a class="el" href="struct_py_generic.html">PyGeneric</a>   </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> | <a class="qindex" href="#letter_d">d</a> | <a class="qindex" href="#letter_i">i</a> | <a class="qindex" href="#letter_l">l</a> | <a class="qindex" href="#letter_m">m</a> | <a class="qindex" href="#letter_o">o</a> | <a class="qindex" href="#letter_p">p</a> | <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"> </td></tr> <tr class="memitem:remmina__widget__pool_8h"><td class="memItemLeft" align="right" valign="top">file  </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"> </td></tr> -<tr class="memitem:rmnews_8c"><td class="memItemLeft" align="right" valign="top">file  </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"> </td></tr> -<tr class="memitem:rmnews_8h"><td class="memItemLeft" align="right" valign="top">file  </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"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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&#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"> </td></tr> <tr class="memitem:ab4a9a67c5372ff07b71d0558679ab7ae"><td class="memItemLeft" align="right" valign="top">gboolean </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"> </td></tr> -<tr class="memitem:a0e2a887037f1ac58aa26fae55187601a"><td class="memItemLeft" align="right" valign="top">gboolean </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"> </td></tr> <tr class="memitem:a86d25bcf3c47f758f813a175a18b6ff1"><td class="memItemLeft" align="right" valign="top">gboolean </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"> </td></tr> <tr class="memitem:ae0e3cdfa06abe7e29f987421869713e1"><td class="memItemLeft" align="right" valign="top">gboolean </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">◆ </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">◆ </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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define G_LOG_USE_STRUCTURED</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef G_LOG_DOMAIN</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define G_LOG_DOMAIN ((gchar*)"remmina")</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <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> <span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <gdk/gdkx.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <gdk/gdkwayland.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <gio/gio.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="remmina_8h.html">remmina.h</a>"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="remmina__exec_8h.html">remmina_exec.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__main_8h.html">remmina_main.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__native_8h.html">remmina_plugin_native.h</a>"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#ifdef WITH_PYTHONLIBS</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "remmina_plugin_python.h"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#include "<a class="code" href="remmina__sftp__plugin_8h.html">remmina_sftp_plugin.h</a>"</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#include "<a class="code" href="remmina__ssh__plugin_8h.html">remmina_ssh_plugin.h</a>"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#include "<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>"</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#include "<a class="code" href="rmnews_8h.html">rmnews.h</a>"</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#ifdef HAVE_ERRNO_H</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#include <pthread.h></span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#include <gcrypt.h></span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"># if GCRYPT_VERSION_NUMBER < 0x010600</span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="remmina_8c.html#a3d760300165528383af409d2964d79d2"> 76</a></span> <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> <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> <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> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"># if GCRYPT_VERSION_NUMBER < 0x010600</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104"> 82</a></span> <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> <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> <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> </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="remmina_8h.html#a806213b48f3332bbb4bb771ddde38ab1"> 86</a></span> 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> 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> 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> 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> 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> gboolean <a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5"> 93</a></span> <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> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <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>  { <span class="stringliteral">"about"</span>, <span class="charliteral">'a'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Show \'About\'"</span>), NULL },</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <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>  { <span class="stringliteral">"connect"</span>, <span class="charliteral">'c'</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"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)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"FILE"</span>) },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <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>  { G_OPTION_REMAINING, <span class="charliteral">'\0'</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Connect to a desktop described in a file (.remmina or a filetype supported by a plugin)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"FILE"</span>) },</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <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>  { <span class="stringliteral">"edit"</span>, <span class="charliteral">'e'</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Edit desktop connection described in file (.remmina or a filetype supported by plugin)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"FILE"</span>) },</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  { <span class="stringliteral">"help"</span>, <span class="charliteral">'?'</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>  <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>  { <span class="stringliteral">"kiosk"</span>, <span class="charliteral">'k'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Start in kiosk mode"</span>), NULL },</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <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>  { <span class="stringliteral">"new"</span>, <span class="charliteral">'n'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Create new connection profile"</span>), NULL },</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <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>  { <span class="stringliteral">"pref"</span>, <span class="charliteral">'p'</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Show preferences"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"TABINDEX"</span>) },</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#if 0</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">/* This option was used mainly for telepathy, let'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>  <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>  <span class="comment">//{ "plugin", 'x', 0, G_OPTION_ARG_STRING, NULL, N_("Run a plugin"), N_("PLUGIN") },</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <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>  { <span class="stringliteral">"quit"</span>, <span class="charliteral">'q'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Quit"</span>), NULL },</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <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>  { <span class="stringliteral">"server"</span>, <span class="charliteral">'s'</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Use default server name (for --new)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"SERVER"</span>) },</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <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>  { <span class="stringliteral">"protocol"</span>, <span class="charliteral">'t'</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Use default protocol (for --new)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"PROTOCOL"</span>) },</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <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>  { <span class="stringliteral">"icon"</span>, <span class="charliteral">'i'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Start in tray"</span>), NULL },</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <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>  { <span class="stringliteral">"version"</span>, <span class="charliteral">'v'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Show the application version"</span>), NULL },</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <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>  { <span class="stringliteral">"full-version"</span>, <span class="charliteral">'V'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Show version of the application and its plugins"</span>), NULL },</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <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>  { <span class="stringliteral">"update-profile"</span>, 0, 0, G_OPTION_ARG_FILENAME, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Modify connection profile (requires --set-option)"</span>), NULL },</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <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>  { <span class="stringliteral">"set-option"</span>, 0, 0, G_OPTION_ARG_STRING_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Set one or more profile settings, to be used with --update-profile"</span>), NULL },</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  { <span class="stringliteral">"encrypt-password"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Encrypt a password"</span>), NULL },</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  { <span class="stringliteral">"disable-news"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Disable news notification"</span>), NULL },</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  { <span class="stringliteral">"disable-toolbar"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Disable toolbar"</span>), NULL },</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  { <span class="stringliteral">"enable-fullscreen"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Enable fullscreen"</span>), NULL },</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  { <span class="stringliteral">"enable-extra-hardening"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Enable extra hardening (disable closing confirmation, disable unsafe shortcut keys, hide tabs, hide search bar)"</span>), NULL },</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  { <span class="stringliteral">"no-tray-icon"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Disable tray icon"</span>), NULL },</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  { NULL }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> };</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#ifdef WITH_LIBGCRYPT</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <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> <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> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">/* be lazy right now */</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span> (e == GPG_ERR_NO_ERROR)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> EINVAL;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <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> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914"> 152</a></span> <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> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  gint status = 0;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  gboolean executed = FALSE;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  GVariantDict *opts;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  gchar *str;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">const</span> gchar **files;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">const</span> gchar **remaining_args;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  gchar *protocol;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  gchar *server;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  opts = g_application_command_line_get_options_dict(cmdline);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"disable-news"</span>, NULL)) {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a">disablenews</a> = TRUE;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"disable-toolbar"</span>, NULL)) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a> = TRUE;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"enable-fullscreen"</span>, NULL)) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a> = TRUE;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"enable-extra-hardening"</span>, NULL)) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a> = TRUE;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"no-tray-icon"</span>, NULL)) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a> = TRUE;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <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> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"quit"</span>, NULL)) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  status = 1;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"about"</span>, NULL)) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"connect"</span>, <span class="stringliteral">"^aay"</span>, &files)) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span> (files)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">for</span> (gint i = 0; files[i]; i++) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  g_debug (<span class="stringliteral">"Connecting to: %s"</span>, files[i]);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <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>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  executed = TRUE;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, G_OPTION_REMAINING, <span class="stringliteral">"^a&ay"</span>, &remaining_args)) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <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>  g_free(remaining_args);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  executed = TRUE;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"edit"</span>, <span class="stringliteral">"^aay"</span>, &files)) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (files)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">for</span> (gint i = 0; files[i]; i++) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  g_debug (<span class="stringliteral">"Editing file: %s"</span>, files[i]);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <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>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">//remmina_exec_command(REMMINA_COMMAND_EDIT, str);</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">//g_free(str);</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  executed = TRUE;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"kiosk"</span>, NULL)) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> = TRUE;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"new"</span>, NULL)) {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">if</span> (!g_variant_dict_lookup(opts, <span class="stringliteral">"protocol"</span>, <span class="stringliteral">"&s"</span>, &protocol))</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  protocol = NULL;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"server"</span>, <span class="stringliteral">"&s"</span>, &server))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  str = g_strdup_printf(<span class="stringliteral">"%s,%s"</span>, protocol, server);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  str = g_strdup(protocol);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <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>  g_free(str);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  executed = TRUE;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"pref"</span>, <span class="stringliteral">"&s"</span>, &str)) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"plugin"</span>, <span class="stringliteral">"&s"</span>, &str)) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"icon"</span>, NULL)) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"encrypt-password"</span>, NULL)) {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  status = 1;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span> (!executed)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <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> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a"> 279</a></span> <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> {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <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> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  g_set_application_name(<span class="stringliteral">"Remmina"</span>);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  gtk_window_set_default_icon_name(REMMINA_APP_ID);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <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> <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>  gdk_set_program_class(REMMINA_APP_ID);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  REMMINA_RUNTIME_DATADIR G_DIR_SEPARATOR_S <span class="stringliteral">"icons"</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  g_application_hold(app);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="rmnews_8c.html#a8433da15acb3138804b4816189e8fc3a">rmnews_schedule</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <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> <span class="comment"> * something is missing */</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  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>  <span class="keywordflow">if</span> (!secret_plugin)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  g_print(<span class="stringliteral">"Warning: Remmina is running without a secret plugin. Passwords will be saved in a less secure way.\n"</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">if</span> (!secret_plugin-><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>  g_print(<span class="stringliteral">"Warning: Remmina is running with a secrecy plugin, but it cannot connect to a secrecy service.\n"</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <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> }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="remmina_8c.html#a9e8319f901232eb5fada98335217979c"> 315</a></span> <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> {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordtype">int</span> status = -1;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  gchar *str;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  gchar **settings;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <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> <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> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"version"</span>, NULL)) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <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>  status = 0;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"full-version"</span>, NULL)) {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <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>  status = 0;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"update-profile"</span>, <span class="stringliteral">"^&ay"</span>, &str)) { <span class="comment">/* ^&ay no need to free */</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"set-option"</span>, <span class="stringliteral">"^a&s"</span>, &settings)) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">if</span> (settings != NULL) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  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>  g_free(settings);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  status = 1;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  status = 1;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  g_print(<span class="stringliteral">"Error: --update-profile requires --set-option\n"</span>);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <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>  <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="remmina_8c.html#a0ddf1224851353fc92bfbff6f499fa97"> 354</a></span> <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> {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  GtkApplication *app;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keyword">const</span> gchar *app_id;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordtype">int</span> status;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  g_unsetenv(<span class="stringliteral">"GDK_CORE_DEVICE_EVENTS"</span>);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">// Checking for environment variable "G_MESSAGES_DEBUG"</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <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>  <span class="comment">// more debugging info.</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">if</span>(!getenv(<span class="stringliteral">"G_MESSAGES_DEBUG"</span>)) {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">/* TRANSLATORS:</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <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> <span class="comment"> * to log more verbose statements.</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="comment"> */</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  g_message(_(<span class="stringliteral">"Remmina does not log all output statements. "</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="stringliteral">"Turn on more verbose output by using "</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="stringliteral">"\"G_MESSAGES_DEBUG=all\" as an environment variable.\n"</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="stringliteral">"More info available on the Remmina wiki at:\n"</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="stringliteral">"https://gitlab.com/Remmina/Remmina/-/wikis/Usage/Remmina-debugging"</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  ));</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <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> <span class="comment"> * will not work. See GTK bug 790031 */</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <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>  gdk_set_allowed_backends(<span class="stringliteral">"wayland,x11,broadway,quartz,mir"</span>);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  gdk_set_allowed_backends(<span class="stringliteral">"x11,broadway,quartz,mir"</span>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="remmina__masterthread__exec_8c.html#a4a595ce198f8adda31fe11348b0f734e">remmina_masterthread_exec_save_main_thread_id</a>();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">"UTF-8"</span>);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  textdomain(GETTEXT_PACKAGE);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor"># if GCRYPT_VERSION_NUMBER < 0x010600</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  gcry_error_t e;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <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>  <span class="keywordflow">if</span> ((e = gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread)) != GPG_ERR_NO_ERROR)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <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>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <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>  gcry_check_version(NULL);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  gcry_control(GCRYCTL_DISABLE_SECMEM, 0);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <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> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <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>  <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>  <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> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <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> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  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>  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> <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>  g_set_prgname(app_id);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  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> <span class="preprocessor">#if GLIB_CHECK_VERSION(2,56,0)</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  gchar *summary = g_strdup_printf (<span class="stringliteral">"%s %s"</span>, app_id, VERSION);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  g_application_set_option_context_summary (G_APPLICATION(app), summary);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  g_free(summary);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <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>  g_application_set_option_context_parameter_string (G_APPLICATION(app), _(<span class="stringliteral">"- or protocol://username:encryptedpassword@host:port"</span>));</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <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>  g_application_set_option_context_description (G_APPLICATION(app),</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  _(<span class="stringliteral">"Examples:\n"</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="stringliteral">"To connect using an existing connection profile, use:\n"</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="stringliteral">"\tremmina -c FILE.remmina\n"</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="stringliteral">"To quick connect using a URI:\n"</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="stringliteral">"\tremmina -c rdp://username@server\n"</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="stringliteral">"\tremmina -c rdp://domain\\\\username@server\n"</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="stringliteral">"\tremmina -c vnc://username@server\n"</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="stringliteral">"\tremmina -c vnc://server?VncUsername=username\n"</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="stringliteral">"\tremmina -c ssh://user@server\n"</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="stringliteral">"\tremmina -c spice://server\n"</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="stringliteral">"To quick connect using a URI along with an encrypted password:\n"</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="stringliteral">"\tremmina -c rdp://username:encrypted-password@server\n"</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="stringliteral">"\tremmina -c vnc://username:encrypted-password@server\n"</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="stringliteral">"\tremmina -c vnc://server?VncUsername=username\\&VncPassword=encrypted-password\n"</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="stringliteral">"To encrypt a password for use with a URI:\n"</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="stringliteral">"\tremmina --encrypt-password\n"</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="stringliteral">"To update username and password and set a different resolution mode of a Remmina connection profile, use:\n"</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="stringliteral">"\techo \"username\\napassword\" | remmina --update-profile /PATH/TO/FOO.remmina --set-option username --set-option resolution_mode=2 --set-option password\n"</span>));</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  g_signal_connect(app, <span class="stringliteral">"startup"</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>  g_signal_connect(app, <span class="stringliteral">"command-line"</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>  g_signal_connect(app, <span class="stringliteral">"handle-local-options"</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> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  g_application_set_inactivity_timeout(G_APPLICATION(app), 10000);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  status = g_application_run(G_APPLICATION(app), argc, argv);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  g_object_unref(app);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> </div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> }</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define G_LOG_USE_STRUCTURED</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef G_LOG_DOMAIN</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define G_LOG_DOMAIN ((gchar*)"remmina")</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <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> <span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <gdk/gdkx.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <gdk/gdkwayland.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <gio/gio.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="remmina_8h.html">remmina.h</a>"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="remmina__exec_8h.html">remmina_exec.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__main_8h.html">remmina_main.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__native_8h.html">remmina_plugin_native.h</a>"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#ifdef WITH_PYTHONLIBS</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "remmina_plugin_python.h"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#include "<a class="code" href="remmina__sftp__plugin_8h.html">remmina_sftp_plugin.h</a>"</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#include "<a class="code" href="remmina__ssh__plugin_8h.html">remmina_ssh_plugin.h</a>"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#include "<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>"</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#ifdef HAVE_ERRNO_H</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#include <pthread.h></span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#include <gcrypt.h></span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"># if GCRYPT_VERSION_NUMBER < 0x010600</span></div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="remmina_8c.html#a3d760300165528383af409d2964d79d2"> 75</a></span> <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> <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> <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> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"># if GCRYPT_VERSION_NUMBER < 0x010600</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104"> 81</a></span> <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> <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> <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> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="remmina_8h.html#a806213b48f3332bbb4bb771ddde38ab1"> 85</a></span> 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> 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> 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> 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> gboolean <a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5"> 91</a></span> <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> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <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>  { <span class="stringliteral">"about"</span>, <span class="charliteral">'a'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Show \'About\'"</span>), NULL },</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <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>  { <span class="stringliteral">"connect"</span>, <span class="charliteral">'c'</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"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)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"FILE"</span>) },</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <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>  { G_OPTION_REMAINING, <span class="charliteral">'\0'</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Connect to a desktop described in a file (.remmina or a filetype supported by a plugin)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"FILE"</span>) },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <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>  { <span class="stringliteral">"edit"</span>, <span class="charliteral">'e'</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Edit desktop connection described in file (.remmina or a filetype supported by plugin)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"FILE"</span>) },</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  { <span class="stringliteral">"help"</span>, <span class="charliteral">'?'</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>  <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>  { <span class="stringliteral">"kiosk"</span>, <span class="charliteral">'k'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Start in kiosk mode"</span>), NULL },</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <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>  { <span class="stringliteral">"new"</span>, <span class="charliteral">'n'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Create new connection profile"</span>), NULL },</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <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>  { <span class="stringliteral">"pref"</span>, <span class="charliteral">'p'</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Show preferences"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"TABINDEX"</span>) },</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#if 0</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">/* This option was used mainly for telepathy, let'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>  <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>  <span class="comment">//{ "plugin", 'x', 0, G_OPTION_ARG_STRING, NULL, N_("Run a plugin"), N_("PLUGIN") },</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <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>  { <span class="stringliteral">"quit"</span>, <span class="charliteral">'q'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Quit"</span>), NULL },</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <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>  { <span class="stringliteral">"server"</span>, <span class="charliteral">'s'</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Use default server name (for --new)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"SERVER"</span>) },</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <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>  { <span class="stringliteral">"protocol"</span>, <span class="charliteral">'t'</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Use default protocol (for --new)"</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"PROTOCOL"</span>) },</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <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>  { <span class="stringliteral">"icon"</span>, <span class="charliteral">'i'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Start in tray"</span>), NULL },</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <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>  { <span class="stringliteral">"version"</span>, <span class="charliteral">'v'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Show the application version"</span>), NULL },</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <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>  { <span class="stringliteral">"full-version"</span>, <span class="charliteral">'V'</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Show version of the application and its plugins"</span>), NULL },</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <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>  { <span class="stringliteral">"update-profile"</span>, 0, 0, G_OPTION_ARG_FILENAME, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Modify connection profile (requires --set-option)"</span>), NULL },</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <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>  { <span class="stringliteral">"set-option"</span>, 0, 0, G_OPTION_ARG_STRING_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Set one or more profile settings, to be used with --update-profile"</span>), NULL },</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  { <span class="stringliteral">"encrypt-password"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Encrypt a password"</span>), NULL },</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  { <span class="stringliteral">"disable-toolbar"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Disable toolbar"</span>), NULL },</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  { <span class="stringliteral">"enable-fullscreen"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Enable fullscreen"</span>), NULL },</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  { <span class="stringliteral">"enable-extra-hardening"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Enable extra hardening (disable closing confirmation, disable unsafe shortcut keys, hide tabs, hide search bar)"</span>), NULL },</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  { <span class="stringliteral">"no-tray-icon"</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Disable tray icon"</span>), NULL },</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  { NULL }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> };</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#ifdef WITH_LIBGCRYPT</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <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> <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> {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">/* be lazy right now */</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (e == GPG_ERR_NO_ERROR)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> EINVAL;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <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> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914"> 149</a></span> <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> {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  gint status = 0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  gboolean executed = FALSE;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  GVariantDict *opts;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  gchar *str;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">const</span> gchar **files;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">const</span> gchar **remaining_args;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  gchar *protocol;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  gchar *server;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  opts = g_application_command_line_get_options_dict(cmdline);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"disable-toolbar"</span>, NULL)) {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a> = TRUE;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"enable-fullscreen"</span>, NULL)) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a> = TRUE;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"enable-extra-hardening"</span>, NULL)) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a> = TRUE;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"no-tray-icon"</span>, NULL)) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a> = TRUE;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <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> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"quit"</span>, NULL)) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  status = 1;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"about"</span>, NULL)) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"connect"</span>, <span class="stringliteral">"^aay"</span>, &files)) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> (files)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">for</span> (gint i = 0; files[i]; i++) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  g_debug (<span class="stringliteral">"Connecting to: %s"</span>, files[i]);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <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>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  executed = TRUE;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, G_OPTION_REMAINING, <span class="stringliteral">"^a&ay"</span>, &remaining_args)) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <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>  g_free(remaining_args);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  executed = TRUE;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"edit"</span>, <span class="stringliteral">"^aay"</span>, &files)) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span> (files)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">for</span> (gint i = 0; files[i]; i++) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  g_debug (<span class="stringliteral">"Editing file: %s"</span>, files[i]);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <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>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">//remmina_exec_command(REMMINA_COMMAND_EDIT, str);</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">//g_free(str);</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  executed = TRUE;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"kiosk"</span>, NULL)) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> = TRUE;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"new"</span>, NULL)) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (!g_variant_dict_lookup(opts, <span class="stringliteral">"protocol"</span>, <span class="stringliteral">"&s"</span>, &protocol))</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  protocol = NULL;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"server"</span>, <span class="stringliteral">"&s"</span>, &server))</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  str = g_strdup_printf(<span class="stringliteral">"%s,%s"</span>, protocol, server);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  str = g_strdup(protocol);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <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>  g_free(str);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  executed = TRUE;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"pref"</span>, <span class="stringliteral">"&s"</span>, &str)) {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"plugin"</span>, <span class="stringliteral">"&s"</span>, &str)) {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"icon"</span>, NULL)) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"encrypt-password"</span>, NULL)) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <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>  executed = TRUE;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  status = 1;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span> (!executed)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <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> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a"> 272</a></span> <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> {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <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> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  g_set_application_name(<span class="stringliteral">"Remmina"</span>);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  gtk_window_set_default_icon_name(REMMINA_APP_ID);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <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> <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>  gdk_set_program_class(REMMINA_APP_ID);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(),</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  REMMINA_RUNTIME_DATADIR G_DIR_SEPARATOR_S <span class="stringliteral">"icons"</span>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  g_application_hold(app);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <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> <span class="comment"> * something is missing */</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  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>  <span class="keywordflow">if</span> (!secret_plugin)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  g_print(<span class="stringliteral">"Warning: Remmina is running without a secret plugin. Passwords will be saved in a less secure way.\n"</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">if</span> (!secret_plugin-><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>  g_print(<span class="stringliteral">"Warning: Remmina is running with a secrecy plugin, but it cannot connect to a secrecy service.\n"</span>);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <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> }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="remmina_8c.html#a9e8319f901232eb5fada98335217979c"> 306</a></span> <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> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordtype">int</span> status = -1;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  gchar *str;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  gchar **settings;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <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> <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> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"version"</span>, NULL)) {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <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>  status = 0;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">"full-version"</span>, NULL)) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <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>  status = 0;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"update-profile"</span>, <span class="stringliteral">"^&ay"</span>, &str)) { <span class="comment">/* ^&ay no need to free */</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">"set-option"</span>, <span class="stringliteral">"^a&s"</span>, &settings)) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span> (settings != NULL) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  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>  g_free(settings);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  status = 1;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  status = 1;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  g_print(<span class="stringliteral">"Error: --update-profile requires --set-option\n"</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <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>  <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="remmina_8c.html#a0ddf1224851353fc92bfbff6f499fa97"> 345</a></span> <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> {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  GtkApplication *app;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keyword">const</span> gchar *app_id;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordtype">int</span> status;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  g_unsetenv(<span class="stringliteral">"GDK_CORE_DEVICE_EVENTS"</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="comment">// Checking for environment variable "G_MESSAGES_DEBUG"</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <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>  <span class="comment">// more debugging info.</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">if</span>(!getenv(<span class="stringliteral">"G_MESSAGES_DEBUG"</span>)) {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">/* TRANSLATORS:</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <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> <span class="comment"> * to log more verbose statements.</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="comment"> */</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  g_message(_(<span class="stringliteral">"Remmina does not log all output statements. "</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="stringliteral">"Turn on more verbose output by using "</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="stringliteral">"\"G_MESSAGES_DEBUG=all\" as an environment variable.\n"</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="stringliteral">"More info available on the Remmina wiki at:\n"</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="stringliteral">"https://gitlab.com/Remmina/Remmina/-/wikis/Usage/Remmina-debugging"</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  ));</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <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> <span class="comment"> * will not work. See GTK bug 790031 */</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <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>  gdk_set_allowed_backends(<span class="stringliteral">"wayland,x11,broadway,quartz,mir"</span>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  gdk_set_allowed_backends(<span class="stringliteral">"x11,broadway,quartz,mir"</span>);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="remmina__masterthread__exec_8c.html#a4a595ce198f8adda31fe11348b0f734e">remmina_masterthread_exec_save_main_thread_id</a>();</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">"UTF-8"</span>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  textdomain(GETTEXT_PACKAGE);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="preprocessor"># if GCRYPT_VERSION_NUMBER < 0x010600</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  gcry_error_t e;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <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>  <span class="keywordflow">if</span> ((e = gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread)) != GPG_ERR_NO_ERROR)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <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>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <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>  gcry_check_version(NULL);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  gcry_control(GCRYCTL_DISABLE_SECMEM, 0);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <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> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <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>  <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>  <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> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <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> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  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>  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> <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>  g_set_prgname(app_id);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  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> <span class="preprocessor">#if GLIB_CHECK_VERSION(2,56,0)</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  gchar *summary = g_strdup_printf (<span class="stringliteral">"%s %s"</span>, app_id, VERSION);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  g_application_set_option_context_summary (G_APPLICATION(app), summary);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  g_free(summary);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <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>  g_application_set_option_context_parameter_string (G_APPLICATION(app), _(<span class="stringliteral">"- or protocol://username:encryptedpassword@host:port"</span>));</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <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>  g_application_set_option_context_description (G_APPLICATION(app),</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  _(<span class="stringliteral">"Examples:\n"</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="stringliteral">"To connect using an existing connection profile, use:\n"</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="stringliteral">"\tremmina -c FILE.remmina\n"</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="stringliteral">"To quick connect using a URI:\n"</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="stringliteral">"\tremmina -c rdp://username@server\n"</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="stringliteral">"\tremmina -c rdp://domain\\\\username@server\n"</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="stringliteral">"\tremmina -c vnc://username@server\n"</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="stringliteral">"\tremmina -c vnc://server?VncUsername=username\n"</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="stringliteral">"\tremmina -c ssh://user@server\n"</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="stringliteral">"\tremmina -c spice://server\n"</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="stringliteral">"To quick connect using a URI along with an encrypted password:\n"</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="stringliteral">"\tremmina -c rdp://username:encrypted-password@server\n"</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="stringliteral">"\tremmina -c vnc://username:encrypted-password@server\n"</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="stringliteral">"\tremmina -c vnc://server?VncUsername=username\\&VncPassword=encrypted-password\n"</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="stringliteral">"To encrypt a password for use with a URI:\n"</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="stringliteral">"\tremmina --encrypt-password\n"</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="stringliteral">"To update username and password and set a different resolution mode of a Remmina connection profile, use:\n"</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="stringliteral">"\techo \"username\\napassword\" | remmina --update-profile /PATH/TO/FOO.remmina --set-option username --set-option resolution_mode=2 --set-option password\n"</span>));</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  g_signal_connect(app, <span class="stringliteral">"startup"</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>  g_signal_connect(app, <span class="stringliteral">"command-line"</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>  g_signal_connect(app, <span class="stringliteral">"handle-local-options"</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> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  g_application_set_inactivity_timeout(G_APPLICATION(app), 10000);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  status = g_application_run(G_APPLICATION(app), argc, argv);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  g_object_unref(app);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> }</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_("Unable to connect to VNC server")</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> G_BEGIN_DECLS</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <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> 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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> G_BEGIN_DECLS</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <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> 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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2010 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "buildflags.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="remmina_8h.html">remmina.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "<a class="code" href="remmina__main_8h.html">remmina_main.h</a>"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "<a class="code" href="remmina__unlock_8h.html">remmina_unlock.h</a>"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref__dialog_8h.html">remmina_pref_dialog.h</a>"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "<a class="code" href="remmina__file_8h.html">remmina_file.h</a>"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__editor_8h.html">remmina_file_editor.h</a>"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="rcw_8h.html">rcw.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__about_8h.html">remmina_about.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__exec_8h.html">remmina_exec.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include "<a class="code" href="remmina__crypt_8h.html">remmina_crypt.h</a>"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"># define ISSNAP "- SNAP Build -"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"># define ISSNAP "-"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#a0ffd51ed283da4640c920e75e89e694a"> 67</a></span> <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> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <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> <span class="comment"> * it a "delete-event" signal. Simply destroying it will not close</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"> * all network connections */</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span> (REMMINA_IS_CONNECTION_WINDOW(widget))</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <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>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#a93f5633a6348dc1df1a5723b3054a2a3"> 78</a></span> <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> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <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>  <span class="stringliteral">"Build configuration: "</span> BUILD_CONFIG <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="stringliteral">"Build type: "</span> BUILD_TYPE <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="stringliteral">"CFLAGS: "</span> CFLAGS <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="stringliteral">"Compiler: "</span> COMPILER_ID <span class="stringliteral">", "</span> COMPILER_VERSION <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="stringliteral">"Target architecture: "</span> TARGET_ARCH <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> build_config;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="remmina__exec_8h.html#adbaf105af1039e44ba503a8d7174535f"> 89</a></span> <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> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">/* Save main window state/position */</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <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> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">/* Delete all widgets, main window not included */</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <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> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#ifdef HAVE_LIBAPPINDICATOR</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">/* Remove systray menu */</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">/* close/destroy main window struct and window */</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <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> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">/* Exit from Remmina */</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  g_application_quit(g_application_get_default());</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#aacc2a2ffd19e56fcb3e4b025d180ab8f"> 111</a></span> <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> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <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> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span> (REMMINA_IS_CONNECTION_WINDOW(widget)) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  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>  <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>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="remmina__exec_8h.html#aaa67e07e2426828d7e7b9b30d2038d31"> 123</a></span> <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> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <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> <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> <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> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">switch</span> (why) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <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>  <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>  <span class="keywordflow">if</span> (<a class="code" href="remmina__widget__pool_8c.html#a9cbb5b8d01a6d44ba7b46434467c02f8">remmina_widget_pool_count</a>() < 1 && !<a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>() && !<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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <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>  <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>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <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>  <span class="comment">// Main window has been deleted</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__widget__pool_8c.html#a9cbb5b8d01a6d44ba7b46434467c02f8">remmina_widget_pool_count</a>() < 1 && !<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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <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>  <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>  <span class="comment">// quit means QUIT.</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#aca2d356a03e1aac7b716b408183aa305"> 155</a></span> <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> {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">char</span> c;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">while</span>((c = *s) != 0 && c != <span class="charliteral">'\r'</span> && c != <span class="charliteral">'\n'</span>)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  s++;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  *s = 0;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <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> <span class="comment"> * return a status code for exit()</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <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> <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> {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  gchar **tk, *value = NULL;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">char</span> *line = NULL;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordtype">size_t</span> len = 0;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  ssize_t read;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  gboolean abort = FALSE;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  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> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span> (!remminafile) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  g_print(<span class="stringliteral">"Unable to open profile file %s\n"</span>, profilefilename);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">for</span>(i = 0; settings[i] != NULL && !abort; i++) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span> (strlen(settings[i]) > 0) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  tk = g_strsplit(settings[i], <span class="stringliteral">"="</span>, 2);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (tk[1] == NULL) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  read = getline(&line, &len, stdin);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> (read > 0) {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <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>  value = line;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  g_print(<span class="stringliteral">"Error: an extra line of standard input is needed\n"</span>);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  abort = TRUE;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  value = tk[1];</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <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>  g_strfreev(tk);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (line) free(line);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <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> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#ae3299f9cf136cb759dc052ee799b1f0d"> 210</a></span> <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> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">"enable-autostart"</span>, FALSE)) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  REMMINA_DEBUG (<span class="stringliteral">"Profile %s is set to autostart"</span>, remminafile->filename);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a>(remminafile->filename);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#ad4535dd84752c2943b8fb996ffcbcb58"> 221</a></span> <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> {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  gchar *protocol;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  gchar **protocolserver;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  gchar *server;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  gchar **userat;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  gchar **userpass;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  gchar *user;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  gchar *password;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  gchar **domainuser;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  gchar **serverquery;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  gchar **querystring;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  gchar **querystringpart;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  gchar **querystringpartkv;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  gchar *value;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  gchar *temp;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  GError *error = NULL;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  protocol = NULL;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">"rdp://"</span>, data, 6) == 0 || strncmp(<span class="stringliteral">"RDP://"</span>, data, 6) == 0)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  protocol = <span class="stringliteral">"RDP"</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">"vnc://"</span>, data, 6) == 0 || strncmp(<span class="stringliteral">"VNC://"</span>, data, 6) == 0)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  protocol = <span class="stringliteral">"VNC"</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">"ssh://"</span>, data, 6) == 0 || strncmp(<span class="stringliteral">"SSH://"</span>, data, 6) == 0)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  protocol = <span class="stringliteral">"SSH"</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">"spice://"</span>, data, 8) == 0 || strncmp(<span class="stringliteral">"SPICE://"</span>, data, 8) == 0)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  protocol = <span class="stringliteral">"SPICE"</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">"file://"</span>, data, 6) == 0) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  gchar *filename = g_filename_from_uri (data, NULL, &error);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span> (filename != NULL) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <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>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  REMMINA_DEBUG (<span class="stringliteral">"Opening URI %s failed with error %s"</span>, data, error->message);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  g_error_free(error);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> (protocol == NULL) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  protocolserver = g_strsplit(data, <span class="stringliteral">"://"</span>, 2);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  server = g_strdup(protocolserver[1]);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="comment">// Support loading .remmina files using handler</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">if</span> ((temp = strrchr(server, <span class="charliteral">'.'</span>)) != NULL && g_strcmp0(temp + 1, <span class="stringliteral">"remmina"</span>) == 0) {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  g_strfreev(protocolserver);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  temp = g_uri_unescape_string(server, NULL);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  g_free(server);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  server = temp;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  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> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// Check for username@server</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span> ((strcmp(protocol, <span class="stringliteral">"RDP"</span>) == 0 || strcmp(protocol, <span class="stringliteral">"VNC"</span>) == 0 || strcmp(protocol, <span class="stringliteral">"SSH"</span>) == 0) && strstr(server, <span class="stringliteral">"@"</span>) != NULL) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  userat = g_strsplit(server, <span class="stringliteral">"@"</span>, 2);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// Check for username:password</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (strstr(userat[0], <span class="stringliteral">":"</span>) != NULL) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  userpass = g_strsplit(userat[0], <span class="stringliteral">":"</span>, 2);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  user = g_uri_unescape_string(userpass[0], NULL);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  password = g_uri_unescape_string(userpass[1], NULL);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <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>  temp = password != NULL && strrchr(password, <span class="charliteral">'='</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>  <span class="keywordflow">if</span> (temp != NULL) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  g_free(password);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  password = temp;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>, password);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  g_free(password);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  g_strfreev(userpass);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  user = g_uri_unescape_string(userat[0], NULL);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// Check for domain\user for RDP connections</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (strcmp(protocol, <span class="stringliteral">"RDP"</span>) == 0 && strstr(user, <span class="stringliteral">"\\"</span>) != NULL) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  domainuser = g_strsplit(user, <span class="stringliteral">"\\"</span>, 2);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"domain"</span>, domainuser[0]);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  g_free(user);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  user = g_strdup(domainuser[1]);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"username"</span>, user);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  g_free(user);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  g_free(server);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  server = g_strdup(userat[1]);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  g_strfreev(userat);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span> (strcmp(protocol, <span class="stringliteral">"VNC"</span>) == 0 && strstr(server, <span class="stringliteral">"?"</span>) != NULL) {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="comment">// https://tools.ietf.org/html/rfc7869</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <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> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">// Check for query string parameters</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  serverquery = g_strsplit(server, <span class="stringliteral">"?"</span>, 2);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  querystring = g_strsplit(serverquery[1], <span class="stringliteral">"&"</span>, -1);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">for</span> (querystringpart = querystring; *querystringpart; querystringpart++) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">if</span> (strstr(*querystringpart, <span class="stringliteral">"="</span>) == NULL)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  querystringpartkv = g_strsplit(*querystringpart, <span class="stringliteral">"="</span>, 2);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  value = g_uri_unescape_string(querystringpartkv[1], NULL);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">if</span> (strcmp(querystringpartkv[0], <span class="stringliteral">"VncPassword"</span>) == 0) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <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>  temp = value != NULL && strrchr(value, <span class="charliteral">'='</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>  <span class="keywordflow">if</span> (temp != NULL) {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  g_free(value);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  value = temp;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>, value);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcmp(querystringpartkv[0], <span class="stringliteral">"VncUsername"</span>) == 0) {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"username"</span>, value);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcmp(querystringpartkv[0], <span class="stringliteral">"ColorLevel"</span>) == 0) {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"colordepth"</span>, value);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  g_free(value);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  g_strfreev(querystringpartkv);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  g_strfreev(querystring);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  g_free(server);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  server = g_strdup(serverquery[0]);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  g_strfreev(serverquery);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="comment">// Unescape server</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  temp = g_uri_unescape_string(server, NULL);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  g_free(server);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  server = temp;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"server"</span>, server);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"name"</span>, server);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"sound"</span>, <span class="stringliteral">"off"</span>);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"protocol"</span>, protocol);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  g_free(server);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  g_strfreev(protocolserver);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <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> }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="remmina__exec_8h.html#a424cabdcff647797061e7482049d62a7"> 368</a></span> <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> {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  gchar *s1;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  gchar *s2;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  gchar *temp;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  GtkWidget *widget;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  GtkWindow *mainwindow;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  GtkWidget *prefdialog;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <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>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">int</span> ch;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  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> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">switch</span> (command) {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <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>  <span class="keywordflow">if</span> (mainwindow) {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  gtk_window_present(mainwindow);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  gtk_window_deiconify(GTK_WINDOW(mainwindow));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  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>  gtk_widget_show(widget);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <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>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  && <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  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>  <span class="keywordflow">if</span> (prefdialog) {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  gtk_window_present(GTK_WINDOW(prefdialog));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  gtk_window_deiconify(GTK_WINDOW(prefdialog));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="comment">/* Create a new preference dialog */</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  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>  gtk_widget_show(widget);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <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>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>))</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  s1 = (data ? strchr(data, <span class="charliteral">','</span>) : NULL);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">if</span> (s1) {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  s1 = g_strdup(data);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  s2 = strchr(s1, <span class="charliteral">','</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  *s2++ = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  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>  g_free(s1);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  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>  }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <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>  REMMINA_DEBUG (<span class="stringliteral">"Initiating connection"</span>);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_connect"</span>)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>))</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <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>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>))</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  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>  <span class="keywordflow">if</span> (widget)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <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>  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>  <span class="keywordflow">if</span> (mainwindow) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <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>  }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  g_print(<span class="stringliteral">"%s %s %s (git %s)\n"</span>, g_get_application_name(), ISSNAP, VERSION, REMMINA_GIT_REVISION);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="comment">/* As we do not use the "handle-local-options" signal, we have to exit Remmina */</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <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>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <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>  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>  <span class="keywordflow">if</span> (mainwindow) {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <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>  <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>  }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  g_print(<span class="stringliteral">"\n%s %s %s (git %s)\n\n"</span>, g_get_application_name(), ISSNAP, VERSION, REMMINA_GIT_REVISION);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <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>  g_print(<span class="stringliteral">"\n%s\n"</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>  <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>  }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <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>  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>  <span class="keywordflow">if</span> (plugin) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  plugin-><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>  }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  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>  _(<span class="stringliteral">"Plugin %s is not registered."</span>), data);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  g_signal_connect(G_OBJECT(widget), <span class="stringliteral">"response"</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <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>  }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <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>  i = 0;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  g_print(<span class="stringliteral">"Enter the password you want to encrypt: "</span>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  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>  <span class="keywordflow">while</span> ((ch = getchar()) != EOF && ch != <span class="charliteral">'\n'</span>) {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">if</span> (i < 254) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  temp[i] = ch;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  i++;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  temp[i] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  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>  s2 = g_uri_escape_string(s1, NULL, TRUE);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  g_print(<span class="stringliteral">"\nEncrypted password: %s\n\n"</span>, s1);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  g_print(<span class="stringliteral">"Usage:\n"</span>);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  g_print(<span class="stringliteral">"rdp://username:%s@server\n"</span>, s1);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  g_print(<span class="stringliteral">"vnc://username:%s@server\n"</span>, s1);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  g_print(<span class="stringliteral">"vnc://server?VncUsername=user\\&VncPassword=%s\n"</span>, s2);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  g_free(s1);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  g_free(s2);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  g_free(temp);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <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>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> }</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"> </td></tr> <tr class="memitem:aac0bb51159be042fecab0103e73a54dc"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> -<tr class="memitem:a0b4ec1e78b79adaa180a385ac50c20d6"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> <tr class="memitem:a1f5f9a964a75214d500e7a9fca1bd8a6"><td class="memItemLeft" align="right" valign="top">static gboolean </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"> </td></tr> <tr class="memitem:a802458852abacebfb16f1f4295806a01"><td class="memItemLeft" align="right" valign="top">static gboolean </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">◆ </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 * </td> - <td class="paramname"><em>action</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">GVariant * </td> - <td class="paramname"><em>param</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">gpointer </td> - <td class="paramname"><em>data</em> </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->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">"about"</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">"news"</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">"default"</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">"mpchange"</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">"plugins"</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">"preferences"</span>, <a class="code" href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a>, <span class="stringliteral">"i"</span>, NULL, NULL },</div><div class="line"> { <span class="stringliteral">"dark"</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">"debug"</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">"community"</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">"donations"</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">"homepage"</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">"wiki"</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">"quit"</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">"about"</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">"default"</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">"mpchange"</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">"plugins"</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">"preferences"</span>, <a class="code" href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a>, <span class="stringliteral">"i"</span>, NULL, NULL },</div><div class="line"> { <span class="stringliteral">"dark"</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">"debug"</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">"community"</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">"donations"</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">"homepage"</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">"wiki"</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">"quit"</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">"connect"</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">"copy"</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">"delete"</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">"edit"</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">"exttools"</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">"new"</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">"export"</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">"import"</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">"expand"</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">"collapse"</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">"search"</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">"connect"</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">"copy"</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">"delete"</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">"edit"</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">"exttools"</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">"new"</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">"export"</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">"import"</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">"expand"</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">"collapse"</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">"search"</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">"RDP"</span>, <span class="stringliteral">"VNC"</span>, <span class="stringliteral">"SSH"</span>, <span class="stringliteral">"NX"</span>, <span class="stringliteral">"SPICE"</span>, <span class="stringliteral">"X2GO"</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">"text/uri-list"</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <ctype.h></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <gio/gio.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <gio/gdesktopappinfo.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <gdk/gdkkeysyms.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="remmina_8h.html">remmina.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "<a class="code" href="remmina__string__array_8h.html">remmina_string_array.h</a>"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "<a class="code" href="remmina__file_8h.html">remmina_file.h</a>"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__editor_8h.html">remmina_file_editor.h</a>"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="rcw_8h.html">rcw.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__about_8h.html">remmina_about.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref__dialog_8h.html">remmina_pref_dialog.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#include "<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>"</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "<a class="code" href="remmina__main_8h.html">remmina_main.h</a>"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include "<a class="code" href="remmina__exec_8h.html">remmina_exec.h</a>"</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include "<a class="code" href="remmina__mpchange_8h.html">remmina_mpchange.h</a>"</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "<a class="code" href="remmina__external__tools_8h.html">remmina_external_tools.h</a>"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#include "<a class="code" href="remmina__unlock_8h.html">remmina_unlock.h</a>"</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89"> 66</a></span> <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> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#define RM_GET_OBJECT(object_name) gtk_builder_get_object(remminamain->builder, object_name)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <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> <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>  <span class="stringliteral">"x-scheme-handler/rdp"</span>,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="stringliteral">"x-scheme-handler/spice"</span>,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="stringliteral">"x-scheme-handler/vnc"</span>,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="stringliteral">"x-scheme-handler/remmina"</span>,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="stringliteral">"application/x-remmina"</span>,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  NULL</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> };</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8"> 93</a></span> <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>  { <span class="stringliteral">"about"</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>  { <span class="stringliteral">"news"</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>  { <span class="stringliteral">"default"</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>  { <span class="stringliteral">"mpchange"</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>  { <span class="stringliteral">"plugins"</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>  { <span class="stringliteral">"preferences"</span>, <a class="code" href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a>, <span class="stringliteral">"i"</span>, NULL, NULL },</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  { <span class="stringliteral">"dark"</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>  { <span class="stringliteral">"debug"</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>  { <span class="stringliteral">"community"</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>  { <span class="stringliteral">"donations"</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>  { <span class="stringliteral">"homepage"</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>  { <span class="stringliteral">"wiki"</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>  { <span class="stringliteral">"quit"</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> };</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3"> 109</a></span> <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>  { <span class="stringliteral">"connect"</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>  { <span class="stringliteral">"copy"</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>  { <span class="stringliteral">"delete"</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>  { <span class="stringliteral">"edit"</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>  { <span class="stringliteral">"exttools"</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>  { <span class="stringliteral">"new"</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>  { <span class="stringliteral">"export"</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>  { <span class="stringliteral">"import"</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>  { <span class="stringliteral">"expand"</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>  { <span class="stringliteral">"collapse"</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>  { <span class="stringliteral">"search"</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> };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda"> 123</a></span> <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> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  { <span class="stringliteral">"text/uri-list"</span>, 0, 1 }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> };</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c"> 128</a></span> <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> {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="stringliteral">"RDP"</span>, <span class="stringliteral">"VNC"</span>, <span class="stringliteral">"SSH"</span>, <span class="stringliteral">"NX"</span>, <span class="stringliteral">"SPICE"</span>, <span class="stringliteral">"X2GO"</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> };</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee"> 136</a></span> <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> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span> ((gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>))) & GDK_WINDOW_STATE_MAXIMIZED) == 0) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  gtk_window_get_size(remminamain-><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="l00141"></a><span class="lineno"> 141</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <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>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2"> 147</a></span> <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> {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  GtkTreeIter iter;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  gchar *group;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  gtk_tree_model_get_iter(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter, path);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  gtk_tree_model_get(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &group, -1);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span> (group) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="remmina__string__array_8c.html#a2aaacca7db4b86f836486cfb559398f0">remmina_string_array_add</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(group);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40"> 161</a></span> <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> {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (GTK_IS_TREE_STORE(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <a class="code" href="remmina__string__array_8c.html#a8ab78913d299df665a408a8a5ec51bbe">remmina_string_array_free</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  gtk_tree_view_map_expanded_rows(remminamain-><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>  (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>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5"> 177</a></span> <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> {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span> (!remminamain || !remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <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>  <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>  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>  <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-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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> }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a77d974da2ddd1ea7c87f8b9bb1eedda8"> 190</a></span> <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> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (remminamain) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  gtk_widget_destroy(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>));</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  g_object_unref(remminamain-><a class="code" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">builder</a>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="remmina__string__array_8c.html#a8ab78913d299df665a408a8a5ec51bbe">remmina_string_array_free</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_object_unref(G_OBJECT(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_object_unref(G_OBJECT(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  g_free(remminamain);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  remminamain = NULL;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2"> 215</a></span> <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> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302"> 222</a></span> 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> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <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> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  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> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a829d3ad1468d780380ae1ad693532e82"> 232</a></span> 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> {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (remminamain)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <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> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5"> 245</a></span> <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> {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span> (remminamain) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">/* Invalidate remminamain->window to avoid multiple destructions */</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  remminamain-><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>  <span class="comment">/* Destroy remminamain struct, later. We can't destroy</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="comment"> * important objects like the builder now */</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  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>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12"> 258</a></span> <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> {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5"> 269</a></span> <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> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  GtkBuilder *dlgbuilder = NULL;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  GtkWidget *dlg;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  GtkWindow *parent;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">static</span> gboolean shown_once = FALSE;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  gboolean need_snap_interface_connections = FALSE;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  GtkWidget *dsa;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <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> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">if</span> (shown_once)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  shown_once = TRUE;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  g_print(<span class="stringliteral">"Remmina is compiled as a SNAP package.\n"</span>);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  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>  <span class="keywordflow">if</span> (remmina_secret_plugin == NULL) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  g_print(<span class="stringliteral">" but we can’t find the secret plugin inside the SNAP.\n"</span>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  need_snap_interface_connections = TRUE;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span> (!remmina_secret_plugin-><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>  g_print(<span class="stringliteral">" but we can’t access a secret service. Secret service or SNAP interface connection is missing.\n"</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  need_snap_interface_connections = TRUE;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span> (need_snap_interface_connections && !<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>  dlgbuilder = <a class="code" href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public_gtk_builder_new_from_resource</a>(<span class="stringliteral">"/org/remmina/Remmina/src/../data/ui/remmina_snap_info_dialog.glade"</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  dsa = GTK_WIDGET(gtk_builder_get_object(dlgbuilder, <span class="stringliteral">"dontshowagain"</span>));</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">if</span> (dlgbuilder) {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  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>  dlg = GTK_WIDGET(gtk_builder_get_object(dlgbuilder, <span class="stringliteral">"SnapInfoDlg"</span>));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">if</span> (parent)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  gtk_window_set_transient_for(GTK_WINDOW(dlg), parent);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  gtk_builder_connect_signals(dlgbuilder, NULL);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  result = gtk_dialog_run(GTK_DIALOG(dlg));</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span> (result == 1) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</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> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dsa));</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <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>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  gtk_widget_destroy(dlg);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  g_object_unref(dlgbuilder);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66"> 319</a></span> <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>  gboolean path_currently_selected, gpointer user_data)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  guint context_id;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  GtkTreeIter iter;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  gchar buf[1000];</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (path_currently_selected)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span> (!gtk_tree_model_get_iter(model, &iter, path))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <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> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  gtk_tree_model_get(model, &iter,</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, &remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  -1);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  context_id = gtk_statusbar_get_context_id(remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, <span class="stringliteral">"status"</span>);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  gtk_statusbar_pop(remminamain-><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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%s (%s)"</span>, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  gtk_statusbar_push(remminamain-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  gtk_statusbar_push(remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, context_id, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a71f485dba1b11bf8cba129920767b5e6"> 352</a></span> <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> {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  GtkTreeIter iter;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  GtkListStore *store;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  store = GTK_LIST_STORE(user_data);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  gchar *datetime;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  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>  gtk_list_store_append(store, &iter);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  gtk_list_store_set(store, &iter,</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <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>  <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">"name"</span>),</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <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">"notes_text"</span>), NULL),</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <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">"group"</span>),</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <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">"server"</span>),</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <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">"protocol"</span>),</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <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>  <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>  <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">"labels"</span>),</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  -1);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  g_free(datetime);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5"> 377</a></span> <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> {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  GtkTreeIter *iter;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <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>  GNode *child;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  iter = NULL;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span> (node->data) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  data = (<a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *)node->data;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  iter = g_new0(GtkTreeIter, 1);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  gtk_tree_store_append(store, iter, parent);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  gtk_tree_store_set(store, iter,</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>, <span class="stringliteral">"folder-symbolic"</span>,</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, data->name,</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, data->group,</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, data->datetime,</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <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>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, data->labels,</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  -1);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <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>  <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>  g_free(iter);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aa46e6b815c241d32a476a29053dbf296"> 404</a></span> <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> {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  GNode *root;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  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>  <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>  <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> }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c"> 414</a></span> <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> {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  GtkTreeModel *tree;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  gboolean ret;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  gchar *group, *filename;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  GtkTreeIter child;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  GtkTreePath *path;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  tree = remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  ret = TRUE;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">while</span> (ret) {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  gtk_tree_model_get(tree, iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &group, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &filename, -1);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span> (filename == NULL) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__string__array_8c.html#ab93a69850cfb4117c223a3f145ced986">remmina_string_array_find</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>, group) >= 0) {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  path = gtk_tree_model_get_path(tree, iter);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  gtk_tree_view_expand_row(remminamain-><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>  gtk_tree_path_free(path);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">if</span> (gtk_tree_model_iter_children(tree, &child, iter))</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c">remmina_main_expand_group_traverse</a>(&child);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  g_free(group);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  g_free(filename);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  ret = gtk_tree_model_iter_next(tree, iter);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> </div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e"> 443</a></span> <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> {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  GtkTreeIter iter;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (gtk_tree_model_get_iter_first(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c">remmina_main_expand_group_traverse</a>(&iter);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497"> 452</a></span> <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> {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  gboolean ret, match;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  gchar *group, *filename;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  GtkTreeIter child;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  match = FALSE;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  ret = TRUE;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">while</span> (ret) {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  gtk_tree_model_get(tree, iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &group, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &filename, -1);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  match = (filename == NULL && g_strcmp0(group, match_group) == 0);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  g_free(group);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  g_free(filename);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">if</span> (match)</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">if</span> (gtk_tree_model_iter_children(tree, &child, iter)) {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  match = <a class="code" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497">remmina_main_load_file_tree_find</a>(tree, &child, match_group);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">if</span> (match) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  memcpy(iter, &child, <span class="keyword">sizeof</span>(GtkTreeIter));</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  ret = gtk_tree_model_iter_next(tree, iter);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">return</span> match;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ae32574ebe06b1a24f135af9379e663b4"> 480</a></span> <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> {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  GtkTreeIter iter, child;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  GtkTreeStore *store;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  gboolean found;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  gchar *datetime = NULL;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  store = GTK_TREE_STORE(user_data);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  found = FALSE;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">if</span> (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  found = <a class="code" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497">remmina_main_load_file_tree_find</a>(GTK_TREE_MODEL(store), &iter,</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"group"</span>));</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  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>  <span class="comment">//REMMINA_DEBUG("The date is %s", datetime);</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  gtk_tree_store_append(store, &child, (found ? &iter : NULL));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  gtk_tree_store_set(store, &child,</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <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>  <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">"name"</span>),</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <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">"notes_text"</span>), NULL),</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <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">"group"</span>),</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <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">"server"</span>),</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <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">"protocol"</span>),</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <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>  <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>  <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">"labels"</span>),</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  -1);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  g_free(datetime);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> </div><div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a71fbe206a9c2abb8f348ee598d7751b7"> 512</a></span> <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> {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  gint columnid;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  GtkSortType order;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  gtk_tree_sortable_get_sort_column_id(sortable, &columnid, &order);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</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> = columnid;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</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> = order;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <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> }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800"> 524</a></span> <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> {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  gchar *text;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  gchar *protocol, *name, *labels, *group, *server, *plugin, *date, *s;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  gboolean result = TRUE;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  text = g_ascii_strdown(gtk_entry_get_text(remminamain-><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>  <span class="keywordflow">if</span> (text && text[0]) {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  gtk_tree_model_get(model, iter,</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>, &protocol,</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, &name,</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &group,</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f">SERVER_COLUMN</a>, &server,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756">PLUGIN_COLUMN</a>, &plugin,</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, &date,</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, &labels,</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  -1);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">if</span> (g_strcmp0(protocol, <span class="stringliteral">"folder-symbolic"</span>) != 0) {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  s = g_ascii_strdown(name ? name : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  g_free(name);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  name = s;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  s = g_ascii_strdown(group ? group : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  g_free(group);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  group = s;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  s = g_ascii_strdown(server ? server : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  g_free(server);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  server = s;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  s = g_ascii_strdown(plugin ? plugin : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  g_free(plugin);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  plugin = s;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  s = g_ascii_strdown(date ? date : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  g_free(date);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  date = s;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  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> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="comment">// Filter by labels</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  s = g_ascii_strdown(labels ? labels : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  g_free(labels);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  labels = s;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">if</span> (strlen(labels) > 0) {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  gboolean labels_result = TRUE;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  gchar **labels_array = g_strsplit(labels, <span class="stringliteral">","</span>, -1);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  gchar **text_array = g_strsplit(text, <span class="stringliteral">","</span>, -1);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <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>  <span class="keywordflow">if</span> (0 == strlen(text_array[t])) {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  gboolean text_result = FALSE;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <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>  <span class="keywordflow">if</span> (0 == strlen(labels_array[l])) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  text_result = (text_result || strstr(labels_array[l], text_array[t]));</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> </div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">if</span> (text_result) {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> </div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  labels_result = (labels_result && text_result);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">if</span> (!labels_result) {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  result = (result || labels_result);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  g_strfreev(labels_array);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  g_strfreev(text_array);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  g_free(protocol);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  g_free(name);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  g_free(labels);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  g_free(group);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  g_free(server);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  g_free(plugin);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  g_free(date);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  }</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  g_free(text);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> </div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355"> 615</a></span> <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> {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  GtkTreeIter iter;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  GtkTreePath *path;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  gchar *item_filename;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  gboolean cmp;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> </div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">if</span> (!gtk_tree_model_get_iter_first(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter))</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> </div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  gtk_tree_model_get(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &item_filename, -1);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  cmp = g_strcmp0(item_filename, filename);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  g_free(item_filename);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">if</span> (cmp == 0) {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  gtk_tree_selection_select_iter(gtk_tree_view_get_selection(remminamain-><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>  &iter);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  path = gtk_tree_model_get_path(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  gtk_tree_view_scroll_to_cell(remminamain-><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>  gtk_tree_path_free(path);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">if</span> (!gtk_tree_model_iter_next(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter))</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  }</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> </div><div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7"> 643</a></span> <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> {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  gint items_count;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  gchar buf[200];</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  guint context_id;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  gint view_file_mode;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  gboolean always_show_notes;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordtype">char</span> *save_selected_filename;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  GtkTreeModel *newmodel;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keyword">const</span> gchar *neticon;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keyword">const</span> gchar *connection_tooltip;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> </div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  save_selected_filename = g_strdup(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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> </div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  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> </div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <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>  <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>  gtk_toggle_button_set_active(remminamain-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  gtk_toggle_button_set_active(remminamain-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">switch</span> (view_file_mode) {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <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>  <span class="comment">/* Create new GtkTreeStore model */</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  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>  <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>  gtk_tree_view_column_set_visible(remminamain-><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>  <span class="comment">/* Load groups first */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <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>  <span class="comment">/* Load files list */</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> </div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="comment">/* Create new GtkListStore model */</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  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>  <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>  gtk_tree_view_column_set_visible(remminamain-><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>  <span class="comment">/* Load files list */</span></div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> </div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="comment">/* Set note column visibility*/</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  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>  <span class="keywordflow">if</span> (!always_show_notes){</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  gtk_tree_view_column_set_visible(remminamain-><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>  }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> </div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="comment">/* Unset old model */</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  gtk_tree_view_set_model(remminamain-><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> </div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a> = gtk_tree_model_filter_new(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  (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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a> = gtk_tree_model_sort_new_with_model(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  <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>  gtk_tree_view_set_model(remminamain-><a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_signal_connect(G_OBJECT(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>), <span class="stringliteral">"sort-column-changed"</span>,</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  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>  <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>  <span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="keywordflow">if</span> (save_selected_filename) {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <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>  g_free(save_selected_filename);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  gtk_tree_view_column_set_widget(remminamain-><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> </div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  GtkWidget *label = gtk_tree_view_column_get_button(remminamain-><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> </div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  gtk_widget_set_tooltip_text(GTK_WIDGET(label),</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  _(<span class="stringliteral">"The latest successful connection attempt, or a pre-computed date"</span>));</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), ngettext(<span class="stringliteral">"Total %i item."</span>, <span class="stringliteral">"Total %i items."</span>, items_count), items_count);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  context_id = gtk_statusbar_get_context_id(remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, <span class="stringliteral">"status"</span>);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  gtk_statusbar_pop(remminamain-><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>  gtk_statusbar_push(remminamain-><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> </div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <a class="code" href="remmina__monitor_8c.html#acf79b91eb05694ec967d726bd0f85e50">remmina_network_monitor_status</a> (remminamain-><a class="code" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">monitor</a>);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">monitor</a>-><a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a>){</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  neticon = g_strdup(<span class="stringliteral">"network-transmit-receive-symbolic"</span>);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  connection_tooltip = g_strdup(_(<span class="stringliteral">"Network status: fully online"</span>));</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  neticon = g_strdup(<span class="stringliteral">"network-offline-symbolic"</span>);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  connection_tooltip = g_strdup(_(<span class="stringliteral">"Network status: offline"</span>));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> </div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordflow">if</span> (GTK_IS_WIDGET(remminamain-><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>  gtk_widget_destroy(remminamain-><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>  GIcon *icon = g_themed_icon_new (neticon);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  remminamain-><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>  gtk_widget_set_tooltip_text (remminamain-><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> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  g_object_unref (icon);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> </div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  gtk_box_pack_start (GTK_BOX(remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>), remminamain-><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>  gtk_widget_show (remminamain-><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> </div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> }</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> </div><div class="line"><a name="l00759"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a627eb26ab02f0093365ed6b10dab0320"> 759</a></span> <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> {</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <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> }</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> </div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a6b30ed832369f3a7153aa63f98873c9d"> 765</a></span> <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> {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> </div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> </div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> </div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_connect"</span>)</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"profile-lock"</span>, FALSE) == 1</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <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>  <a class="code" href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <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> }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1"> 793</a></span> <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> {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> </div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <a class="code" href="remmina__external__tools_8c.html#abe70273f7d1cbab092c6f6017695c56d">remmina_external_tools_from_filename</a>(remminamain, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> </div><div class="line"><a name="l00802"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd"> 802</a></span> <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> {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <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> }</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> </div><div class="line"><a name="l00811"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229"> 811</a></span> <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> {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keyword">const</span> gchar *username;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keyword">const</span> gchar *domain;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keyword">const</span> gchar *group;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keyword">const</span> gchar *gatewayusername;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keyword">const</span> gchar *gatewaydomain;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> </div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  username = domain = group = gatewayusername = gatewaydomain = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> </div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  remminafile = NULL;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (remminafile != NULL) {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"username"</span>);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  domain = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"domain"</span>);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  group = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"group"</span>);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  gatewayusername = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"gateway_username"</span>);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  gatewaydomain = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"gateway_domain"</span>);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  }</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> </div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <a class="code" href="remmina__mpchange_8c.html#aa5a382490ca5e92bc4b124f66d83c4ff">remmina_mpchange_schedule</a>(TRUE, group, domain, username, <span class="stringliteral">""</span>, gatewayusername, gatewaydomain, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">if</span> (remminafile != NULL)</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <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> }</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> </div><div class="line"><a name="l00848"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a52cc21537ff003b9d0fbdb9040c811af"> 848</a></span> <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> {</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  GtkWidget *widget;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> </div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> </div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  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>  g_signal_connect(G_OBJECT(widget), <span class="stringliteral">"destroy"</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>  gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <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> }</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> </div><div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c"> 867</a></span> <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> {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="keywordflow">if</span> (event->keyval == GDK_KEY_Escape) {</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  gtk_entry_set_text(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"search_toggle"</span>)), FALSE);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> }</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> </div><div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c"> 878</a></span> <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> {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <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>  gtk_tree_view_collapse_row(tree, path);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  gtk_tree_view_expand_row(tree, path, FALSE);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> }</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> </div><div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac1a3a51f6d7f6a2411f9b38de860d766"> 888</a></span> <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> {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keywordflow">if</span> (gtk_toggle_button_get_active(remminamain-><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>  <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>  <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>  gtk_entry_set_text(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <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>  <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>  }</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</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#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>  <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>  gtk_entry_set_text(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <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>  <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>  }</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  }</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> }</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> </div><div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1"> 907</a></span> <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> {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  GtkWidget *widget;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> </div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> </div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> </div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <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-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">if</span> (((<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>))</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  || <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"profile-lock"</span>, FALSE))</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <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>  remminafile = NULL;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  widget = <a class="code" href="remmina__file__editor_8c.html#aa5c50852f8569f075eec5d5db30c2ebf">remmina_file_editor_new_copy</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (widget) {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  g_signal_connect(G_OBJECT(widget), <span class="stringliteral">"destroy"</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>  gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  }</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <a class="code" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> </div><div class="line"><a name="l00943"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc"> 943</a></span> <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> {</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  GtkWidget *widget;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> </div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> </div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <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-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  && (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  || <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"profile-lock"</span>, FALSE))</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> </div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <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>  remminafile = NULL;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> </div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  widget = <a class="code" href="remmina__file__editor_8c.html#aa9345cfe3fb32d326b652e96ee55eaea">remmina_file_editor_new_from_filename</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (widget) {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  }</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <a class="code" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00974"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a10e574723222f5df9db456977e62a093"> 974</a></span> <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> {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  GtkWidget *dialog;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> </div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <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-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordflow">if</span> (((<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>))</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  || <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"profile-lock"</span>, FALSE))</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <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>  remminafile = NULL;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  }</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> </div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  dialog = gtk_message_dialog_new(remminamain-><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>  _(<span class="stringliteral">"Are you sure you want to delete “%s”?"</span>), remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  gchar *delfilename = g_strdup(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  g_free(delfilename), delfilename = NULL;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <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>  <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>  }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  gtk_widget_destroy(dialog);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <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> }</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div><div class="line"><a name="l01008"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1e8b7e8c0f7a47dc0409ae6eb18cfc6a"> 1008</a></span> <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> {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  GVariant *v = g_variant_new(<span class="stringliteral">"i"</span>, 0);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <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> }</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> </div><div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92"> 1016</a></span> <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> {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  GtkSettings *settings;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  REMMINA_DEBUG(<span class="stringliteral">"Opening the preferences"</span>);</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  gint32 tab_num;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> </div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  REMMINA_DEBUG(<span class="stringliteral">"Parameter passed to preferences of type %s"</span>, g_variant_get_type_string(param));</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  tab_num = g_variant_get_int32(param);</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  REMMINA_DEBUG(<span class="stringliteral">"We got a parameter for the preferences: %d"</span>, tab_num);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  tab_num = 0;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  }</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> </div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> </div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  GtkWidget *widget = <a class="code" href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a>(tab_num, remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  gtk_widget_show_all(widget);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <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>  settings = gtk_settings_get_default();</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  g_object_set(settings, <span class="stringliteral">"gtk-application-prefer-dark-theme"</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> }</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> </div><div class="line"><a name="l01044"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1"> 1044</a></span> <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> {</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  g_autoptr(GError) error = NULL;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  GDesktopAppInfo *desktop_info;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  GAppInfo *info = NULL;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  g_autofree gchar *<span class="keywordtype">id</span> = g_strconcat(REMMINA_APP_ID, <span class="stringliteral">".desktop"</span>, NULL);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> </div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  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>  <span class="keywordflow">if</span> (!desktop_info)</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  info = G_APP_INFO(desktop_info);</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> </div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <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>  <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], &error))</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  g_warning(<span class="stringliteral">"Failed to set '%s' as the default application for secondary content type '%s': %s"</span>,</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  g_app_info_get_name(info), <a class="code" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">supported_mime_types</a>[i], error->message);</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  g_debug(<span class="stringliteral">"Set '%s' as the default application for '%s'"</span>,</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  g_app_info_get_name(info),</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <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>  }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> }</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div><div class="line"><a name="l01070"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a"> 1070</a></span> <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> {</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  g_debug(<span class="stringliteral">"Quit intercept"</span>);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <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> }</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01078"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3d60de4c121cae0c82e60b13873073db"> 1078</a></span> <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> {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</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#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>  <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>  gtk_entry_set_text(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <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>  <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>  }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> }</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> </div><div class="line"><a name="l01088"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20"> 1088</a></span> <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> {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  GtkWidget *dlg;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  GSList *element;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  gchar *path;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <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>  GString *err;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <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>  gboolean imported;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> </div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  err = g_string_new(NULL);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  imported = FALSE;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">for</span> (element = files; element; element = element->next) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  path = (gchar *)element->data;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  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>  <span class="keywordflow">if</span> (plugin && (remminafile = plugin-><a class="code" href="struct___remmina_file_plugin.html#a597178a88c755ebe0614897b7aa279b1">import_func</a>(plugin, path)) != NULL && <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"name"</span>)) {</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <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>  <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>  imported = TRUE;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  g_string_append(err, path);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  g_string_append_c(err, <span class="charliteral">'\n'</span>);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <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>  remminafile = NULL;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  g_free(path);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  g_slist_free(files);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordflow">if</span> (err->len > 0) {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <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>  dlg = gtk_message_dialog_new(remminamain-><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>  _(<span class="stringliteral">"Unable to import:\n%s"</span>), err->str);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  g_signal_connect(G_OBJECT(dlg), <span class="stringliteral">"response"</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  gtk_widget_show(dlg);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  }</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  g_string_free(err, TRUE);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <span class="keywordflow">if</span> (imported)</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <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> }</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> </div><div class="line"><a name="l01131"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d"> 1131</a></span> <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> {</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  GSList *files;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span> </div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="keywordflow">if</span> (response_id == GTK_RESPONSE_ACCEPT) {</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  files = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <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>  }</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> }</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> </div><div class="line"><a name="l01143"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c"> 1143</a></span> <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> {</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  GtkWidget *dialog;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  dialog = gtk_file_chooser_dialog_new(_(<span class="stringliteral">"Import"</span>), remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_FILE_CHOOSER_ACTION_OPEN, <span class="stringliteral">"Import"</span>,</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">"response"</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>  gtk_widget_show(dialog);</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div><div class="line"><a name="l01155"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d"> 1155</a></span> <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> {</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  GtkWidget *dialog;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> </div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  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>  <span class="keywordflow">if</span> (plugin) {</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  dialog = gtk_file_chooser_dialog_new(plugin-><a class="code" href="struct___remmina_file_plugin.html#ac4f2b0118490cede0577aaee9f2e0b5f">export_hints</a>, remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>,</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  GTK_FILE_CHOOSER_ACTION_SAVE, _(<span class="stringliteral">"_Save"</span>), GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <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>  plugin-><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>  gtk_widget_destroy(dialog);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  dialog = gtk_message_dialog_new(remminamain-><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>  _(<span class="stringliteral">"This protocol does not support exporting."</span>));</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">"response"</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  gtk_widget_show(dialog);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  }</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <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> }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> </div><div class="line"><a name="l01184"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc"> 1184</a></span> <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> {</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <a class="code" href="remmina__plugin__manager_8c.html#aedec4e9cf18d99a559aa51065c2bc276">remmina_plugin_manager_show</a>(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> }</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div><div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b"> 1190</a></span> <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> {</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  GtkSettings *settings;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> </div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  settings = gtk_settings_get_default();</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> </div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keywordflow">if</span> (gtk_switch_get_active(remminamain-><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>  <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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <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>  <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> </div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  g_object_set(settings, <span class="stringliteral">"gtk-application-prefer-dark-theme"</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> }</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> </div><div class="line"><a name="l01206"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a"> 1206</a></span> <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> {</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  g_app_info_launch_default_for_uri(<span class="stringliteral">"https://www.remmina.org"</span>, NULL, NULL);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> }</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> </div><div class="line"><a name="l01212"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0c32fe66988056b353220128611b9116"> 1212</a></span> <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> {</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  g_app_info_launch_default_for_uri(<span class="stringliteral">"https://gitlab.com/Remmina/Remmina/wikis/home"</span>, NULL, NULL);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> }</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> </div><div class="line"><a name="l01218"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32"> 1218</a></span> <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> {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  g_app_info_launch_default_for_uri(<span class="stringliteral">"https://remmina.org/community"</span>, NULL, NULL);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> }</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span> </div><div class="line"><a name="l01224"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277"> 1224</a></span> <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> {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  g_app_info_launch_default_for_uri(<span class="stringliteral">"https://www.remmina.org/donations"</span>, NULL, NULL);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> }</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> </div><div class="line"><a name="l01230"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc"> 1230</a></span> <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> {</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <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> }</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> </div><div class="line"><a name="l01236"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc"> 1236</a></span> <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> {</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <a class="code" href="remmina__about_8c.html#a3ad768979e0945a162018c6d596c90f4">remmina_about_open</a>(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> };</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> </div><div class="line"><a name="l01242"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6"> 1242</a></span> <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> {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  REMMINA_DEBUG(<span class="stringliteral">"Setting news counters to 0"</span>);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</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> = 0;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</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> = 0;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  REMMINA_DEBUG(<span class="stringliteral">"Saving preferences"</span>);</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <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> };</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div><div class="line"><a name="l01252"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6"> 1252</a></span> <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> {</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="keywordflow">if</span> (s == NULL)</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordflow">while</span> (*s != 0) {</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  s++;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  }</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span> }</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> </div><div class="line"><a name="l01264"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a802458852abacebfb16f1f4295806a01"> 1264</a></span> <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> {</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  gchar *server;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  gchar *server_trimmed;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  gchar *qcp;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> </div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> </div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  <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>  qcp = gtk_combo_box_text_get_active_text(remminamain-><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>  <span class="keywordflow">if</span> (qcp && 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>  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>  <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>  <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>  }</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> </div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  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>  server = g_strdup(gtk_entry_get_text(remminamain-><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>  <span class="keywordflow">if</span> (g_hostname_to_ascii(server) == NULL)</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <span class="comment">/* If server contain /, e.g. vnc://, it won't connect</span></div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> <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> <span class="comment"> * it'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> <span class="comment"> */</span></div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  <span class="keywordflow">if</span> (g_strrstr(server, <span class="stringliteral">"/"</span>) != NULL)</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  <span class="comment">//if (g_str_has_suffix (server, "/"))</span></div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <span class="comment">//return FALSE;</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> </div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  <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>  server_trimmed = g_strdup(server);</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  g_strstrip(server_trimmed);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  gchar **strings = g_strsplit(server_trimmed, <span class="stringliteral">":"</span>, 2);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> </div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordflow">if</span> (strings[0] != NULL)</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <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>  g_stpcpy(server, server_trimmed);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"sound"</span>, <span class="stringliteral">"off"</span>);</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"server"</span>, server);</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"name"</span>, server);</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"protocol"</span>, qcp);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  g_free(server);</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  g_free(server_trimmed);</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  g_free(qcp);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> </div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  <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> </div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> }</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> </div><div class="line"><a name="l01318"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a210e9e04c7c97cc86412044de31f659d"> 1318</a></span> 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> {</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE)</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> }</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span> </div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span> <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> <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> {</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  <span class="keywordflow">if</span> (gtk_entry_get_text(remminamain-><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>  gtk_editable_select_region(GTK_EDITABLE(remminamain-><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> }</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> </div><div class="line"><a name="l01333"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a"> 1333</a></span> <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> {</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  gtk_tree_view_collapse_all(remminamain-><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> }</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> </div><div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a"> 1339</a></span> <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> {</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  REMMINA_DEBUG(<span class="stringliteral">"Search toggle triggered"</span>);</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  gboolean toggle_status = gtk_toggle_button_get_active(remminamain-><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> </div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  gtk_search_bar_set_search_mode(remminamain-><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>  <span class="keywordflow">if</span> (toggle_status) {</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  REMMINA_DEBUG(<span class="stringliteral">"Search toggle is active"</span>);</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  gtk_widget_grab_focus(GTK_WIDGET(remminamain-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  REMMINA_DEBUG(<span class="stringliteral">"Search toggle is not active, focus is tree_files_list"</span>);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  gtk_widget_grab_focus(GTK_WIDGET(remminamain-><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>  }</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> }</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> </div><div class="line"><a name="l01355"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf"> 1355</a></span> <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> {</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remminamain-><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> }</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> </div><div class="line"><a name="l01361"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8"> 1361</a></span> <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> {</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  gtk_tree_view_expand_all(remminamain-><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> }</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> </div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <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> <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> {</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> <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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  <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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</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="l01380"></a><span class="lineno"> 1380</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  }</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  }</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> }</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> </div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> <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> 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> {</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  <span class="keywordflow">if</span> (event->button == MOUSE_BUTTON_RIGHT) {</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE)</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> <span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  gtk_menu_popup_at_pointer(GTK_MENU(remminamain-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  gtk_menu_popup(remminamain-><a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>, NULL, NULL, NULL, NULL, event->button, event->time);</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  }</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> }</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> </div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> <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> 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> {</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  <span class="keywordflow">if</span> (event->keyval == GDK_KEY_Menu) {</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  gtk_menu_popup_at_widget(GTK_MENU(remminamain-><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>  GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER,</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  (GdkEvent *)event);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  gtk_menu_popup(remminamain-><a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>, NULL, NULL, NULL, NULL, 0, event->time);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  }</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> }</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div><div class="line"><a name="l01416"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f"> 1416</a></span> <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> {</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  <span class="keywordflow">if</span> (icon_pos == GTK_ENTRY_ICON_SECONDARY)</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  gtk_entry_set_text(entry, <span class="stringliteral">""</span>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> }</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> </div><div class="line"><a name="l01423"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1cac4199e40e35bf3fcdb98841615657"> 1423</a></span> <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> {</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  <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>  <span class="keywordflow">if</span> (gtk_entry_get_text_length(remminamain-><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>  <span class="keywordflow">if</span> (GTK_IS_TREE_STORE(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  }</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  }</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  }</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> </div><div class="line"><a name="l01443"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#adf073486149762f547504020484bff70"> 1443</a></span> <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>  GtkSelectionData *data, guint info, guint time, gpointer user_data)</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> {</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  gchar **uris;</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  GSList *files = NULL;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  gint i;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> </div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  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>  <span class="keywordflow">for</span> (i = 0; uris[i]; i++) {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  <span class="keywordflow">if</span> (strncmp(uris[i], <span class="stringliteral">"file://"</span>, 7) != 0)</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  files = g_slist_append(files, g_strdup(uris[i] + 7));</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  }</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  g_strfreev(uris);</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  <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> }</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> </div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> <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> <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> {</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  <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>  GtkWidget *menuitem = gtk_menu_item_new_with_label(plugin-><a class="code" href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">description</a>);</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> </div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  gtk_widget_show(menuitem);</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  gtk_menu_shell_append(GTK_MENU_SHELL(remminamain-><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>  g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">"activate"</span>, G_CALLBACK(tool_plugin-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> }</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> </div><div class="line"><a name="l01474"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79"> 1474</a></span> 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> {</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> }</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> </div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> <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> <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> {</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  <span class="keywordtype">int</span> i, qcp_idx, qcp_actidx;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  <span class="keywordtype">char</span> *name;</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  GtkSettings *settings;</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  REMMINA_DEBUG(<span class="stringliteral">"Initializing the Remmina main window"</span>);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <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>  settings = gtk_settings_get_default();</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  g_object_set(settings, <span class="stringliteral">"gtk-application-prefer-dark-theme"</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> </div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>  REMMINA_DEBUG (<span class="stringliteral">"Initializing monitor"</span>);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  remminamain-><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> </div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE)</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>  gtk_window_set_title(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, _(<span class="stringliteral">"Remmina Remote Desktop Client"</span>));</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  gtk_window_set_title(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, _(<span class="stringliteral">"Remmina Kiosk"</span>));</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE) {</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  gtk_window_set_default_size(remminamain-><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>  <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>  gtk_window_maximize(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  }</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  <span class="comment">/* Honor global preferences Search Bar visibility */</span></div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</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#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a>)</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"search_toggle"</span>)), FALSE);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> </div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>  <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>  <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> </div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  <span class="comment">/* Add available quick connect protocols to remminamain->combo_quick_connect_protocol */</span></div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>  qcp_idx = qcp_actidx = 0;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  <span class="keywordflow">for</span> (i = 0; i < <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>  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>  <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>  gtk_combo_box_text_append(remminamain-><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>  <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 && 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>  qcp_actidx = qcp_idx;</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>  qcp_idx++;</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  }</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  }</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>  gtk_combo_box_set_active(GTK_COMBO_BOX(remminamain-><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> </div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>  <span class="comment">/* Connect the group accelerators to the GtkWindow */</span></div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>  <span class="comment">//gtk_window_add_accel_group(remminamain->window, remminamain->accelgroup_shortcuts);</span></div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>  <span class="comment">/* Set the Quick Connection */</span></div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  gtk_entry_set_activates_default(remminamain-><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>  <span class="comment">/* Set the TreeView for the files list */</span></div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>  gtk_tree_selection_set_select_function(</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  gtk_tree_view_get_selection(remminamain-><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>  <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>  gtk_tree_view_set_search_entry(remminamain-><a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, GTK_ENTRY(remminamain-><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>  <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>  gtk_widget_grab_focus(GTK_WIDGET(remminamain-><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>  <span class="comment">/* Load the files list */</span></div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  <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> </div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  <span class="comment">/* Drag-n-drop support */</span></div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>  gtk_drag_dest_set(GTK_WIDGET(remminamain-><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> </div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  <span class="comment">/* Finish initialization */</span></div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  <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>  g_object_set_data(G_OBJECT(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), <span class="stringliteral">"tag"</span>, <span class="stringliteral">"remmina-main-window"</span>);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>));</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> }</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> </div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> <span class="comment">/* Signal handler for "show" on remminamain->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> <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> {</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> <span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span> }</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span> </div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span> <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> 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> {</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  GSimpleActionGroup *actions;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  GtkAccelGroup *accel_group = NULL;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> </div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  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>  remminamain-><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>  <span class="comment">/* Assign UI widgets to the private members */</span></div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  remminamain-><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">"/org/remmina/Remmina/src/../data/ui/remmina_main.glade"</span>);</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>  remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a> = GTK_WINDOW(RM_GET_OBJECT(<span class="stringliteral">"RemminaMain"</span>));</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE) {</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  gtk_window_set_position(remminamain-><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>  gtk_window_set_default_size(remminamain-><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>  gtk_window_set_resizable(remminamain-><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>  }</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  <span class="comment">/* New Button */</span></div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  remminamain-><a class="code" href="struct___remmina_main.html#a4db5c4960c9dbe3e798528bacb31456e">button_new</a> = GTK_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"button_new"</span>));</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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>  <span class="comment">/* Search bar */</span></div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  remminamain-><a class="code" href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72">search_toggle</a> = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"search_toggle"</span>));</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  remminamain-><a class="code" href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd">search_bar</a> = GTK_SEARCH_BAR(RM_GET_OBJECT(<span class="stringliteral">"search_bar"</span>));</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  <span class="comment">/* view mode list/tree */</span></div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  remminamain-><a class="code" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">view_toggle_button</a> = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"view_toggle_button"</span>));</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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> </div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  <span class="comment">/* Menu widgets */</span></div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  remminamain-><a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a> = GTK_MENU(RM_GET_OBJECT(<span class="stringliteral">"menu_popup"</span>));</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  remminamain-><a class="code" href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec">menu_header_button</a> = GTK_MENU_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"menu_header_button"</span>));</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  remminamain-><a class="code" href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62">menu_popup_full</a> = GTK_MENU(RM_GET_OBJECT(<span class="stringliteral">"menu_popup_full"</span>));</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE) {</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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>  }</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>  <span class="comment">/* View mode radios */</span></div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  remminamain-><a class="code" href="struct___remmina_main.html#a6288ed69d372d1047ce94c74e77e0fd4">menuitem_view_mode_list</a> = GTK_RADIO_MENU_ITEM(RM_GET_OBJECT(<span class="stringliteral">"menuitem_view_mode_list"</span>));</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  remminamain-><a class="code" href="struct___remmina_main.html#a670425eaf7430854a172ee0f41c4e5e0">menuitem_view_mode_tree</a> = GTK_RADIO_MENU_ITEM(RM_GET_OBJECT(<span class="stringliteral">"menuitem_view_mode_tree"</span>));</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>  <span class="comment">/* Quick connect objects */</span></div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>  remminamain-><a class="code" href="struct___remmina_main.html#a7b03d239c21141a202d0698492cfae95">box_quick_connect</a> = GTK_BOX(RM_GET_OBJECT(<span class="stringliteral">"box_quick_connect"</span>));</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  remminamain-><a class="code" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">combo_quick_connect_protocol</a> = GTK_COMBO_BOX_TEXT(RM_GET_OBJECT(<span class="stringliteral">"combo_quick_connect_protocol"</span>));</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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>  remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a> = GTK_ENTRY(RM_GET_OBJECT(<span class="stringliteral">"entry_quick_connect_server"</span>));</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  <span class="comment">/* Other widgets */</span></div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>  remminamain-><a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a> = GTK_TREE_VIEW(RM_GET_OBJECT(<span class="stringliteral">"tree_files_list"</span>));</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>  remminamain-><a class="code" href="struct___remmina_main.html#aa2b3c232b59da2278215d446b93db0e5">column_files_list_name</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_name"</span>));</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  remminamain-><a class="code" href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc">column_files_list_group</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_group"</span>));</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  remminamain-><a class="code" href="struct___remmina_main.html#a7db532834f4fd6360956cb0e2383b0fb">column_files_list_server</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_server"</span>));</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>  remminamain-><a class="code" href="struct___remmina_main.html#a8e21f782dd6e0a6d80f0f622898b2a48">column_files_list_plugin</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_plugin"</span>));</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>  remminamain-><a class="code" href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a">column_files_list_date</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_date"</span>));</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>  remminamain-><a class="code" href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9">column_files_list_notes</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_notes"</span>));</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  gtk_tree_view_column_set_fixed_width(remminamain-><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>  remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a> = GTK_STATUSBAR(RM_GET_OBJECT(<span class="stringliteral">"statusbar_main"</span>));</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>  <span class="comment">/* signals */</span></div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>  g_signal_connect(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">"key-release-event"</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>  g_signal_connect(remminamain-><a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, <span class="stringliteral">"row-activated"</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>  <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>  actions = g_simple_action_group_new();</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>  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-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>  gtk_widget_insert_action_group(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), <span class="stringliteral">"app"</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  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-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>  gtk_widget_insert_action_group(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), <span class="stringliteral">"main"</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  g_object_unref(actions);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>  <span class="comment">/* Accelerators */</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>  accel_group = gtk_accel_group_new();</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>  gtk_window_add_accel_group(remminamain-><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>  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>  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>  <span class="comment">// TODO: This crash remmina because the function doesn't receive the parameter we expect</span></div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>  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>  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>  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>  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> </div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>  <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  gtk_builder_connect_signals(remminamain-><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>  <span class="comment">/* Initialize the window and load the preferences */</span></div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  <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>  <span class="keywordflow">return</span> GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> }</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> </div><div class="line"><a name="l01645"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a3948142732379a3d165f3b0b4d5f5abc"> 1645</a></span> 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> {</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>  <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>)</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>  remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a> = GTK_WINDOW(RM_GET_OBJECT(<span class="stringliteral">"RemminaMain"</span>));</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>  <span class="keywordflow">return</span> remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>;</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> }</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> </div><div class="line"><a name="l01657"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a"> 1657</a></span> <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> {</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>  <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> }</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> </div><div class="line"><a name="l01664"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589"> 1664</a></span> <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>  GtkWidget *dialog;</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span> </div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) {</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  dialog = gtk_message_dialog_new(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_DIALOG_MODAL, msg, buttons, <span class="stringliteral">"%s"</span>, message);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  gtk_widget_destroy(dialog);</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>  }</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span> }</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span> </div><div class="line"><a name="l01674"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7"> 1674</a></span> <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>  GtkWidget *dialog;</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span> </div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) {</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>  dialog = gtk_message_dialog_new(remminamain-><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>  message, g_get_application_name());</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  gtk_widget_destroy(dialog);</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  }</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> }</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <ctype.h></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <gio/gio.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <gio/gdesktopappinfo.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <gdk/gdkkeysyms.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="remmina_8h.html">remmina.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "<a class="code" href="remmina__string__array_8h.html">remmina_string_array.h</a>"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "<a class="code" href="remmina__file_8h.html">remmina_file.h</a>"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__editor_8h.html">remmina_file_editor.h</a>"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="rcw_8h.html">rcw.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__about_8h.html">remmina_about.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref__dialog_8h.html">remmina_pref_dialog.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#include "<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>"</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "<a class="code" href="remmina__main_8h.html">remmina_main.h</a>"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include "<a class="code" href="remmina__exec_8h.html">remmina_exec.h</a>"</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include "<a class="code" href="remmina__mpchange_8h.html">remmina_mpchange.h</a>"</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "<a class="code" href="remmina__external__tools_8h.html">remmina_external_tools.h</a>"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#include "<a class="code" href="remmina__unlock_8h.html">remmina_unlock.h</a>"</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89"> 66</a></span> <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> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#define RM_GET_OBJECT(object_name) gtk_builder_get_object(remminamain->builder, object_name)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <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> <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>  <span class="stringliteral">"x-scheme-handler/rdp"</span>,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="stringliteral">"x-scheme-handler/spice"</span>,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="stringliteral">"x-scheme-handler/vnc"</span>,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="stringliteral">"x-scheme-handler/remmina"</span>,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="stringliteral">"application/x-remmina"</span>,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  NULL</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> };</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8"> 93</a></span> <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>  { <span class="stringliteral">"about"</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>  { <span class="stringliteral">"default"</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>  { <span class="stringliteral">"mpchange"</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>  { <span class="stringliteral">"plugins"</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>  { <span class="stringliteral">"preferences"</span>, <a class="code" href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a>, <span class="stringliteral">"i"</span>, NULL, NULL },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  { <span class="stringliteral">"dark"</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>  { <span class="stringliteral">"debug"</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>  { <span class="stringliteral">"community"</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>  { <span class="stringliteral">"donations"</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>  { <span class="stringliteral">"homepage"</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>  { <span class="stringliteral">"wiki"</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>  { <span class="stringliteral">"quit"</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> };</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3"> 108</a></span> <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>  { <span class="stringliteral">"connect"</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>  { <span class="stringliteral">"copy"</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>  { <span class="stringliteral">"delete"</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>  { <span class="stringliteral">"edit"</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>  { <span class="stringliteral">"exttools"</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>  { <span class="stringliteral">"new"</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>  { <span class="stringliteral">"export"</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>  { <span class="stringliteral">"import"</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>  { <span class="stringliteral">"expand"</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>  { <span class="stringliteral">"collapse"</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>  { <span class="stringliteral">"search"</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> };</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda"> 122</a></span> <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> {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  { <span class="stringliteral">"text/uri-list"</span>, 0, 1 }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> };</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c"> 127</a></span> <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> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="stringliteral">"RDP"</span>, <span class="stringliteral">"VNC"</span>, <span class="stringliteral">"SSH"</span>, <span class="stringliteral">"NX"</span>, <span class="stringliteral">"SPICE"</span>, <span class="stringliteral">"X2GO"</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> };</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee"> 135</a></span> <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> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span> ((gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>))) & GDK_WINDOW_STATE_MAXIMIZED) == 0) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  gtk_window_get_size(remminamain-><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="l00140"></a><span class="lineno"> 140</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <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>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2"> 146</a></span> <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> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  GtkTreeIter iter;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  gchar *group;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  gtk_tree_model_get_iter(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter, path);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  gtk_tree_model_get(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &group, -1);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span> (group) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="remmina__string__array_8c.html#a2aaacca7db4b86f836486cfb559398f0">remmina_string_array_add</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(group);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40"> 160</a></span> <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> {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (GTK_IS_TREE_STORE(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <a class="code" href="remmina__string__array_8c.html#a8ab78913d299df665a408a8a5ec51bbe">remmina_string_array_free</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  gtk_tree_view_map_expanded_rows(remminamain-><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>  (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>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5"> 176</a></span> <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> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (!remminamain || !remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <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>  <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>  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>  <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-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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> }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a77d974da2ddd1ea7c87f8b9bb1eedda8"> 189</a></span> <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> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span> (remminamain) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  gtk_widget_destroy(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>));</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  g_object_unref(remminamain-><a class="code" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">builder</a>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="remmina__string__array_8c.html#a8ab78913d299df665a408a8a5ec51bbe">remmina_string_array_free</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_object_unref(G_OBJECT(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_object_unref(G_OBJECT(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  g_free(remminamain);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  remminamain = NULL;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2"> 214</a></span> <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> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302"> 221</a></span> 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> {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <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> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  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> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a829d3ad1468d780380ae1ad693532e82"> 231</a></span> 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> {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span> (remminamain)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <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> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5"> 244</a></span> <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> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span> (remminamain) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">/* Invalidate remminamain->window to avoid multiple destructions */</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  remminamain-><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>  <span class="comment">/* Destroy remminamain struct, later. We can't destroy</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="comment"> * important objects like the builder now */</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  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>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12"> 257</a></span> <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> {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_free(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5"> 268</a></span> <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> {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  GtkBuilder *dlgbuilder = NULL;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  GtkWidget *dlg;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  GtkWindow *parent;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">static</span> gboolean shown_once = FALSE;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  gboolean need_snap_interface_connections = FALSE;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  GtkWidget *dsa;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <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> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (shown_once)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  shown_once = TRUE;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  g_print(<span class="stringliteral">"Remmina is compiled as a SNAP package.\n"</span>);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  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>  <span class="keywordflow">if</span> (remmina_secret_plugin == NULL) {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  g_print(<span class="stringliteral">" but we can’t find the secret plugin inside the SNAP.\n"</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  need_snap_interface_connections = TRUE;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span> (!remmina_secret_plugin-><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>  g_print(<span class="stringliteral">" but we can’t access a secret service. Secret service or SNAP interface connection is missing.\n"</span>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  need_snap_interface_connections = TRUE;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (need_snap_interface_connections && !<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>  dlgbuilder = <a class="code" href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public_gtk_builder_new_from_resource</a>(<span class="stringliteral">"/org/remmina/Remmina/src/../data/ui/remmina_snap_info_dialog.glade"</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  dsa = GTK_WIDGET(gtk_builder_get_object(dlgbuilder, <span class="stringliteral">"dontshowagain"</span>));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span> (dlgbuilder) {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  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>  dlg = GTK_WIDGET(gtk_builder_get_object(dlgbuilder, <span class="stringliteral">"SnapInfoDlg"</span>));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (parent)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  gtk_window_set_transient_for(GTK_WINDOW(dlg), parent);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  gtk_builder_connect_signals(dlgbuilder, NULL);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  result = gtk_dialog_run(GTK_DIALOG(dlg));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (result == 1) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</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> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dsa));</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <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>  }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  gtk_widget_destroy(dlg);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  g_object_unref(dlgbuilder);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66"> 318</a></span> <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>  gboolean path_currently_selected, gpointer user_data)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  guint context_id;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  GtkTreeIter iter;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  gchar buf[1000];</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span> (path_currently_selected)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span> (!gtk_tree_model_get_iter(model, &iter, path))</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <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> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  gtk_tree_model_get(model, &iter,</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, &remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  -1);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  context_id = gtk_statusbar_get_context_id(remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, <span class="stringliteral">"status"</span>);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  gtk_statusbar_pop(remminamain-><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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%s (%s)"</span>, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  gtk_statusbar_push(remminamain-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  gtk_statusbar_push(remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, context_id, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a71f485dba1b11bf8cba129920767b5e6"> 351</a></span> <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> {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  GtkTreeIter iter;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  GtkListStore *store;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  store = GTK_LIST_STORE(user_data);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  gchar *datetime;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  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>  gtk_list_store_append(store, &iter);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  gtk_list_store_set(store, &iter,</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <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>  <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">"name"</span>),</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <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">"notes_text"</span>), NULL),</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <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">"group"</span>),</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <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">"server"</span>),</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <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">"protocol"</span>),</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <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>  <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>  <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">"labels"</span>),</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  -1);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  g_free(datetime);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5"> 376</a></span> <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> {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  GtkTreeIter *iter;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <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>  GNode *child;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  iter = NULL;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">if</span> (node->data) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  data = (<a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *)node->data;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  iter = g_new0(GtkTreeIter, 1);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  gtk_tree_store_append(store, iter, parent);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  gtk_tree_store_set(store, iter,</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>, <span class="stringliteral">"folder-symbolic"</span>,</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, data->name,</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, data->group,</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, data->datetime,</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <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>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, data->labels,</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  -1);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <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>  <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>  g_free(iter);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aa46e6b815c241d32a476a29053dbf296"> 403</a></span> <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> {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  GNode *root;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  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>  <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>  <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> }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c"> 413</a></span> <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> {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  GtkTreeModel *tree;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  gboolean ret;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  gchar *group, *filename;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  GtkTreeIter child;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  GtkTreePath *path;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  tree = remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  ret = TRUE;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">while</span> (ret) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  gtk_tree_model_get(tree, iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &group, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &filename, -1);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> (filename == NULL) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__string__array_8c.html#ab93a69850cfb4117c223a3f145ced986">remmina_string_array_find</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>, group) >= 0) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  path = gtk_tree_model_get_path(tree, iter);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  gtk_tree_view_expand_row(remminamain-><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>  gtk_tree_path_free(path);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span> (gtk_tree_model_iter_children(tree, &child, iter))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <a class="code" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c">remmina_main_expand_group_traverse</a>(&child);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  g_free(group);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  g_free(filename);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  ret = gtk_tree_model_iter_next(tree, iter);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e"> 442</a></span> <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> {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  GtkTreeIter iter;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">if</span> (gtk_tree_model_get_iter_first(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter))</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c">remmina_main_expand_group_traverse</a>(&iter);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497"> 451</a></span> <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> {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  gboolean ret, match;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  gchar *group, *filename;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  GtkTreeIter child;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  match = FALSE;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  ret = TRUE;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">while</span> (ret) {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  gtk_tree_model_get(tree, iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &group, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &filename, -1);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  match = (filename == NULL && g_strcmp0(group, match_group) == 0);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  g_free(group);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  g_free(filename);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span> (match)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">if</span> (gtk_tree_model_iter_children(tree, &child, iter)) {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  match = <a class="code" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497">remmina_main_load_file_tree_find</a>(tree, &child, match_group);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">if</span> (match) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  memcpy(iter, &child, <span class="keyword">sizeof</span>(GtkTreeIter));</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  ret = gtk_tree_model_iter_next(tree, iter);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">return</span> match;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ae32574ebe06b1a24f135af9379e663b4"> 479</a></span> <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> {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  GtkTreeIter iter, child;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  GtkTreeStore *store;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  gboolean found;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  gchar *datetime = NULL;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  store = GTK_TREE_STORE(user_data);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  found = FALSE;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">if</span> (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter))</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  found = <a class="code" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497">remmina_main_load_file_tree_find</a>(GTK_TREE_MODEL(store), &iter,</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"group"</span>));</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  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>  <span class="comment">//REMMINA_DEBUG("The date is %s", datetime);</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  gtk_tree_store_append(store, &child, (found ? &iter : NULL));</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  gtk_tree_store_set(store, &child,</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <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>  <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">"name"</span>),</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <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">"notes_text"</span>), NULL),</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <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">"group"</span>),</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <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">"server"</span>),</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <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">"protocol"</span>),</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <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>  <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>  <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">"labels"</span>),</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  -1);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  g_free(datetime);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a71fbe206a9c2abb8f348ee598d7751b7"> 511</a></span> <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> {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  gint columnid;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  GtkSortType order;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  gtk_tree_sortable_get_sort_column_id(sortable, &columnid, &order);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</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> = columnid;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</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> = order;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <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> }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800"> 523</a></span> <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> {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  gchar *text;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  gchar *protocol, *name, *labels, *group, *server, *plugin, *date, *s;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  gboolean result = TRUE;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  text = g_ascii_strdown(gtk_entry_get_text(remminamain-><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>  <span class="keywordflow">if</span> (text && text[0]) {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  gtk_tree_model_get(model, iter,</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>, &protocol,</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, &name,</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &group,</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f">SERVER_COLUMN</a>, &server,</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756">PLUGIN_COLUMN</a>, &plugin,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, &date,</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, &labels,</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  -1);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">if</span> (g_strcmp0(protocol, <span class="stringliteral">"folder-symbolic"</span>) != 0) {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  s = g_ascii_strdown(name ? name : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  g_free(name);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  name = s;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  s = g_ascii_strdown(group ? group : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  g_free(group);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  group = s;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  s = g_ascii_strdown(server ? server : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  g_free(server);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  server = s;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  s = g_ascii_strdown(plugin ? plugin : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  g_free(plugin);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  plugin = s;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  s = g_ascii_strdown(date ? date : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  g_free(date);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  date = s;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  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> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="comment">// Filter by labels</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> </div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  s = g_ascii_strdown(labels ? labels : <span class="stringliteral">""</span>, -1);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  g_free(labels);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  labels = s;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">if</span> (strlen(labels) > 0) {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  gboolean labels_result = TRUE;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  gchar **labels_array = g_strsplit(labels, <span class="stringliteral">","</span>, -1);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  gchar **text_array = g_strsplit(text, <span class="stringliteral">","</span>, -1);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <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>  <span class="keywordflow">if</span> (0 == strlen(text_array[t])) {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  gboolean text_result = FALSE;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> </div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <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>  <span class="keywordflow">if</span> (0 == strlen(labels_array[l])) {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> </div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  text_result = (text_result || strstr(labels_array[l], text_array[t]));</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">if</span> (text_result) {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  labels_result = (labels_result && text_result);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> </div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">if</span> (!labels_result) {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  result = (result || labels_result);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  g_strfreev(labels_array);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  g_strfreev(text_array);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  g_free(protocol);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  g_free(name);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  g_free(labels);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  g_free(group);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  g_free(server);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  g_free(plugin);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  g_free(date);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  g_free(text);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div><div class="line"><a name="l00614"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355"> 614</a></span> <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> {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  GtkTreeIter iter;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  GtkTreePath *path;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  gchar *item_filename;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  gboolean cmp;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> </div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span> (!gtk_tree_model_get_iter_first(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter))</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> </div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  gtk_tree_model_get(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter, <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, &item_filename, -1);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  cmp = g_strcmp0(item_filename, filename);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  g_free(item_filename);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">if</span> (cmp == 0) {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  gtk_tree_selection_select_iter(gtk_tree_view_get_selection(remminamain-><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>  &iter);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  path = gtk_tree_model_get_path(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  gtk_tree_view_scroll_to_cell(remminamain-><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>  gtk_tree_path_free(path);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">if</span> (!gtk_tree_model_iter_next(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>, &iter))</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> }</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> </div><div class="line"><a name="l00642"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7"> 642</a></span> <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> {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  gint items_count;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  gchar buf[200];</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  guint context_id;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  gint view_file_mode;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  gboolean always_show_notes;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordtype">char</span> *save_selected_filename;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  GtkTreeModel *newmodel;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keyword">const</span> gchar *neticon;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keyword">const</span> gchar *connection_tooltip;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  save_selected_filename = g_strdup(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  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> </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <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>  <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>  gtk_toggle_button_set_active(remminamain-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  gtk_toggle_button_set_active(remminamain-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> </div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">switch</span> (view_file_mode) {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <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>  <span class="comment">/* Create new GtkTreeStore model */</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  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>  <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>  gtk_tree_view_column_set_visible(remminamain-><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>  <span class="comment">/* Load groups first */</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <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>  <span class="comment">/* Load files list */</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> </div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="comment">/* Create new GtkListStore model */</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  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>  <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>  gtk_tree_view_column_set_visible(remminamain-><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>  <span class="comment">/* Load files list */</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> </div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="comment">/* Set note column visibility*/</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  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>  <span class="keywordflow">if</span> (!always_show_notes){</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  gtk_tree_view_column_set_visible(remminamain-><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>  }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="comment">/* Unset old model */</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  gtk_tree_view_set_model(remminamain-><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> </div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a> = gtk_tree_model_filter_new(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  (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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a> = gtk_tree_model_sort_new_with_model(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  <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>  gtk_tree_view_set_model(remminamain-><a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  g_signal_connect(G_OBJECT(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>), <span class="stringliteral">"sort-column-changed"</span>,</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  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>  <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>  <span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">if</span> (save_selected_filename) {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <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>  g_free(save_selected_filename);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  }</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  gtk_tree_view_column_set_widget(remminamain-><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> </div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  GtkWidget *label = gtk_tree_view_column_get_button(remminamain-><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> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  gtk_widget_set_tooltip_text(GTK_WIDGET(label),</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  _(<span class="stringliteral">"The latest successful connection attempt, or a pre-computed date"</span>));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), ngettext(<span class="stringliteral">"Total %i item."</span>, <span class="stringliteral">"Total %i items."</span>, items_count), items_count);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  context_id = gtk_statusbar_get_context_id(remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>, <span class="stringliteral">"status"</span>);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  gtk_statusbar_pop(remminamain-><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>  gtk_statusbar_push(remminamain-><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> </div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <a class="code" href="remmina__monitor_8c.html#acf79b91eb05694ec967d726bd0f85e50">remmina_network_monitor_status</a> (remminamain-><a class="code" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">monitor</a>);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">monitor</a>-><a class="code" href="struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1">connected</a>){</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  neticon = g_strdup(<span class="stringliteral">"network-transmit-receive-symbolic"</span>);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  connection_tooltip = g_strdup(_(<span class="stringliteral">"Network status: fully online"</span>));</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  neticon = g_strdup(<span class="stringliteral">"network-offline-symbolic"</span>);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  connection_tooltip = g_strdup(_(<span class="stringliteral">"Network status: offline"</span>));</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  }</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> </div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">if</span> (GTK_IS_WIDGET(remminamain-><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>  gtk_widget_destroy(remminamain-><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>  GIcon *icon = g_themed_icon_new (neticon);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  remminamain-><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>  gtk_widget_set_tooltip_text (remminamain-><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> </div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  g_object_unref (icon);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> </div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  gtk_box_pack_start (GTK_BOX(remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>), remminamain-><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>  gtk_widget_show (remminamain-><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> </div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> }</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> </div><div class="line"><a name="l00758"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a627eb26ab02f0093365ed6b10dab0320"> 758</a></span> <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> {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <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> }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a6b30ed832369f3a7153aa63f98873c9d"> 764</a></span> <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> {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> </div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> </div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_connect"</span>)</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"profile-lock"</span>, FALSE) == 1</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <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>  <a class="code" href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <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> }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> </div><div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1"> 792</a></span> <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> {</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <a class="code" href="remmina__external__tools_8c.html#abe70273f7d1cbab092c6f6017695c56d">remmina_external_tools_from_filename</a>(remminamain, remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> </div><div class="line"><a name="l00801"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd"> 801</a></span> <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> {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <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> }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229"> 810</a></span> <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> {</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keyword">const</span> gchar *username;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keyword">const</span> gchar *domain;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keyword">const</span> gchar *group;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keyword">const</span> gchar *gatewayusername;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keyword">const</span> gchar *gatewaydomain;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> </div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  username = domain = group = gatewayusername = gatewaydomain = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  remminafile = NULL;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> </div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (remminafile != NULL) {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"username"</span>);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  domain = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"domain"</span>);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  group = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"group"</span>);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  gatewayusername = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"gateway_username"</span>);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  gatewaydomain = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"gateway_domain"</span>);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  }</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  }</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> </div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <a class="code" href="remmina__mpchange_8c.html#aa5a382490ca5e92bc4b124f66d83c4ff">remmina_mpchange_schedule</a>(TRUE, group, domain, username, <span class="stringliteral">""</span>, gatewayusername, gatewaydomain, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">if</span> (remminafile != NULL)</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <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> }</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> </div><div class="line"><a name="l00847"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a52cc21537ff003b9d0fbdb9040c811af"> 847</a></span> <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> {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  GtkWidget *widget;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> </div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> </div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  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>  g_signal_connect(G_OBJECT(widget), <span class="stringliteral">"destroy"</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>  gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <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> }</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> </div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c"> 866</a></span> <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> {</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">if</span> (event->keyval == GDK_KEY_Escape) {</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  gtk_entry_set_text(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"search_toggle"</span>)), FALSE);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  }</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> }</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> </div><div class="line"><a name="l00877"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c"> 877</a></span> <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> {</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <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>  gtk_tree_view_collapse_row(tree, path);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  gtk_tree_view_expand_row(tree, path, FALSE);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> }</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> </div><div class="line"><a name="l00887"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac1a3a51f6d7f6a2411f9b38de860d766"> 887</a></span> <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> {</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="keywordflow">if</span> (gtk_toggle_button_get_active(remminamain-><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>  <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>  <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>  gtk_entry_set_text(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <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>  <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>  }</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</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#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>  <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>  gtk_entry_set_text(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <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>  <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>  }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  }</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> }</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> </div><div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1"> 906</a></span> <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> {</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  GtkWidget *widget;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> </div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span> </div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <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-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">if</span> (((<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>))</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  || <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"profile-lock"</span>, FALSE))</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> </div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <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>  remminafile = NULL;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  }</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  widget = <a class="code" href="remmina__file__editor_8c.html#aa5c50852f8569f075eec5d5db30c2ebf">remmina_file_editor_new_copy</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (widget) {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  g_signal_connect(G_OBJECT(widget), <span class="stringliteral">"destroy"</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>  gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  }</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <a class="code" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> </div><div class="line"><a name="l00942"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc"> 942</a></span> <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> {</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  GtkWidget *widget;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> </div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <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-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  && (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  || <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"profile-lock"</span>, FALSE))</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> </div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <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>  remminafile = NULL;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> </div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  widget = <a class="code" href="remmina__file__editor_8c.html#aa9345cfe3fb32d326b652e96ee55eaea">remmina_file_editor_new_from_filename</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (widget) {</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  gtk_window_set_transient_for(GTK_WINDOW(widget), remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  }</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> <span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <a class="code" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> </div><div class="line"><a name="l00973"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a10e574723222f5df9db456977e62a093"> 973</a></span> <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> {</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  GtkWidget *dialog;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> </div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <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-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="keywordflow">if</span> (((<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"lock_edit"</span>)</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  && <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>))</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  || <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"profile-lock"</span>, FALSE))</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> </div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <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>  remminafile = NULL;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  }</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> </div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  dialog = gtk_message_dialog_new(remminamain-><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>  _(<span class="stringliteral">"Are you sure you want to delete “%s”?"</span>), remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  gchar *delfilename = g_strdup(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  g_free(delfilename), delfilename = NULL;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <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>  <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>  }</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  gtk_widget_destroy(dialog);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <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> }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div><div class="line"><a name="l01007"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1e8b7e8c0f7a47dc0409ae6eb18cfc6a"> 1007</a></span> <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> {</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  GVariant *v = g_variant_new(<span class="stringliteral">"i"</span>, 0);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <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> }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92"> 1015</a></span> <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> {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  GtkSettings *settings;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> </div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  REMMINA_DEBUG(<span class="stringliteral">"Opening the preferences"</span>);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  gint32 tab_num;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  REMMINA_DEBUG(<span class="stringliteral">"Parameter passed to preferences of type %s"</span>, g_variant_get_type_string(param));</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  tab_num = g_variant_get_int32(param);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  REMMINA_DEBUG(<span class="stringliteral">"We got a parameter for the preferences: %d"</span>, tab_num);</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  tab_num = 0;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  }</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"use_primary_password"</span>)</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  && <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(remminamain-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  GtkWidget *widget = <a class="code" href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a>(tab_num, remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> </div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  gtk_widget_show_all(widget);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <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>  settings = gtk_settings_get_default();</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  g_object_set(settings, <span class="stringliteral">"gtk-application-prefer-dark-theme"</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> }</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> </div><div class="line"><a name="l01043"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1"> 1043</a></span> <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> {</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  g_autoptr(GError) error = NULL;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  GDesktopAppInfo *desktop_info;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  GAppInfo *info = NULL;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  g_autofree gchar *<span class="keywordtype">id</span> = g_strconcat(REMMINA_APP_ID, <span class="stringliteral">".desktop"</span>, NULL);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> </div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  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>  <span class="keywordflow">if</span> (!desktop_info)</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> </div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  info = G_APP_INFO(desktop_info);</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> </div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <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>  <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], &error))</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  g_warning(<span class="stringliteral">"Failed to set '%s' as the default application for secondary content type '%s': %s"</span>,</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  g_app_info_get_name(info), <a class="code" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">supported_mime_types</a>[i], error->message);</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  g_debug(<span class="stringliteral">"Set '%s' as the default application for '%s'"</span>,</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  g_app_info_get_name(info),</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <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>  }</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> </div><div class="line"><a name="l01069"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a"> 1069</a></span> <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> {</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  g_debug(<span class="stringliteral">"Quit intercept"</span>);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <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> }</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> </div><div class="line"><a name="l01077"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3d60de4c121cae0c82e60b13873073db"> 1077</a></span> <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> {</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</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#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>  <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>  gtk_entry_set_text(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <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>  <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>  }</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> </div><div class="line"><a name="l01087"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20"> 1087</a></span> <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> {</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  GtkWidget *dlg;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  GSList *element;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  gchar *path;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <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>  GString *err;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <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>  gboolean imported;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> </div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  err = g_string_new(NULL);</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  imported = FALSE;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">for</span> (element = files; element; element = element->next) {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  path = (gchar *)element->data;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  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>  <span class="keywordflow">if</span> (plugin && (remminafile = plugin-><a class="code" href="struct___remmina_file_plugin.html#a597178a88c755ebe0614897b7aa279b1">import_func</a>(plugin, path)) != NULL && <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"name"</span>)) {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <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>  <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>  imported = TRUE;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  g_string_append(err, path);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  g_string_append_c(err, <span class="charliteral">'\n'</span>);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  }</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <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>  remminafile = NULL;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  }</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  g_free(path);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  g_slist_free(files);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordflow">if</span> (err->len > 0) {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <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>  dlg = gtk_message_dialog_new(remminamain-><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>  _(<span class="stringliteral">"Unable to import:\n%s"</span>), err->str);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  g_signal_connect(G_OBJECT(dlg), <span class="stringliteral">"response"</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  gtk_widget_show(dlg);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  }</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  g_string_free(err, TRUE);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <span class="keywordflow">if</span> (imported)</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <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> }</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> </div><div class="line"><a name="l01130"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d"> 1130</a></span> <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> {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  GSList *files;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">if</span> (response_id == GTK_RESPONSE_ACCEPT) {</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  files = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <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>  }</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> }</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> </div><div class="line"><a name="l01142"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c"> 1142</a></span> <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> {</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  GtkWidget *dialog;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> </div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  dialog = gtk_file_chooser_dialog_new(_(<span class="stringliteral">"Import"</span>), remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_FILE_CHOOSER_ACTION_OPEN, <span class="stringliteral">"Import"</span>,</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">"response"</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>  gtk_widget_show(dialog);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> }</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> </div><div class="line"><a name="l01154"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d"> 1154</a></span> <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> {</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  GtkWidget *dialog;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> </div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> </div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  remminafile = <a class="code" href="remmina__file_8c.html#ac1cc2d7f827f7d64c7fd3edf10e9383e">remmina_file_load</a>(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  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>  <span class="keywordflow">if</span> (plugin) {</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  dialog = gtk_file_chooser_dialog_new(plugin-><a class="code" href="struct___remmina_file_plugin.html#ac4f2b0118490cede0577aaee9f2e0b5f">export_hints</a>, remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>,</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  GTK_FILE_CHOOSER_ACTION_SAVE, _(<span class="stringliteral">"_Save"</span>), GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <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>  plugin-><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>  gtk_widget_destroy(dialog);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  dialog = gtk_message_dialog_new(remminamain-><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>  _(<span class="stringliteral">"This protocol does not support exporting."</span>));</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">"response"</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  gtk_widget_show(dialog);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  }</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <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> }</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> </div><div class="line"><a name="l01183"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc"> 1183</a></span> <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> {</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <a class="code" href="remmina__plugin__manager_8c.html#aedec4e9cf18d99a559aa51065c2bc276">remmina_plugin_manager_show</a>(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> }</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> </div><div class="line"><a name="l01189"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b"> 1189</a></span> <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> {</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  GtkSettings *settings;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> </div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  settings = gtk_settings_get_default();</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> </div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="keywordflow">if</span> (gtk_switch_get_active(remminamain-><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>  <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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  <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>  <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> </div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  g_object_set(settings, <span class="stringliteral">"gtk-application-prefer-dark-theme"</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> }</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span> </div><div class="line"><a name="l01205"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a"> 1205</a></span> <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> {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  g_app_info_launch_default_for_uri(<span class="stringliteral">"https://www.remmina.org"</span>, NULL, NULL);</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> }</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div><div class="line"><a name="l01211"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0c32fe66988056b353220128611b9116"> 1211</a></span> <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> {</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  g_app_info_launch_default_for_uri(<span class="stringliteral">"https://gitlab.com/Remmina/Remmina/wikis/home"</span>, NULL, NULL);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> }</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> </div><div class="line"><a name="l01217"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32"> 1217</a></span> <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> {</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  g_app_info_launch_default_for_uri(<span class="stringliteral">"https://remmina.org/community"</span>, NULL, NULL);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> }</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> </div><div class="line"><a name="l01223"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277"> 1223</a></span> <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> {</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  g_app_info_launch_default_for_uri(<span class="stringliteral">"https://www.remmina.org/donations"</span>, NULL, NULL);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> }</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> </div><div class="line"><a name="l01229"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc"> 1229</a></span> <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> {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <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> }</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> </div><div class="line"><a name="l01235"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc"> 1235</a></span> <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> {</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <a class="code" href="remmina__about_8c.html#a3ad768979e0945a162018c6d596c90f4">remmina_about_open</a>(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> };</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> </div><div class="line"><a name="l01241"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6"> 1241</a></span> <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> {</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span> (s == NULL)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="keywordflow">while</span> (*s != 0) {</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  s++;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  }</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> }</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> </div><div class="line"><a name="l01253"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a802458852abacebfb16f1f4295806a01"> 1253</a></span> <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> {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  gchar *server;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  gchar *server_trimmed;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  gchar *qcp;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> </div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> </div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <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>  qcp = gtk_combo_box_text_get_active_text(remminamain-><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>  <span class="keywordflow">if</span> (qcp && 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>  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>  <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>  <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>  }</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> </div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  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>  server = g_strdup(gtk_entry_get_text(remminamain-><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>  <span class="keywordflow">if</span> (g_hostname_to_ascii(server) == NULL)</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="comment">/* If server contain /, e.g. vnc://, it won't connect</span></div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> <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> <span class="comment"> * it'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> <span class="comment"> */</span></div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="keywordflow">if</span> (g_strrstr(server, <span class="stringliteral">"/"</span>) != NULL)</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <span class="comment">//if (g_str_has_suffix (server, "/"))</span></div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <span class="comment">//return FALSE;</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> </div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <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>  server_trimmed = g_strdup(server);</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  g_strstrip(server_trimmed);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  gchar **strings = g_strsplit(server_trimmed, <span class="stringliteral">":"</span>, 2);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> </div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  <span class="keywordflow">if</span> (strings[0] != NULL)</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  <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>  g_stpcpy(server, server_trimmed);</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> </div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"sound"</span>, <span class="stringliteral">"off"</span>);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"server"</span>, server);</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"name"</span>, server);</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"protocol"</span>, qcp);</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  g_free(server);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  g_free(server_trimmed);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  g_free(qcp);</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> </div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <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> </div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> }</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span> </div><div class="line"><a name="l01307"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a210e9e04c7c97cc86412044de31f659d"> 1307</a></span> 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> {</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE)</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> }</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> </div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> <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> <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> {</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordflow">if</span> (gtk_entry_get_text(remminamain-><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>  gtk_editable_select_region(GTK_EDITABLE(remminamain-><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> }</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div><div class="line"><a name="l01322"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a"> 1322</a></span> <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> {</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  gtk_tree_view_collapse_all(remminamain-><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> }</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> </div><div class="line"><a name="l01328"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a"> 1328</a></span> <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> {</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  REMMINA_DEBUG(<span class="stringliteral">"Search toggle triggered"</span>);</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  gboolean toggle_status = gtk_toggle_button_get_active(remminamain-><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> </div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  gtk_search_bar_set_search_mode(remminamain-><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>  <span class="keywordflow">if</span> (toggle_status) {</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  REMMINA_DEBUG(<span class="stringliteral">"Search toggle is active"</span>);</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  gtk_widget_grab_focus(GTK_WIDGET(remminamain-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  REMMINA_DEBUG(<span class="stringliteral">"Search toggle is not active, focus is tree_files_list"</span>);</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  gtk_widget_grab_focus(GTK_WIDGET(remminamain-><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>  }</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> }</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> </div><div class="line"><a name="l01344"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf"> 1344</a></span> <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> {</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remminamain-><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> }</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span> </div><div class="line"><a name="l01350"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8"> 1350</a></span> <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> {</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  gtk_tree_view_expand_all(remminamain-><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> }</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> </div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> <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> <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> {</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> <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>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  <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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</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="l01369"></a><span class="lineno"> 1369</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  }</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  }</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> }</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> </div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> <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> 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> {</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  <span class="keywordflow">if</span> (event->button == MOUSE_BUTTON_RIGHT) {</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE)</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> <span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  gtk_menu_popup_at_pointer(GTK_MENU(remminamain-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  gtk_menu_popup(remminamain-><a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>, NULL, NULL, NULL, NULL, event->button, event->time);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  }</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> }</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span> </div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> <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> 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> {</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  <span class="keywordflow">if</span> (event->keyval == GDK_KEY_Menu) {</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> <span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>  gtk_menu_popup_at_widget(GTK_MENU(remminamain-><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>  GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER,</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  (GdkEvent *)event);</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  gtk_menu_popup(remminamain-><a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>, NULL, NULL, NULL, NULL, 0, event->time);</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  }</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> }</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> </div><div class="line"><a name="l01405"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f"> 1405</a></span> <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> {</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  <span class="keywordflow">if</span> (icon_pos == GTK_ENTRY_ICON_SECONDARY)</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  gtk_entry_set_text(entry, <span class="stringliteral">""</span>);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> }</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> </div><div class="line"><a name="l01412"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1cac4199e40e35bf3fcdb98841615657"> 1412</a></span> <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> {</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  <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>  <span class="keywordflow">if</span> (gtk_entry_get_text_length(remminamain-><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>  <span class="keywordflow">if</span> (GTK_IS_TREE_STORE(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  }</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <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>  }</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  }</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> }</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> </div><div class="line"><a name="l01432"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#adf073486149762f547504020484bff70"> 1432</a></span> <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>  GtkSelectionData *data, guint info, guint time, gpointer user_data)</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> {</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  gchar **uris;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  GSList *files = NULL;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  gint i;</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span> </div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  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>  <span class="keywordflow">for</span> (i = 0; uris[i]; i++) {</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  <span class="keywordflow">if</span> (strncmp(uris[i], <span class="stringliteral">"file://"</span>, 7) != 0)</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  files = g_slist_append(files, g_strdup(uris[i] + 7));</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  }</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  g_strfreev(uris);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  <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> }</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> </div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> <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> <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> {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  <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>  GtkWidget *menuitem = gtk_menu_item_new_with_label(plugin-><a class="code" href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">description</a>);</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  gtk_widget_show(menuitem);</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  gtk_menu_shell_append(GTK_MENU_SHELL(remminamain-><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>  g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">"activate"</span>, G_CALLBACK(tool_plugin-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> }</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> </div><div class="line"><a name="l01463"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79"> 1463</a></span> 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> {</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> }</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> </div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> <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> <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> {</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  <span class="keywordtype">int</span> i, qcp_idx, qcp_actidx;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  <span class="keywordtype">char</span> *name;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>  GtkSettings *settings;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> </div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  REMMINA_DEBUG(<span class="stringliteral">"Initializing the Remmina main window"</span>);</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  <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>  settings = gtk_settings_get_default();</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  g_object_set(settings, <span class="stringliteral">"gtk-application-prefer-dark-theme"</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> </div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  REMMINA_DEBUG (<span class="stringliteral">"Initializing monitor"</span>);</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  remminamain-><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> </div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE)</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>  gtk_window_set_title(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, _(<span class="stringliteral">"Remmina Remote Desktop Client"</span>));</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  gtk_window_set_title(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, _(<span class="stringliteral">"Remmina Kiosk"</span>));</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == FALSE) {</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  gtk_window_set_default_size(remminamain-><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>  <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>  gtk_window_maximize(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  }</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  <span class="comment">/* Honor global preferences Search Bar visibility */</span></div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</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#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a>)</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"search_toggle"</span>)), FALSE);</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> </div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  <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>  <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> </div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  <span class="comment">/* Add available quick connect protocols to remminamain->combo_quick_connect_protocol */</span></div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  qcp_idx = qcp_actidx = 0;</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  <span class="keywordflow">for</span> (i = 0; i < <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>  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>  <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>  gtk_combo_box_text_append(remminamain-><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>  <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 && 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>  qcp_actidx = qcp_idx;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>  qcp_idx++;</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>  }</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>  }</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  gtk_combo_box_set_active(GTK_COMBO_BOX(remminamain-><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> </div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  <span class="comment">/* Connect the group accelerators to the GtkWindow */</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>  <span class="comment">//gtk_window_add_accel_group(remminamain->window, remminamain->accelgroup_shortcuts);</span></div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>  <span class="comment">/* Set the Quick Connection */</span></div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  gtk_entry_set_activates_default(remminamain-><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>  <span class="comment">/* Set the TreeView for the files list */</span></div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  gtk_tree_selection_set_select_function(</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>  gtk_tree_view_get_selection(remminamain-><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>  <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>  gtk_tree_view_set_search_entry(remminamain-><a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, GTK_ENTRY(remminamain-><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>  <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>  gtk_widget_grab_focus(GTK_WIDGET(remminamain-><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>  <span class="comment">/* Load the files list */</span></div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>  <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> </div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>  <span class="comment">/* Drag-n-drop support */</span></div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>  gtk_drag_dest_set(GTK_WIDGET(remminamain-><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> </div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>  <span class="comment">/* Finish initialization */</span></div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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> </div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>  <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>  g_object_set_data(G_OBJECT(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), <span class="stringliteral">"tag"</span>, <span class="stringliteral">"remmina-main-window"</span>);</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>));</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> }</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> </div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> <span class="comment">/* Signal handler for "show" on remminamain->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> <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> {</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span> <span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span> }</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> </div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> <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> 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> {</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  GSimpleActionGroup *actions;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  GtkAccelGroup *accel_group = NULL;</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> </div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>  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>  remminamain-><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>  <span class="comment">/* Assign UI widgets to the private members */</span></div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  remminamain-><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">"/org/remmina/Remmina/src/../data/ui/remmina_main.glade"</span>);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a> = GTK_WINDOW(RM_GET_OBJECT(<span class="stringliteral">"RemminaMain"</span>));</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE) {</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  gtk_window_set_position(remminamain-><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>  gtk_window_set_default_size(remminamain-><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>  gtk_window_set_resizable(remminamain-><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>  }</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>  <span class="comment">/* New Button */</span></div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  remminamain-><a class="code" href="struct___remmina_main.html#a4db5c4960c9dbe3e798528bacb31456e">button_new</a> = GTK_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"button_new"</span>));</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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>  <span class="comment">/* Search bar */</span></div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>  remminamain-><a class="code" href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72">search_toggle</a> = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"search_toggle"</span>));</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  remminamain-><a class="code" href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd">search_bar</a> = GTK_SEARCH_BAR(RM_GET_OBJECT(<span class="stringliteral">"search_bar"</span>));</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  <span class="comment">/* view mode list/tree */</span></div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  remminamain-><a class="code" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">view_toggle_button</a> = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"view_toggle_button"</span>));</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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> </div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <span class="comment">/* Menu widgets */</span></div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  remminamain-><a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a> = GTK_MENU(RM_GET_OBJECT(<span class="stringliteral">"menu_popup"</span>));</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  remminamain-><a class="code" href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec">menu_header_button</a> = GTK_MENU_BUTTON(RM_GET_OBJECT(<span class="stringliteral">"menu_header_button"</span>));</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  remminamain-><a class="code" href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62">menu_popup_full</a> = GTK_MENU(RM_GET_OBJECT(<span class="stringliteral">"menu_popup_full"</span>));</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE) {</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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>  }</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  <span class="comment">/* View mode radios */</span></div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  remminamain-><a class="code" href="struct___remmina_main.html#a6288ed69d372d1047ce94c74e77e0fd4">menuitem_view_mode_list</a> = GTK_RADIO_MENU_ITEM(RM_GET_OBJECT(<span class="stringliteral">"menuitem_view_mode_list"</span>));</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  remminamain-><a class="code" href="struct___remmina_main.html#a670425eaf7430854a172ee0f41c4e5e0">menuitem_view_mode_tree</a> = GTK_RADIO_MENU_ITEM(RM_GET_OBJECT(<span class="stringliteral">"menuitem_view_mode_tree"</span>));</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  <span class="comment">/* Quick connect objects */</span></div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  remminamain-><a class="code" href="struct___remmina_main.html#a7b03d239c21141a202d0698492cfae95">box_quick_connect</a> = GTK_BOX(RM_GET_OBJECT(<span class="stringliteral">"box_quick_connect"</span>));</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  remminamain-><a class="code" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">combo_quick_connect_protocol</a> = GTK_COMBO_BOX_TEXT(RM_GET_OBJECT(<span class="stringliteral">"combo_quick_connect_protocol"</span>));</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> && <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  gtk_widget_set_sensitive(GTK_WIDGET(remminamain-><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>  remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a> = GTK_ENTRY(RM_GET_OBJECT(<span class="stringliteral">"entry_quick_connect_server"</span>));</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  <span class="comment">/* Other widgets */</span></div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>  remminamain-><a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a> = GTK_TREE_VIEW(RM_GET_OBJECT(<span class="stringliteral">"tree_files_list"</span>));</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>  remminamain-><a class="code" href="struct___remmina_main.html#aa2b3c232b59da2278215d446b93db0e5">column_files_list_name</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_name"</span>));</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  remminamain-><a class="code" href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc">column_files_list_group</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_group"</span>));</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  remminamain-><a class="code" href="struct___remmina_main.html#a7db532834f4fd6360956cb0e2383b0fb">column_files_list_server</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_server"</span>));</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>  remminamain-><a class="code" href="struct___remmina_main.html#a8e21f782dd6e0a6d80f0f622898b2a48">column_files_list_plugin</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_plugin"</span>));</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>  remminamain-><a class="code" href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a">column_files_list_date</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_date"</span>));</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  remminamain-><a class="code" href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9">column_files_list_notes</a> = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT(<span class="stringliteral">"column_files_list_notes"</span>));</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>  gtk_tree_view_column_set_fixed_width(remminamain-><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>  remminamain-><a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a> = GTK_STATUSBAR(RM_GET_OBJECT(<span class="stringliteral">"statusbar_main"</span>));</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>  <span class="comment">/* signals */</span></div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  g_signal_connect(remminamain-><a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>, <span class="stringliteral">"key-release-event"</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>  g_signal_connect(remminamain-><a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>, <span class="stringliteral">"row-activated"</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>  <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  actions = g_simple_action_group_new();</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  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-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>  gtk_widget_insert_action_group(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), <span class="stringliteral">"app"</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>  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-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>  gtk_widget_insert_action_group(GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>), <span class="stringliteral">"main"</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  g_object_unref(actions);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  <span class="comment">/* Accelerators */</span></div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>  accel_group = gtk_accel_group_new();</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>  gtk_window_add_accel_group(remminamain-><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>  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>  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>  <span class="comment">// TODO: This crash remmina because the function doesn't receive the parameter we expect</span></div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>  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>  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>  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>  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> </div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>  <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>  gtk_builder_connect_signals(remminamain-><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>  <span class="comment">/* Initialize the window and load the preferences */</span></div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  <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>  <span class="keywordflow">return</span> GTK_WIDGET(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> }</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> </div><div class="line"><a name="l01634"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a3948142732379a3d165f3b0b4d5f5abc"> 1634</a></span> 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> {</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>)</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>  <span class="keywordflow">if</span> (!remminamain-><a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>  remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a> = GTK_WINDOW(RM_GET_OBJECT(<span class="stringliteral">"RemminaMain"</span>));</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>  <span class="keywordflow">return</span> remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> }</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> </div><div class="line"><a name="l01646"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a"> 1646</a></span> <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> {</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>  <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  <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> }</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> </div><div class="line"><a name="l01653"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589"> 1653</a></span> <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>  GtkWidget *dialog;</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> </div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) {</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  dialog = gtk_message_dialog_new(remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>, GTK_DIALOG_MODAL, msg, buttons, <span class="stringliteral">"%s"</span>, message);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>  gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  gtk_widget_destroy(dialog);</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  }</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> }</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> </div><div class="line"><a name="l01663"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7"> 1663</a></span> <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>  GtkWidget *dialog;</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> </div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  <span class="keywordflow">if</span> (remminamain-><a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) {</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  dialog = gtk_message_dialog_new(remminamain-><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>  message, g_get_application_name());</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  gtk_widget_destroy(dialog);</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>  }</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span> }</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->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->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"> </td></tr> <tr class="memitem:aac0bb51159be042fecab0103e73a54dc"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> -<tr class="memitem:a0b4ec1e78b79adaa180a385ac50c20d6"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> <tr class="memitem:a05dbb6ce820f3a137949b919d0efa6a1"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> <tr class="memitem:abf51d42fa2c5ce84164b5514b4634229"><td class="memItemLeft" align="right" valign="top">void </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">◆ </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 * </td> - <td class="paramname"><em>action</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">GVariant * </td> - <td class="paramname"><em>param</em>, </td> - </tr> - <tr> - <td class="paramkey"></td> - <td></td> - <td class="paramtype">gpointer </td> - <td class="paramname"><em>data</em> </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->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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="remmina__file_8h.html">remmina_file.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="remmina__monitor_8h.html">remmina_monitor.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "<a class="code" href="remmina__string__array_8h.html">remmina_string_array.h</a>"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a49e7c1b5d4dcfd155886e39d78b3d052"> 45</a></span> <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> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct___remmina_main.html"> 47</a></span> <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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  <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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  <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>  <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> } <a class="code" href="remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1">RemminaMain</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html"> 87</a></span> <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>  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>  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>  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> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f"> 92</a></span>  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> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00"> 94</a></span>  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>  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>  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>  <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> };</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> G_BEGIN_DECLS</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <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> 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> <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> 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> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <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> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <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> <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> <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> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> 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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="remmina__file_8h.html">remmina_file.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="remmina__monitor_8h.html">remmina_monitor.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "<a class="code" href="remmina__string__array_8h.html">remmina_string_array.h</a>"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a49e7c1b5d4dcfd155886e39d78b3d052"> 45</a></span> <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> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct___remmina_main.html"> 47</a></span> <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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  <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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  <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>  <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> } <a class="code" href="remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1">RemminaMain</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html"> 87</a></span> <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>  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>  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>  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> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f"> 92</a></span>  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> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00"> 94</a></span>  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>  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>  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>  <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> };</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> G_BEGIN_DECLS</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <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> 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> <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> 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> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <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> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <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> <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> <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> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> 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->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->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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <sys/time.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <sys/utsname.h></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <glib/gstdio.h></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <gdk/gdkkeysyms.h></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__string__array_8h.html">remmina_string_array.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a316f4290c083d28bd3492ee979278290"> 57</a></span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a> = <span class="stringliteral">"640x480,800x600,1024x768,1152x864,1280x960,1400x1050"</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd"> 58</a></span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd">default_keystrokes</a> = <span class="stringliteral">"Send hello world§hello world\\n"</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743"> 60</a></span> 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> <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> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <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> <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">"# Please check gdk/gdkkeysyms.h for a full list of all key names or hex key values\n"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="stringliteral">"[Map Meta Keys]\n"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="stringliteral">"Super_L = Meta_L\n"</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="stringliteral">"Super_R = Meta_R\n"</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="stringliteral">"Meta_L = Super_L\n"</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="stringliteral">"Meta_R = Super_R\n"</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#afc609e167e078f1991320f79e9f9157c"> 72</a></span> <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> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  guchar s[32];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  gint i;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  g_autofree gchar *content = NULL;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  gsize length;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">for</span> (i = 0; i < 32; i++)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  s[i] = (guchar)(randombytes_uniform(257));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <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> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</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="l00087"></a><span class="lineno"> 87</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"secret"</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>  content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</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="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3"> 94</a></span> <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> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  guint k;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (!str)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  k = gdk_keyval_from_name(str);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (!k)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (sscanf(str, <span class="stringliteral">"%x"</span>, &k) < 1)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  k = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> k;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#aed7f3859d4306419932df15131987355"> 109</a></span> <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> {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  gchar **groups;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  gchar **gptr;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  gchar **keys;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  gchar **kptr;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  gsize nkeys;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  g_autofree gchar *value = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  guint *table;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  guint *tableptr;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  guint k1, k2;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <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>  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>  <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> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <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>  <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>  NULL)) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  g_print(<span class="stringliteral">"Failed to initialize keymap table\n"</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  groups = g_key_file_get_groups(gkeyfile, NULL);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  gptr = groups;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">while</span> (*gptr) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  keys = g_key_file_get_keys(gkeyfile, *gptr, &nkeys, NULL);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  table = g_new0(guint, nkeys * 2 + 1);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  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> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  kptr = keys;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  tableptr = table;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">while</span> (*kptr) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  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>  <span class="keywordflow">if</span> (k1) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  value = g_key_file_get_string(gkeyfile, *gptr, *kptr, NULL);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  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>  *tableptr++ = k1;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  *tableptr++ = k2;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  kptr++;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  g_strfreev(keys);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  gptr++;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  g_strfreev(groups);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81"> 164</a></span> <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> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  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>  <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>  <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> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  g_object_unref(dst);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  g_object_unref(src);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> ok;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ad6424eb32c9549eb3e26f167dc58c218"> 176</a></span> <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> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">const</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> * name;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordtype">char</span> ** setting;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">char</span> * fallback;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  } colors[] = {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  { <span class="stringliteral">"background"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a>, <span class="stringliteral">"#d5ccba"</span> },</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  { <span class="stringliteral">"cursor"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a>, <span class="stringliteral">"#45373c"</span> },</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  { <span class="stringliteral">"cursor_foreground"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a>, <span class="stringliteral">"#d5ccba"</span> },</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  { <span class="stringliteral">"highlight"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a>, <span class="stringliteral">"#45373c"</span> },</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  { <span class="stringliteral">"highlight_foreground"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a>, <span class="stringliteral">"#d5ccba"</span> },</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  { <span class="stringliteral">"colorBD"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a>, <span class="stringliteral">"#45373c"</span> },</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  { <span class="stringliteral">"foreground"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a>, <span class="stringliteral">"#45373c"</span> },</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  { <span class="stringliteral">"color0"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a>, <span class="stringliteral">"#20111b"</span> },</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  { <span class="stringliteral">"color1"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a>, <span class="stringliteral">"#be100e"</span> },</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  { <span class="stringliteral">"color2"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a>, <span class="stringliteral">"#858162"</span> },</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  { <span class="stringliteral">"color3"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a>, <span class="stringliteral">"#eaa549"</span> },</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  { <span class="stringliteral">"color4"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a>, <span class="stringliteral">"#426a79"</span> },</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  { <span class="stringliteral">"color5"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a>, <span class="stringliteral">"#97522c"</span> },</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  { <span class="stringliteral">"color6"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a>, <span class="stringliteral">"#989a9c"</span> },</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  { <span class="stringliteral">"color7"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a>, <span class="stringliteral">"#968c83"</span> },</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  { <span class="stringliteral">"color8"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a>, <span class="stringliteral">"#5e5252"</span> },</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  { <span class="stringliteral">"color9"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a>, <span class="stringliteral">"#be100e"</span> },</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  { <span class="stringliteral">"color10"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a>, <span class="stringliteral">"#858162"</span> },</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  { <span class="stringliteral">"color11"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a>, <span class="stringliteral">"#eaa549"</span> },</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  { <span class="stringliteral">"color12"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a>, <span class="stringliteral">"#426a79"</span> },</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  { <span class="stringliteral">"color13"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a>, <span class="stringliteral">"#97522c"</span> },</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  { <span class="stringliteral">"color14"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a>, <span class="stringliteral">"#989a9c"</span> },</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  { <span class="stringliteral">"color15"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a>, <span class="stringliteral">"#d5ccba"</span> },</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  };</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">for</span> (i = 0; i < (<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>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, colors[i].name, NULL))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  *colors[i].setting = g_key_file_get_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, colors[i].name,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  NULL);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  *colors[i].setting = colors[i].fallback;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a400f7319fd3996a13399ef72bcf0a2fd"> 219</a></span> <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> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  gchar *remmina_dir;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">const</span> gchar *filename = <span class="stringliteral">"remmina.pref"</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">const</span> gchar *colors_filename = <span class="stringliteral">"remmina.colors"</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  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>  GDir *dir;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keyword">const</span> gchar *legacy = <span class="stringliteral">".remmina"</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(), <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">/* Create the XDG_CONFIG_HOME directory */</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  g_mkdir_with_parents(remmina_dir, 0750);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <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> <span class="comment"> * XDG_CONFIG_HOME */</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_home_dir(), legacy, NULL);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <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>  dir = g_dir_open(remmina_dir, 0, NULL);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <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>  g_build_path(<span class="stringliteral">"/"</span>, remmina_dir, filename, NULL),</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="stringliteral">"remmina"</span>, filename, NULL));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">/* /usr/local/etc/remmina */</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <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> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">for</span> (i = 0; dirs[i] != NULL; ++i) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, dirs[i], <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <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>  dir = g_dir_open(remmina_dir, 0, NULL);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <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>  <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>  g_build_path(<span class="stringliteral">"/"</span>, remmina_dir, filename, NULL),</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="stringliteral">"remmina"</span>, filename, NULL));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <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>  <span class="keywordflow">if</span> (remmina_dir != NULL)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a> = g_strdup_printf(<span class="stringliteral">"%s/remmina.pref"</span>, remmina_dir);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">/* remmina.colors */</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  remmina_colors_file = g_strdup_printf(<span class="stringliteral">"%s/%s"</span>, remmina_dir, colors_filename);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743">remmina_keymap_file</a> = g_strdup_printf(<span class="stringliteral">"%s/remmina.keymap"</span>, remmina_dir);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</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="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"save_view_mode"</span>, NULL))</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"save_view_mode"</span>, NULL);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</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> = TRUE;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"confirm_close"</span>, NULL))</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"confirm_close"</span>, NULL);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <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> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <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>  <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> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_master_password"</span>, NULL)) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_master_password"</span>, NULL);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_primary_password"</span>, NULL))</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_primary_password"</span>, NULL);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</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> = FALSE;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_timeout"</span>, NULL))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"unlock_timeout"</span>, NULL);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <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> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_password"</span>, NULL))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"unlock_password"</span>, NULL);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <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">""</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_connect"</span>, NULL))</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"lock_connect"</span>, NULL);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <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> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_edit"</span>, NULL))</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"lock_edit"</span>, NULL);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <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> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"enc_mode"</span>, NULL))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"enc_mode"</span>, NULL);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <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> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"audit"</span>, NULL))</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"audit"</span>, NULL);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <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> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"trust_all"</span>, NULL))</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"trust_all"</span>, NULL);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <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> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_on_auto"</span>, NULL))</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_on_auto"</span>, NULL);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</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> = TRUE;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"floating_toolbar_placement"</span>, NULL))</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"floating_toolbar_placement"</span>, NULL);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</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> = <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> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"prevent_snap_welcome_message"</span>, NULL))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"prevent_snap_welcome_message"</span>, NULL);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</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> = FALSE;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"last_quickconnect_protocol"</span>, NULL))</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</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> = g_key_file_get_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"last_quickconnect_protocol"</span>, NULL);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</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> = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_placement"</span>, NULL))</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"toolbar_placement"</span>, NULL);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <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> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_tab"</span>, NULL))</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_tab"</span>, NULL);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</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> = TRUE;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <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>  <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> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_notes"</span>, NULL))</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_notes"</span>, NULL);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</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> = FALSE;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_connection_toolbar"</span>, NULL))</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>,</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="stringliteral">"hide_connection_toolbar"</span>, NULL);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</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> = FALSE;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <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>  <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> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_searchbar"</span>, NULL))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <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">"remmina_pref"</span>,</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="stringliteral">"hide_searchbar"</span>, NULL);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <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> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <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>  <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> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"default_action"</span>, NULL))</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"default_action"</span>, NULL);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <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> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"scale_quality"</span>, NULL))</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"scale_quality"</span>, NULL);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <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> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_toolbar"</span>, NULL))</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"hide_toolbar"</span>, NULL);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <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> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"small_toolbutton"</span>, NULL))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"small_toolbutton"</span>, NULL);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <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> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"view_file_mode"</span>, NULL))</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"view_file_mode"</span>, NULL);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</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="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"resolutions"</span>, NULL))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"resolutions"</span>, NULL);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <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> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"keystrokes"</span>, NULL))</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"keystrokes"</span>, NULL);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <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> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_width"</span>, NULL))</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"main_width"</span>, NULL));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <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> </div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_height"</span>, NULL))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"main_height"</span>, NULL));</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <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> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_maximize"</span>, NULL))</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"main_maximize"</span>, NULL);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <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> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_column_id"</span>, NULL))</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_column_id"</span>,</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  NULL);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</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> = 1;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_order"</span>, NULL))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_order"</span>, NULL);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</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> = 0;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"expanded_group"</span>, NULL))</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"expanded_group"</span>, NULL);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <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">""</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_pin_down"</span>, NULL))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_pin_down"</span>, NULL);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</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> = FALSE;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_loglevel"</span>, NULL))</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"ssh_loglevel"</span>, NULL);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <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> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"deny_screenshot_clipboard"</span>, NULL))</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"deny_screenshot_clipboard"</span>, NULL);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</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> = TRUE;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"datadir_path"</span>, NULL))</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"datadir_path"</span>, NULL);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <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">""</span>);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"remmina_file_name"</span>, NULL))</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</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> = g_key_file_get_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"remmina_file_name"</span>, NULL);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</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> = g_strdup(<span class="stringliteral">"%G_%P_%N_%h"</span>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"screenshot_path"</span>, NULL)) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"screenshot_path"</span>, NULL);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <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>  <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>  <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>  }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"screenshot_name"</span>, NULL))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"screenshot_name"</span>, NULL);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <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">"remmina_%p_%h_%Y%m%d-%H%M%S"</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_parseconfig"</span>, NULL))</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"ssh_parseconfig"</span>, NULL);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <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> </div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"sshtunnel_port"</span>, NULL))</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"sshtunnel_port"</span>, NULL);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <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> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepidle"</span>, NULL))</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepidle"</span>, NULL);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</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> = SSH_SOCKET_TCP_KEEPIDLE;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepintvl"</span>, NULL))</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepintvl"</span>, NULL);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</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> = SSH_SOCKET_TCP_KEEPINTVL;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepcnt"</span>, NULL))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepcnt"</span>, NULL);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</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> = SSH_SOCKET_TCP_KEEPCNT;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_usrtimeout"</span>, NULL))</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_usrtimeout"</span>, NULL);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</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> = SSH_SOCKET_TCP_USER_TIMEOUT;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_new_ontop"</span>, NULL))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_new_ontop"</span>, NULL);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</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> = FALSE;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_hide_count"</span>, NULL))</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_hide_count"</span>, NULL);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</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> = FALSE;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_enable_avahi"</span>, NULL))</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_enable_avahi"</span>,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  NULL);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</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> = FALSE;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"disable_tray_icon"</span>, NULL))</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"disable_tray_icon"</span>, NULL);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</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> = FALSE;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <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>  <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> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"dark_theme"</span>, NULL))</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"dark_theme"</span>, NULL);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <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> </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"list_refresh_workaround"</span>, NULL))</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"list_refresh_workaround"</span>, NULL);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a> = FALSE;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color_switch"</span>, NULL))</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color_switch"</span>, NULL);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</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> = FALSE;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color"</span>, NULL))</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"grab_color"</span>, NULL);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <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">"#00ff00"</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"recent_maximum"</span>, NULL))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"recent_maximum"</span>, NULL);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <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> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"default_mode"</span>, NULL))</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"default_mode"</span>, NULL);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <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> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <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>  <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> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"tab_mode"</span>, NULL))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"tab_mode"</span>, NULL);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <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> </div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_toolbar_visibility"</span>, NULL))</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_toolbar_visibility"</span>, NULL);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</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> = <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> </div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <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>  <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> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"auto_scroll_step"</span>, NULL))</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"auto_scroll_step"</span>, NULL);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</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> = 10;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hostkey"</span>, NULL))</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"hostkey"</span>, NULL);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <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> </div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_fullscreen"</span>, NULL))</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_fullscreen"</span>,</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  NULL);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <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> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_autofit"</span>, NULL))</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_autofit"</span>,</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  NULL);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <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> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_nexttab"</span>, NULL))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_nexttab"</span>,</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  NULL);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <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> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_prevtab"</span>, NULL))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_prevtab"</span>,</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  NULL);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <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> </div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_scale"</span>, NULL))</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_scale"</span>, NULL);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <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> </div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_viewonly"</span>, NULL))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_viewonly"</span>, NULL);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <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> </div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_multimon"</span>, NULL))</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_multimon"</span>, NULL);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <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> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_grab"</span>, NULL))</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_grab"</span>, NULL);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <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> </div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_minimize"</span>, NULL))</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_minimize"</span>, NULL);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <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> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_screenshot"</span>, NULL))</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_screenshot"</span>, NULL);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <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> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_disconnect"</span>, NULL))</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_disconnect"</span>,</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  NULL);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <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> </div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_toolbar"</span>, NULL))</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_toolbar"</span>,</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  NULL);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <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> </div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"secret"</span>, NULL))</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"secret"</span>, NULL);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</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="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"uid"</span>, NULL))</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"uid"</span>, NULL);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <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> </div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_font"</span>, NULL))</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"vte_font"</span>, NULL);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <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> </div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_allow_bold_text"</span>, NULL))</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_allow_bold_text"</span>,</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  NULL);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</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> = TRUE;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> </div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_lines"</span>, NULL))</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"vte_lines"</span>, NULL);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <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> </div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_copy"</span>, NULL))</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_copy"</span>,</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  NULL);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</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> = GDK_KEY_c;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> </div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_paste"</span>, NULL))</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_paste"</span>,</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  NULL);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</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> = GDK_KEY_v;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> </div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_select_all"</span>, NULL))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_select_all"</span>,</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  NULL);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</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> = GDK_KEY_a;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_increase_font"</span>, NULL))</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_increase_font"</span>,</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  NULL);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</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> = GDK_KEY_Page_Up;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> </div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_decrease_font"</span>, NULL))</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_decrease_font"</span>,</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  NULL);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</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> = GDK_KEY_Page_Down;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_search_text"</span>, NULL))</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_search_text"</span>,</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  NULL);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</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> = GDK_KEY_g;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> </div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> </div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <a class="code" href="remmina__pref_8c.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a>(gkeyfile, &<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> </div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">if</span> (RMNEWS_ENABLE_NEWS == 0)</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</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> = RMNEWS_ENABLE_NEWS;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_news_permitted"</span>, NULL))</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_news_permitted"</span>, NULL);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</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> = RMNEWS_ENABLE_NEWS;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> </div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_rmnews_last_get"</span>, NULL)) {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</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> = g_key_file_get_int64(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_rmnews_last_get"</span>, NULL);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  REMMINA_DEBUG (<span class="stringliteral">"periodic_rmnews_last_get set to %ld"</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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</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> = 0;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  REMMINA_DEBUG (<span class="stringliteral">"periodic_rmnews_last_get set to 0"</span>);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  }</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> </div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_rmnews_get_count"</span>, NULL))</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</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> = g_key_file_get_int64(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_rmnews_get_count"</span>, NULL);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</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> = 0;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> </div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_rmnews_uuid_prefix"</span>, NULL))</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <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">"remmina_news"</span>, <span class="stringliteral">"periodic_rmnews_uuid_prefix"</span>, NULL);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <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> </div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <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> <span class="comment"> * remmina.pref file */</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <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>  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>  g_remove(remmina_colors_file);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="comment">/* Default settings */</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">if</span> (!g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"name"</span>, NULL)) {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"name"</span>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"ignore-tls-errors"</span>, 1);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"enable-plugins"</span>, 1);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <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>  }</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> </div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"> 783</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#a99a34af002da68036758fab3ceb08259">secret</a> == NULL)</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <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> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <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> }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> </div><div class="line"><a name="l00789"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0dd25f5b3a055b936a5fa327bc71f19c"> 789</a></span> 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> {</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <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>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> }</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> </div><div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f"> 799</a></span> 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> {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> </div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <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>  g_debug(<span class="stringliteral">"remmina.pref is not writable, returning"</span>);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  }</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  GError *error = NULL;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  g_autofree gchar *content = NULL;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  gsize length;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> </div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> </div><div class="line"><a name="l00814"></a><span class="lineno"> 814</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="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"datadir_path"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"remmina_file_name"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"screenshot_path"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"screenshot_name"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"deny_screenshot_clipboard"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"save_view_mode"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"confirm_close"</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>  <span class="keywordflow">if</span> (g_key_file_remove_key (gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_master_password"</span>, NULL))</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  REMMINA_DEBUG(<span class="stringliteral">"use_master_password removed…"</span>);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  REMMINA_INFO(<span class="stringliteral">"use_master_password already migrated"</span>);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_primary_password"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_timeout"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_password"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_connect"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_edit"</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> <span class="preprocessor">#else</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_primary_password"</span>, FALSE);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_timeout"</span>, 0);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_password"</span>, g_strdup(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_connect"</span>, FALSE);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_edit"</span>, FALSE);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"enc_mode"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"audit"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"trust_all"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"floating_toolbar_placement"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_placement"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"prevent_snap_welcome_message"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"last_quickconnect_protocol"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_on_auto"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_tab"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_notes"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_connection_toolbar"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_searchbar"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"default_action"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"scale_quality"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_loglevel"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_parseconfig"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_toolbar"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"small_toolbutton"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"view_file_mode"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"resolutions"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"keystrokes"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_width"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_height"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_maximize"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_column_id"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_order"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"expanded_group"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_pin_down"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"sshtunnel_port"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepidle"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepintvl"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepcnt"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_usrtimeout"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_new_ontop"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_hide_count"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_enable_avahi"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"disable_tray_icon"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"dark_theme"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"recent_maximum"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"default_mode"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"tab_mode"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_toolbar_visibility"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"auto_scroll_step"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hostkey"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_fullscreen"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_autofit"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_nexttab"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_prevtab"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_scale"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_grab"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_multimon"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_viewonly"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_screenshot"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_minimize"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_disconnect"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_toolbar"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_copy"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_paste"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_select_all"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_increase_font"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_decrease_font"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_search_text"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_font"</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">""</span>);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color"</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">""</span>);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color_switch"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_allow_bold_text"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_lines"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"background"</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">""</span>);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"cursor"</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">""</span>);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"cursor_foreground"</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">""</span>);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"highlight"</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">""</span>);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"highlight_foreground"</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">""</span>);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"colorBD"</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">""</span>);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"foreground"</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">""</span>);</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color0"</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">""</span>);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color1"</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">""</span>);</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color2"</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">""</span>);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color3"</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">""</span>);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color4"</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">""</span>);</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color5"</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">""</span>);</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color6"</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">""</span>);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color7"</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">""</span>);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color8"</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">""</span>);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color9"</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">""</span>);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color10"</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">""</span>);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color11"</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">""</span>);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color12"</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">""</span>);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color13"</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">""</span>);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color14"</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">""</span>);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color15"</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">""</span>);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_news_permitted"</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>  g_debug(<span class="stringliteral">"(%s) - Setting periodic_rmnews_last_get to %ld"</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>  g_key_file_set_int64(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_rmnews_last_get"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_rmnews_get_count"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_news"</span>, <span class="stringliteral">"periodic_rmnews_uuid_prefix"</span>,</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <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">""</span>);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="comment">/* Default settings */</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"name"</span>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"ignore-tls-errors"</span>, 1);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> </div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, &error);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> </div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">if</span> (error != NULL) {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  g_warning(<span class="stringliteral">"remmina_pref_save error: %s"</span>, error->message);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  g_clear_error(&error);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  }</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> }</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> </div><div class="line"><a name="l00955"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab9e75c6bf39aa93a87d421fc3d742d60"> 955</a></span> <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> {</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <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>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  gchar key[20];</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  g_autofree gchar *val = NULL;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  g_autofree gchar *content = NULL;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  gsize length;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> </div><div class="line"><a name="l00965"></a><span class="lineno"> 965</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#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> <= 0 || server == NULL || server[0] == 0)</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> </div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="comment">/* Load original value into memory */</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</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="l00972"></a><span class="lineno"> 972</span> </div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  g_snprintf(key, <span class="keyword">sizeof</span>(key), <span class="stringliteral">"recent_%s"</span>, protocol);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  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">"remmina_pref"</span>, key, NULL));</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> </div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="comment">/* Add the new value */</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <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>  <span class="keywordflow">while</span> (array->len >= <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>  <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>  <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> </div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="comment">/* Save */</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, val);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> </div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</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="l00988"></a><span class="lineno"> 988</span> </div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> </div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> gchar *</div><div class="line"><a name="l00993"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0208d5dc8197423da67e5967aafb7a05"> 993</a></span> <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> {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  gchar key[20];</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  gchar *val = NULL;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> </div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> </div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</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="l01003"></a><span class="lineno"> 1003</span> </div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  g_snprintf(key, <span class="keyword">sizeof</span>(key), <span class="stringliteral">"recent_%s"</span>, protocol);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  val = g_key_file_get_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, NULL);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> </div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> }</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div><div class="line"><a name="l01012"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14"> 1012</a></span> <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> {</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  gchar **keys;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  gint i;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  g_autofree gchar *content = NULL;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  gsize length;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</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="l01024"></a><span class="lineno"> 1024</span>  keys = g_key_file_get_keys(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, NULL, NULL);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <span class="keywordflow">if</span> (keys) {</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <span class="keywordflow">for</span> (i = 0; keys[i]; i++)</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordflow">if</span> (strncmp(keys[i], <span class="stringliteral">"recent_"</span>, 7) == 0)</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, keys[i], <span class="stringliteral">""</span>);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  g_strfreev(keys);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  }</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> </div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</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="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> }</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div><div class="line"><a name="l01038"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aa263ec4481bcac099b7a294fe42179b9"> 1038</a></span> 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> {</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">if</span> (!keymap || keymap[0] == <span class="charliteral">'\0'</span>)</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> </div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <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> }</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div><div class="line"><a name="l01048"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8"> 1048</a></span> 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> {</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  guint *table;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  gint i;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> </div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keywordflow">if</span> (!keymap || keymap[0] == <span class="charliteral">'\0'</span>)</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">return</span> keyval;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  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>  <span class="keywordflow">if</span> (!table)</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">return</span> keyval;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keywordflow">for</span> (i = 0; table[i] > 0; i += 2)</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keywordflow">if</span> (table[i] == keyval)</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">return</span> table[i + 1];</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <span class="keywordflow">return</span> keyval;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> }</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> </div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> gchar **</div><div class="line"><a name="l01067"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a745bbef1d48a7462f8db997821742395"> 1067</a></span> <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> {</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  GList *list;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  guint len;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  gchar **keys;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  guint i;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> </div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  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>  len = g_list_length(list);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  keys = g_new0(gchar *, (len + 1) * 2 + 1);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  keys[0] = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  keys[1] = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <span class="keywordflow">for</span> (i = 0; i < len; i++) {</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  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>  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>  }</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  g_list_free(list);</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> </div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  <span class="keywordflow">return</span> keys;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> }</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> </div><div class="line"><a name="l01090"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a37cd589f00c94cb28eabb1bce4646d0b"> 1090</a></span> 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> {</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="comment">/* Paranoid programming */</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</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#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> < 0)</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <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>  <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> }</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> </div><div class="line"><a name="l01099"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a12e52ee4ab89912280605e36ee069267"> 1099</a></span> 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> {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <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> }</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> </div><div class="line"><a name="l01105"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a98b783e4c5c1dae695fe554f52f94a23"> 1105</a></span> 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> {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <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> }</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> </div><div class="line"><a name="l01111"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99"> 1111</a></span> 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> {</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <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> }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> </div><div class="line"><a name="l01117"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be"> 1117</a></span> 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> {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <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> }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> </div><div class="line"><a name="l01123"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414"> 1123</a></span> 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> {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <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> }</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> </div><div class="line"><a name="l01129"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a781431450dfcf639c8dd96701be3795b"> 1129</a></span> 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> {</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <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> }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div><div class="line"><a name="l01135"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a1a695b64e75d6f49de220dc777e57714"> 1135</a></span> 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> {</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <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> }</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> </div><div class="line"><a name="l01141"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4fbb2aff07d1fef416352d8b80d79e02"> 1141</a></span> <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> {</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  gsize length;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> </div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <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>  {</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, value);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  gchar *content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <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>  g_free(content);</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  REMMINA_WARNING (<span class="stringliteral">"Cannot save Remmina preferences"</span>);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  REMMINA_WARNING (<span class="stringliteral">"Key was \"%s\", and value \"%s\""</span>, key, value);</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> </div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  }</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  REMMINA_WARNING (<span class="stringliteral">"Cannot load Remmina preferences file"</span>);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  }</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> }</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> </div><div class="line"><a name="l01165"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6"> 1165</a></span> 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> {</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  gchar *value = NULL;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> </div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</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="l01173"></a><span class="lineno"> 1173</span>  value = g_key_file_get_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, NULL);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> </div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> }</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div><div class="line"><a name="l01179"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a9a8d02227eb703bccc3f9296a5d89d6f"> 1179</a></span> 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> {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  gboolean value;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> </div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</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="l01187"></a><span class="lineno"> 1187</span>  value = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, NULL);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> }</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <sys/time.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <sys/utsname.h></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <glib/gstdio.h></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <gdk/gdkkeysyms.h></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__string__array_8h.html">remmina_string_array.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a316f4290c083d28bd3492ee979278290"> 57</a></span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a> = <span class="stringliteral">"640x480,800x600,1024x768,1152x864,1280x960,1400x1050"</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd"> 58</a></span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd">default_keystrokes</a> = <span class="stringliteral">"Send hello world§hello world\\n"</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743"> 60</a></span> 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> <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> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <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> <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">"# Please check gdk/gdkkeysyms.h for a full list of all key names or hex key values\n"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="stringliteral">"[Map Meta Keys]\n"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="stringliteral">"Super_L = Meta_L\n"</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="stringliteral">"Super_R = Meta_R\n"</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="stringliteral">"Meta_L = Super_L\n"</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="stringliteral">"Meta_R = Super_R\n"</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#afc609e167e078f1991320f79e9f9157c"> 72</a></span> <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> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  guchar s[32];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  gint i;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  g_autofree gchar *content = NULL;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  gsize length;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">for</span> (i = 0; i < 32; i++)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  s[i] = (guchar)(randombytes_uniform(257));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <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> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</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="l00087"></a><span class="lineno"> 87</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"secret"</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>  content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</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="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3"> 94</a></span> <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> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  guint k;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (!str)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  k = gdk_keyval_from_name(str);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (!k)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (sscanf(str, <span class="stringliteral">"%x"</span>, &k) < 1)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  k = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> k;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#aed7f3859d4306419932df15131987355"> 109</a></span> <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> {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  gchar **groups;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  gchar **gptr;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  gchar **keys;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  gchar **kptr;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  gsize nkeys;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  g_autofree gchar *value = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  guint *table;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  guint *tableptr;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  guint k1, k2;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <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>  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>  <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> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <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>  <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>  NULL)) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  g_print(<span class="stringliteral">"Failed to initialize keymap table\n"</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  groups = g_key_file_get_groups(gkeyfile, NULL);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  gptr = groups;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">while</span> (*gptr) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  keys = g_key_file_get_keys(gkeyfile, *gptr, &nkeys, NULL);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  table = g_new0(guint, nkeys * 2 + 1);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  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> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  kptr = keys;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  tableptr = table;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">while</span> (*kptr) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  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>  <span class="keywordflow">if</span> (k1) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  value = g_key_file_get_string(gkeyfile, *gptr, *kptr, NULL);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  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>  *tableptr++ = k1;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  *tableptr++ = k2;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  kptr++;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  g_strfreev(keys);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  gptr++;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  g_strfreev(groups);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81"> 164</a></span> <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> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  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>  <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>  <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> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  g_object_unref(dst);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  g_object_unref(src);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> ok;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ad6424eb32c9549eb3e26f167dc58c218"> 176</a></span> <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> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">const</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> * name;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordtype">char</span> ** setting;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">char</span> * fallback;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  } colors[] = {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  { <span class="stringliteral">"background"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a>, <span class="stringliteral">"#d5ccba"</span> },</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  { <span class="stringliteral">"cursor"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a>, <span class="stringliteral">"#45373c"</span> },</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  { <span class="stringliteral">"cursor_foreground"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a>, <span class="stringliteral">"#d5ccba"</span> },</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  { <span class="stringliteral">"highlight"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a>, <span class="stringliteral">"#45373c"</span> },</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  { <span class="stringliteral">"highlight_foreground"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a>, <span class="stringliteral">"#d5ccba"</span> },</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  { <span class="stringliteral">"colorBD"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a>, <span class="stringliteral">"#45373c"</span> },</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  { <span class="stringliteral">"foreground"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a>, <span class="stringliteral">"#45373c"</span> },</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  { <span class="stringliteral">"color0"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a>, <span class="stringliteral">"#20111b"</span> },</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  { <span class="stringliteral">"color1"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a>, <span class="stringliteral">"#be100e"</span> },</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  { <span class="stringliteral">"color2"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a>, <span class="stringliteral">"#858162"</span> },</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  { <span class="stringliteral">"color3"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a>, <span class="stringliteral">"#eaa549"</span> },</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  { <span class="stringliteral">"color4"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a>, <span class="stringliteral">"#426a79"</span> },</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  { <span class="stringliteral">"color5"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a>, <span class="stringliteral">"#97522c"</span> },</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  { <span class="stringliteral">"color6"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a>, <span class="stringliteral">"#989a9c"</span> },</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  { <span class="stringliteral">"color7"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a>, <span class="stringliteral">"#968c83"</span> },</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  { <span class="stringliteral">"color8"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a>, <span class="stringliteral">"#5e5252"</span> },</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  { <span class="stringliteral">"color9"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a>, <span class="stringliteral">"#be100e"</span> },</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  { <span class="stringliteral">"color10"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a>, <span class="stringliteral">"#858162"</span> },</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  { <span class="stringliteral">"color11"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a>, <span class="stringliteral">"#eaa549"</span> },</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  { <span class="stringliteral">"color12"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a>, <span class="stringliteral">"#426a79"</span> },</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  { <span class="stringliteral">"color13"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a>, <span class="stringliteral">"#97522c"</span> },</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  { <span class="stringliteral">"color14"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a>, <span class="stringliteral">"#989a9c"</span> },</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  { <span class="stringliteral">"color15"</span>, &color_pref-><a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a>, <span class="stringliteral">"#d5ccba"</span> },</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  };</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">for</span> (i = 0; i < (<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>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, colors[i].name, NULL))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  *colors[i].setting = g_key_file_get_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, colors[i].name,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  NULL);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  *colors[i].setting = colors[i].fallback;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a400f7319fd3996a13399ef72bcf0a2fd"> 219</a></span> <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> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  gchar *remmina_dir;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">const</span> gchar *filename = <span class="stringliteral">"remmina.pref"</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">const</span> gchar *colors_filename = <span class="stringliteral">"remmina.colors"</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  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>  GDir *dir;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keyword">const</span> gchar *legacy = <span class="stringliteral">".remmina"</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(), <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">/* Create the XDG_CONFIG_HOME directory */</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  g_mkdir_with_parents(remmina_dir, 0750);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <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> <span class="comment"> * XDG_CONFIG_HOME */</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_home_dir(), legacy, NULL);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <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>  dir = g_dir_open(remmina_dir, 0, NULL);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <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>  g_build_path(<span class="stringliteral">"/"</span>, remmina_dir, filename, NULL),</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="stringliteral">"remmina"</span>, filename, NULL));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">/* /usr/local/etc/remmina */</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <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> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">for</span> (i = 0; dirs[i] != NULL; ++i) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, dirs[i], <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <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>  dir = g_dir_open(remmina_dir, 0, NULL);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <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>  <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>  g_build_path(<span class="stringliteral">"/"</span>, remmina_dir, filename, NULL),</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="stringliteral">"remmina"</span>, filename, NULL));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <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>  <span class="keywordflow">if</span> (remmina_dir != NULL)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a> = g_strdup_printf(<span class="stringliteral">"%s/remmina.pref"</span>, remmina_dir);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">/* remmina.colors */</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  remmina_colors_file = g_strdup_printf(<span class="stringliteral">"%s/%s"</span>, remmina_dir, colors_filename);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743">remmina_keymap_file</a> = g_strdup_printf(<span class="stringliteral">"%s/remmina.keymap"</span>, remmina_dir);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</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="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"save_view_mode"</span>, NULL))</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"save_view_mode"</span>, NULL);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</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> = TRUE;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"confirm_close"</span>, NULL))</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"confirm_close"</span>, NULL);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <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> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <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>  <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> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_master_password"</span>, NULL)) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_master_password"</span>, NULL);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_primary_password"</span>, NULL))</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_primary_password"</span>, NULL);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</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> = FALSE;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_timeout"</span>, NULL))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"unlock_timeout"</span>, NULL);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <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> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_password"</span>, NULL))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"unlock_password"</span>, NULL);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <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">""</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_connect"</span>, NULL))</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"lock_connect"</span>, NULL);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <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> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_edit"</span>, NULL))</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"lock_edit"</span>, NULL);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <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> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"enc_mode"</span>, NULL))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"enc_mode"</span>, NULL);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <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> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"audit"</span>, NULL))</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"audit"</span>, NULL);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <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> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"trust_all"</span>, NULL))</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"trust_all"</span>, NULL);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <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> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_on_auto"</span>, NULL))</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_on_auto"</span>, NULL);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</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> = TRUE;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"floating_toolbar_placement"</span>, NULL))</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"floating_toolbar_placement"</span>, NULL);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</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> = <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> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"prevent_snap_welcome_message"</span>, NULL))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"prevent_snap_welcome_message"</span>, NULL);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</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> = FALSE;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"last_quickconnect_protocol"</span>, NULL))</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</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> = g_key_file_get_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"last_quickconnect_protocol"</span>, NULL);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</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> = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_placement"</span>, NULL))</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"toolbar_placement"</span>, NULL);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <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> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_tab"</span>, NULL))</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_tab"</span>, NULL);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</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> = TRUE;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <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>  <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> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_notes"</span>, NULL))</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_notes"</span>, NULL);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</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> = FALSE;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_connection_toolbar"</span>, NULL))</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>,</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="stringliteral">"hide_connection_toolbar"</span>, NULL);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</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> = FALSE;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <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>  <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> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_searchbar"</span>, NULL))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <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">"remmina_pref"</span>,</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="stringliteral">"hide_searchbar"</span>, NULL);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <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> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <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>  <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> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"default_action"</span>, NULL))</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"default_action"</span>, NULL);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <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> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"scale_quality"</span>, NULL))</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"scale_quality"</span>, NULL);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <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> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_toolbar"</span>, NULL))</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"hide_toolbar"</span>, NULL);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <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> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"small_toolbutton"</span>, NULL))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"small_toolbutton"</span>, NULL);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <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> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"view_file_mode"</span>, NULL))</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"view_file_mode"</span>, NULL);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</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="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"resolutions"</span>, NULL))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"resolutions"</span>, NULL);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <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> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"keystrokes"</span>, NULL))</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"keystrokes"</span>, NULL);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <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> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_width"</span>, NULL))</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"main_width"</span>, NULL));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <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> </div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_height"</span>, NULL))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"main_height"</span>, NULL));</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <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> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_maximize"</span>, NULL))</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"main_maximize"</span>, NULL);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <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> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_column_id"</span>, NULL))</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_column_id"</span>,</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  NULL);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</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> = 1;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_order"</span>, NULL))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_order"</span>, NULL);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</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> = 0;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"expanded_group"</span>, NULL))</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"expanded_group"</span>, NULL);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <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">""</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_pin_down"</span>, NULL))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_pin_down"</span>, NULL);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</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> = FALSE;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_loglevel"</span>, NULL))</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"ssh_loglevel"</span>, NULL);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <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> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"deny_screenshot_clipboard"</span>, NULL))</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"deny_screenshot_clipboard"</span>, NULL);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</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> = TRUE;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"datadir_path"</span>, NULL))</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"datadir_path"</span>, NULL);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <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">""</span>);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"remmina_file_name"</span>, NULL))</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</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> = g_key_file_get_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"remmina_file_name"</span>, NULL);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</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> = g_strdup(<span class="stringliteral">"%G_%P_%N_%h"</span>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"screenshot_path"</span>, NULL)) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"screenshot_path"</span>, NULL);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <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>  <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>  <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>  }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"screenshot_name"</span>, NULL))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"screenshot_name"</span>, NULL);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <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">"remmina_%p_%h_%Y%m%d-%H%M%S"</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_parseconfig"</span>, NULL))</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"ssh_parseconfig"</span>, NULL);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <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> </div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"sshtunnel_port"</span>, NULL))</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"sshtunnel_port"</span>, NULL);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <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> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepidle"</span>, NULL))</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepidle"</span>, NULL);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</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> = SSH_SOCKET_TCP_KEEPIDLE;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepintvl"</span>, NULL))</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepintvl"</span>, NULL);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</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> = SSH_SOCKET_TCP_KEEPINTVL;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepcnt"</span>, NULL))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepcnt"</span>, NULL);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</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> = SSH_SOCKET_TCP_KEEPCNT;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_usrtimeout"</span>, NULL))</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_usrtimeout"</span>, NULL);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</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> = SSH_SOCKET_TCP_USER_TIMEOUT;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_new_ontop"</span>, NULL))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_new_ontop"</span>, NULL);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</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> = FALSE;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_hide_count"</span>, NULL))</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_hide_count"</span>, NULL);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</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> = FALSE;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_enable_avahi"</span>, NULL))</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_enable_avahi"</span>,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  NULL);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</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> = FALSE;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"disable_tray_icon"</span>, NULL))</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"disable_tray_icon"</span>, NULL);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</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> = FALSE;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <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>  <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> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"dark_theme"</span>, NULL))</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"dark_theme"</span>, NULL);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <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> </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"list_refresh_workaround"</span>, NULL))</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"list_refresh_workaround"</span>, NULL);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a> = FALSE;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color_switch"</span>, NULL))</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color_switch"</span>, NULL);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</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> = FALSE;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color"</span>, NULL))</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"grab_color"</span>, NULL);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <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">"#00ff00"</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"recent_maximum"</span>, NULL))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"recent_maximum"</span>, NULL);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <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> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"default_mode"</span>, NULL))</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"default_mode"</span>, NULL);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <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> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <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>  <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> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"tab_mode"</span>, NULL))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"tab_mode"</span>, NULL);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <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> </div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_toolbar_visibility"</span>, NULL))</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_toolbar_visibility"</span>, NULL);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</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> = <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> </div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <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>  <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> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"auto_scroll_step"</span>, NULL))</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"auto_scroll_step"</span>, NULL);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</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> = 10;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hostkey"</span>, NULL))</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"hostkey"</span>, NULL);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <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> </div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_fullscreen"</span>, NULL))</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_fullscreen"</span>,</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  NULL);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <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> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_autofit"</span>, NULL))</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_autofit"</span>,</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  NULL);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <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> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_nexttab"</span>, NULL))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_nexttab"</span>,</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  NULL);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <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> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_prevtab"</span>, NULL))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_prevtab"</span>,</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  NULL);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <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> </div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_scale"</span>, NULL))</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_scale"</span>, NULL);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <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> </div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_viewonly"</span>, NULL))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_viewonly"</span>, NULL);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <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> </div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_multimon"</span>, NULL))</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_multimon"</span>, NULL);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <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> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_grab"</span>, NULL))</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_grab"</span>, NULL);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <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> </div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_minimize"</span>, NULL))</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_minimize"</span>, NULL);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <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> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_screenshot"</span>, NULL))</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_screenshot"</span>, NULL);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <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> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_disconnect"</span>, NULL))</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_disconnect"</span>,</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  NULL);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <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> </div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_toolbar"</span>, NULL))</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_toolbar"</span>,</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  NULL);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <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> </div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"secret"</span>, NULL))</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"secret"</span>, NULL);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</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="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"uid"</span>, NULL))</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"uid"</span>, NULL);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <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> </div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_font"</span>, NULL))</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"vte_font"</span>, NULL);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <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> </div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_allow_bold_text"</span>, NULL))</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_allow_bold_text"</span>,</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  NULL);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</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> = TRUE;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> </div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_lines"</span>, NULL))</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <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">"remmina_pref"</span>, <span class="stringliteral">"vte_lines"</span>, NULL);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <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> </div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_copy"</span>, NULL))</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_copy"</span>,</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  NULL);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</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> = GDK_KEY_c;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> </div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_paste"</span>, NULL))</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_paste"</span>,</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  NULL);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</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> = GDK_KEY_v;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> </div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_select_all"</span>, NULL))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_select_all"</span>,</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  NULL);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</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> = GDK_KEY_a;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_increase_font"</span>, NULL))</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_increase_font"</span>,</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  NULL);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</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> = GDK_KEY_Page_Up;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> </div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_decrease_font"</span>, NULL))</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_decrease_font"</span>,</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  NULL);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</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> = GDK_KEY_Page_Down;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_search_text"</span>, NULL))</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_search_text"</span>,</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  NULL);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</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> = GDK_KEY_g;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> </div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> </div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <a class="code" href="remmina__pref_8c.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a>(gkeyfile, &<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> </div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <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> <span class="comment"> * remmina.pref file */</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <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>  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>  g_remove(remmina_colors_file);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="comment">/* Default settings */</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">if</span> (!g_key_file_has_key(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"name"</span>, NULL)) {</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"name"</span>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"ignore-tls-errors"</span>, 1);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"enable-plugins"</span>, 1);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <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>  }</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> </div><div class="line"><a name="l00754"></a><span class="lineno"> 754</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#a99a34af002da68036758fab3ceb08259">secret</a> == NULL)</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <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> </div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <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> }</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div><div class="line"><a name="l00760"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0dd25f5b3a055b936a5fa327bc71f19c"> 760</a></span> 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> {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <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>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> </div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f"> 770</a></span> 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> {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> </div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <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>  g_debug(<span class="stringliteral">"remmina.pref is not writable, returning"</span>);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  }</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  GError *error = NULL;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  g_autofree gchar *content = NULL;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  gsize length;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> </div><div class="line"><a name="l00785"></a><span class="lineno"> 785</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="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"datadir_path"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"remmina_file_name"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"screenshot_path"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"screenshot_name"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"deny_screenshot_clipboard"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"save_view_mode"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"confirm_close"</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>  <span class="keywordflow">if</span> (g_key_file_remove_key (gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_master_password"</span>, NULL))</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  REMMINA_DEBUG(<span class="stringliteral">"use_master_password removed…"</span>);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  REMMINA_INFO(<span class="stringliteral">"use_master_password already migrated"</span>);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_primary_password"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_timeout"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_password"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_connect"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_edit"</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> <span class="preprocessor">#else</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"use_primary_password"</span>, FALSE);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_timeout"</span>, 0);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"unlock_password"</span>, g_strdup(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_connect"</span>, FALSE);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"lock_edit"</span>, FALSE);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"enc_mode"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"audit"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"trust_all"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"floating_toolbar_placement"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_placement"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"prevent_snap_welcome_message"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"last_quickconnect_protocol"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_on_auto"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_tab"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"always_show_notes"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_connection_toolbar"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_searchbar"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"default_action"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"scale_quality"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_loglevel"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_parseconfig"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hide_toolbar"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"small_toolbutton"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"view_file_mode"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"resolutions"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"keystrokes"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_width"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_height"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_maximize"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_column_id"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"main_sort_order"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"expanded_group"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"toolbar_pin_down"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"sshtunnel_port"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepidle"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepintvl"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_keepcnt"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"ssh_tcp_usrtimeout"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_new_ontop"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_hide_count"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"applet_enable_avahi"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"disable_tray_icon"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"dark_theme"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"recent_maximum"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"default_mode"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"tab_mode"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"fullscreen_toolbar_visibility"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"auto_scroll_step"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"hostkey"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_fullscreen"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_autofit"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_nexttab"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_prevtab"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_scale"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_grab"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_multimon"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_viewonly"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_screenshot"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_minimize"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_disconnect"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"shortcutkey_toolbar"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_copy"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_paste"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_select_all"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_increase_font"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_decrease_font"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_shortcutkey_search_text"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_font"</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">""</span>);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color"</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">""</span>);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"grab_color_switch"</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>  g_key_file_set_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_allow_bold_text"</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>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, <span class="stringliteral">"vte_lines"</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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"background"</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">""</span>);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"cursor"</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">""</span>);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"cursor_foreground"</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">""</span>);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"highlight"</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">""</span>);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"highlight_foreground"</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">""</span>);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"colorBD"</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">""</span>);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"foreground"</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">""</span>);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color0"</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">""</span>);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color1"</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">""</span>);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color2"</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">""</span>);</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color3"</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">""</span>);</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color4"</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">""</span>);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color5"</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">""</span>);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color6"</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">""</span>);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color7"</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">""</span>);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color8"</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">""</span>);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color9"</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">""</span>);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color10"</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">""</span>);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color11"</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">""</span>);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color12"</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">""</span>);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color13"</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">""</span>);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color14"</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">""</span>);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"ssh_colors"</span>, <span class="stringliteral">"color15"</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">""</span>);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> </div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="comment">/* Default settings */</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"name"</span>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  g_key_file_set_integer(gkeyfile, <span class="stringliteral">"remmina"</span>, <span class="stringliteral">"ignore-tls-errors"</span>, 1);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> </div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, &error);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> </div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">if</span> (error != NULL) {</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  g_warning(<span class="stringliteral">"remmina_pref_save error: %s"</span>, error->message);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  g_clear_error(&error);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  }</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> }</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> </div><div class="line"><a name="l00919"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab9e75c6bf39aa93a87d421fc3d742d60"> 919</a></span> <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> {</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <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>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  gchar key[20];</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  g_autofree gchar *val = NULL;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  g_autofree gchar *content = NULL;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  gsize length;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</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#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> <= 0 || server == NULL || server[0] == 0)</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="comment">/* Load original value into memory */</span></div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> </div><div class="line"><a name="l00935"></a><span class="lineno"> 935</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="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  g_snprintf(key, <span class="keyword">sizeof</span>(key), <span class="stringliteral">"recent_%s"</span>, protocol);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  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">"remmina_pref"</span>, key, NULL));</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> </div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="comment">/* Add the new value */</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <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>  <span class="keywordflow">while</span> (array->len >= <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>  <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>  <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> </div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="comment">/* Save */</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  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>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, val);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> </div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</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="l00952"></a><span class="lineno"> 952</span> </div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> </div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> gchar *</div><div class="line"><a name="l00957"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0208d5dc8197423da67e5967aafb7a05"> 957</a></span> <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> {</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  gchar key[20];</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  gchar *val = NULL;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> </div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> </div><div class="line"><a name="l00966"></a><span class="lineno"> 966</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="l00967"></a><span class="lineno"> 967</span> </div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  g_snprintf(key, <span class="keyword">sizeof</span>(key), <span class="stringliteral">"recent_%s"</span>, protocol);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  val = g_key_file_get_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, NULL);</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> </div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> }</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> </div><div class="line"><a name="l00976"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14"> 976</a></span> <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> {</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  gchar **keys;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  gint i;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  g_autofree gchar *content = NULL;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  gsize length;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> </div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> </div><div class="line"><a name="l00987"></a><span class="lineno"> 987</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="l00988"></a><span class="lineno"> 988</span>  keys = g_key_file_get_keys(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, NULL, NULL);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordflow">if</span> (keys) {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="keywordflow">for</span> (i = 0; keys[i]; i++)</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">if</span> (strncmp(keys[i], <span class="stringliteral">"recent_"</span>, 7) == 0)</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, keys[i], <span class="stringliteral">""</span>);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  g_strfreev(keys);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  }</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> </div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</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="l00998"></a><span class="lineno"> 998</span> </div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> }</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> </div><div class="line"><a name="l01002"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aa263ec4481bcac099b7a294fe42179b9"> 1002</a></span> 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> {</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordflow">if</span> (!keymap || keymap[0] == <span class="charliteral">'\0'</span>)</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> </div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <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> }</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div><div class="line"><a name="l01012"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8"> 1012</a></span> 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> {</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  guint *table;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  gint i;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> </div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">if</span> (!keymap || keymap[0] == <span class="charliteral">'\0'</span>)</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keywordflow">return</span> keyval;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  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>  <span class="keywordflow">if</span> (!table)</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="keywordflow">return</span> keyval;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keywordflow">for</span> (i = 0; table[i] > 0; i += 2)</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <span class="keywordflow">if</span> (table[i] == keyval)</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <span class="keywordflow">return</span> table[i + 1];</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordflow">return</span> keyval;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> }</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> </div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> gchar **</div><div class="line"><a name="l01031"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a745bbef1d48a7462f8db997821742395"> 1031</a></span> <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> {</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  GList *list;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  guint len;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  gchar **keys;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  guint i;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> </div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  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>  len = g_list_length(list);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  keys = g_new0(gchar *, (len + 1) * 2 + 1);</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  keys[0] = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  keys[1] = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">for</span> (i = 0; i < len; i++) {</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  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>  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>  }</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  g_list_free(list);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> </div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">return</span> keys;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> }</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> </div><div class="line"><a name="l01054"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a37cd589f00c94cb28eabb1bce4646d0b"> 1054</a></span> 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> {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="comment">/* Paranoid programming */</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</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#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> < 0)</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <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>  <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> }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div><div class="line"><a name="l01063"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a12e52ee4ab89912280605e36ee069267"> 1063</a></span> 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> {</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <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> }</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> </div><div class="line"><a name="l01069"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a98b783e4c5c1dae695fe554f52f94a23"> 1069</a></span> 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> {</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <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> }</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> </div><div class="line"><a name="l01075"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99"> 1075</a></span> 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> {</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <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> }</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div><div class="line"><a name="l01081"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be"> 1081</a></span> 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> {</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <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> }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> </div><div class="line"><a name="l01087"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414"> 1087</a></span> 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> {</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <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> }</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> </div><div class="line"><a name="l01093"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a781431450dfcf639c8dd96701be3795b"> 1093</a></span> 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> {</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <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> }</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> </div><div class="line"><a name="l01099"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a1a695b64e75d6f49de220dc777e57714"> 1099</a></span> 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> {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <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> }</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> </div><div class="line"><a name="l01105"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4fbb2aff07d1fef416352d8b80d79e02"> 1105</a></span> <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> {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  gsize length;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> </div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <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>  {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  g_key_file_set_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, value);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  gchar *content = g_key_file_to_data(gkeyfile, &length, NULL);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <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>  g_free(content);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  REMMINA_WARNING (<span class="stringliteral">"Cannot save Remmina preferences"</span>);</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  REMMINA_WARNING (<span class="stringliteral">"Key was \"%s\", and value \"%s\""</span>, key, value);</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> </div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  }</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  REMMINA_WARNING (<span class="stringliteral">"Cannot load Remmina preferences file"</span>);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> }</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> </div><div class="line"><a name="l01129"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6"> 1129</a></span> 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> {</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  gchar *value = NULL;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</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="l01137"></a><span class="lineno"> 1137</span>  value = g_key_file_get_string(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, NULL);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> </div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> }</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> </div><div class="line"><a name="l01143"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a9a8d02227eb703bccc3f9296a5d89d6f"> 1143</a></span> 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> {</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  GKeyFile *gkeyfile;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  gboolean value;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> </div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  gkeyfile = g_key_file_new();</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</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="l01151"></a><span class="lineno"> 1151</span>  value = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">"remmina_pref"</span>, key, NULL);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  g_key_file_free(gkeyfile);</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> </div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> }</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <gcrypt.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">/*</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment"> * Remmina Preference Loader</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"> */</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> G_BEGIN_DECLS</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <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>  <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>  <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> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <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>  <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>  <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> };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <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>  <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>  <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> };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <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> <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>  <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <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>  <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>  <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc">FLOATING_TOOLBAR_VISIBILITY_INVISIBLE</a> = 1, <span class="comment">//"Invisible" corresponds to the "Hidden" 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>  <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> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html"> 105</a></span> <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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> } <a class="code" href="remmina__pref_8h.html#a058ab9dfe6100245f7c578c2e41d5970">RemminaColorPref</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html"> 132</a></span> <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>  <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>  <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>  <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>  <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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  <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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  <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>  <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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  <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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <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>  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> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <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>  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> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8"> 233</a></span>  <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> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <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>  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> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <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>  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>  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>  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>  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> } <a class="code" href="remmina__pref_8h.html#a4e34cf29f6a4bff2d79cf621b5370c3b">RemminaPref</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor">#define DEFAULT_SSH_PARSECONFIG TRUE</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor">#define DEFAULT_SSHTUNNEL_PORT 4732</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor">#define DEFAULT_SSH_PORT 22</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor">#define DEFAULT_SSH_LOGLEVEL 1</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="preprocessor">#define SSH_SOCKET_TCP_KEEPIDLE 20</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor">#define SSH_SOCKET_TCP_KEEPINTVL 10</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor">#define SSH_SOCKET_TCP_KEEPCNT 3</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <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> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <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> <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> <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> <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> <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> <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> <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> <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> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <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> 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> 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> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <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> 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> <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> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> 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> 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> 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> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> 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> 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> 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> 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> <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> 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> 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> 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> 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> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <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> 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> 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> </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> 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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <gcrypt.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">/*</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment"> * Remmina Preference Loader</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"> */</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> G_BEGIN_DECLS</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <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>  <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>  <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> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <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>  <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>  <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> };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <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>  <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>  <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> };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <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> <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>  <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <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>  <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>  <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc">FLOATING_TOOLBAR_VISIBILITY_INVISIBLE</a> = 1, <span class="comment">//"Invisible" corresponds to the "Hidden" 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>  <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> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html"> 105</a></span> <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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> } <a class="code" href="remmina__pref_8h.html#a058ab9dfe6100245f7c578c2e41d5970">RemminaColorPref</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html"> 132</a></span> <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>  <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>  <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>  <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>  <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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  <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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  <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>  <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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  <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>  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>  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>  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>  <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>  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>  <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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <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>  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> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <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>  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> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8"> 233</a></span>  <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> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <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>  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> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> } <a class="code" href="remmina__pref_8h.html#a4e34cf29f6a4bff2d79cf621b5370c3b">RemminaPref</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="preprocessor">#define DEFAULT_SSH_PARSECONFIG TRUE</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="preprocessor">#define DEFAULT_SSHTUNNEL_PORT 4732</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor">#define DEFAULT_SSH_PORT 22</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor">#define DEFAULT_SSH_LOGLEVEL 1</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#define SSH_SOCKET_TCP_KEEPIDLE 20</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor">#define SSH_SOCKET_TCP_KEEPINTVL 10</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor">#define SSH_SOCKET_TCP_KEEPCNT 3</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <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> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <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> <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> <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> <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> <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> <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> <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> <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> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <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> 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> 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> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <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> 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> <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> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> 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> 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> 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> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> 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> 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> 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> 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> <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> 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> 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> 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> 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> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <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> 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> 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> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> 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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <vte/vte.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "<a class="code" href="remmina__passwd_8h.html">remmina_passwd.h</a>"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__string__list_8h.html">remmina_string_list.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="remmina__key__chooser_8h.html">remmina_key_chooser.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref__dialog_8h.html">remmina_pref_dialog.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2e3c32df32107ad3f4b9ea85fc001368"> 58</a></span> <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> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#define GET_OBJECT(object_name) gtk_builder_get_object(remmina_pref_dialog->builder, object_name)</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257"> 62</a></span> <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>  { <span class="stringliteral">"close"</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> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <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> <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> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <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> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  g_return_if_fail(GTK_IS_BUTTON(widget));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  arguments = <a class="code" href="remmina__key__chooser_8c.html#a9e8586623c819a2e24b6d7b1d3efde94">remmina_key_chooser_new</a>(GTK_WINDOW(remmina_pref_dialog-><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>  <span class="keywordflow">if</span> (arguments-><a class="code" href="struct___remmina_key_chooser_arguments.html#a2fd9e4d001913994dd7ffee24563bde7">response</a> != GTK_RESPONSE_CANCEL && arguments-><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>  gchar *val = <a class="code" href="remmina__key__chooser_8c.html#a5aba1462f1026818581e91155b12618f">remmina_key_chooser_get_value</a>(arguments-><a class="code" href="struct___remmina_key_chooser_arguments.html#ad6bf8db773a58c4b73ce7902f76a860f">keyval</a>, arguments-><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>  gtk_button_set_label(GTK_BUTTON(widget), val);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  g_free(val);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  g_free(arguments);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <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> <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> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  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> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <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>  <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>  <a class="code" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list_set_titles</a>(_(<span class="stringliteral">"Resolutions"</span>), _(<span class="stringliteral">"Configure the available resolutions"</span>));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog-><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>  gtk_dialog_run(dialog);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  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>  <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>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <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> <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> <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> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  gchar *sourcepath;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  gchar *remmina_dir;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  gchar *destpath;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  GFile *source;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  GFile *destination;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  sourcepath = gtk_file_chooser_get_filename(remmina_pref_dialog-><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>  source = g_file_new_for_path(sourcepath);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(), <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">/* /home/foo/.config/remmina */</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  destpath = g_strdup_printf(<span class="stringliteral">"%s/remmina.colors"</span>, remmina_dir);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  destination = g_file_new_for_path(destpath);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <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>  g_file_copy(source,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  destination,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  G_FILE_COPY_OVERWRITE,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  NULL,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  NULL,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  NULL,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  NULL);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">/* Here we should reinitialize the widget */</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  gtk_file_chooser_set_file(remmina_pref_dialog-><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>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  g_free(sourcepath);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  g_free(remmina_dir);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  g_free(destpath);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  g_object_unref(source);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a470290d26c88259265912a3e0018b662"> 136</a></span> <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> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  GtkDialog *dialog;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <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>  dialog = GTK_DIALOG(gtk_message_dialog_new(GTK_WINDOW(remmina_pref_dialog-><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>  GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  _(<span class="stringliteral">"Recent lists cleared."</span>)));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  gtk_dialog_run(dialog);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <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> <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> {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  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> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <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>  <a class="code" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list_set_titles</a>(_(<span class="stringliteral">"Keystrokes"</span>), _(<span class="stringliteral">"Configure the keystrokes"</span>));</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog-><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>  gtk_dialog_run(dialog);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  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>  <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>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#ad9db3e5d980f28a2764be2ee6db18fef"> 164</a></span> <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> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">//REMMINA_DEBUG ("entry_grab_color %d", gtk_switch_get_active(widget));</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <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> <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> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">//REMMINA_DEBUG ("Use Primary Password %d", gtk_switch_get_active(sw));</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span> (gtk_switch_get_active(sw)) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">//REMMINA_DEBUG ("use_password activated");</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  gchar *unlock_password = NULL;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  unlock_password = g_strdup(<a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="stringliteral">"unlock_password"</span>));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-><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>  <span class="comment">//REMMINA_DEBUG ("Password from preferences is: %s", unlock_password);</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (unlock_password == NULL || unlock_password[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__passwd_8c.html#a03a4dd5860c39db272a9fa913a95caea">remmina_passwd</a> (GTK_WINDOW(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), &unlock_password)) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">//REMMINA_DEBUG ("Password is: %s", unlock_password);</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">"unlock_password"</span>, g_strdup(unlock_password));</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <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">""</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">"unlock_password"</span>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  g_free(unlock_password), unlock_password = NULL;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">//REMMINA_DEBUG ("use_password deactivated");</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-><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>  <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">""</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">"unlock_password"</span>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a722371d3ad01079279d5e86d7c8400e1"> 203</a></span> <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> {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  gtk_widget_destroy(GTK_WIDGET(remmina_pref_dialog-><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>  <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>  GtkSettings *settings = gtk_settings_get_default();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  g_object_set(settings, <span class="stringliteral">"gtk-application-prefer-dark-theme"</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> }</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#adc2763311ece7ab6b505d4ec56391f69"> 212</a></span> <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> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  gtk_widget_destroy(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#ab9776574663e2c3fcb793ec70887336d"> 218</a></span> <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> {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  gboolean b;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  GdkRGBA color;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  gboolean rebuild_remmina_icon = FALSE;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <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-><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>  <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>  <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">""</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</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> = gtk_entry_get_text(remmina_pref_dialog-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  b = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-><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>  <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> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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> <= 0)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <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>  <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-><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>  <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> <= 0)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</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> = SSH_SOCKET_TCP_KEEPIDLE;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</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> = atoi(gtk_entry_get_text(remmina_pref_dialog-><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>  <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> <= 0)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</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> = SSH_SOCKET_TCP_KEEPINTVL;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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> = atoi(gtk_entry_get_text(remmina_pref_dialog-><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>  <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> <= 0)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</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> = SSH_SOCKET_TCP_KEEPCNT;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</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> = atoi(gtk_entry_get_text(remmina_pref_dialog-><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>  <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> <= 0)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</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> = SSH_SOCKET_TCP_USER_TIMEOUT;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <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-><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> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <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-><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>  <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> < 0)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</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> = atoi(gtk_entry_get_text(remmina_pref_dialog-><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>  <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> < 10)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</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> = 10;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <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> > 500)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</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> = 500;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <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-><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>  <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> < 0)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <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> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</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> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  <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-><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>  b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  <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>  <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>  rebuild_remmina_icon = TRUE;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</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> = gtk_switch_get_active(remmina_pref_dialog-><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>  <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-><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> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  <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>  <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>  rebuild_remmina_icon = TRUE;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (b)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  b = FALSE;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  <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> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span> (rebuild_remmina_icon) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <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>  <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>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  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>  <span class="keywordflow">if</span> (gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-><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>  <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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <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-><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>  <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-><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>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>), &color);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>), &color);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), &color);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), &color);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), &color);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), &color);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), &color);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), &color);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), &color);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), &color);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), &color);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), &color);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), &color);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), &color);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), &color);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), &color);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), &color);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), &color);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), &color);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), &color);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), &color);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), &color);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), &color);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <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>  <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> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  remmina_pref_dialog-><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> }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4"> 395</a></span> <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> {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <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>  GtkWidget *vbox;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  GtkWidget *widget;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  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> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  widget = gtk_label_new(pref_plugin-><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>  gtk_widget_set_halign(widget, GTK_ALIGN_END);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  gtk_widget_show(vbox);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  gtk_notebook_append_page(GTK_NOTEBOOK(remmina_pref_dialog-><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> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  widget = pref_plugin-><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>  gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, FALSE, 0);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2d0556c47e16187ea61e70516a6346bc"> 418</a></span> <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> {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a18bfbeb5d049a9f37f7624199b2b864a"> 424</a></span> <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> {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  gboolean b;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  b = !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <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> <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> {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  gchar *val;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  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>  gtk_button_set_label(button, val);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  g_free(val);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <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> <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> {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  gchar buf[100];</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  GdkRGBA color;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="preprocessor">#if !defined (HAVE_LIBSSH) || !defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  GtkWidget *align;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor">#if !defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  align = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">"alignment_terminal"</span>));</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  gtk_widget_set_sensitive(align, FALSE);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="preprocessor">#if !defined (HAVE_LIBSSH)</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  align = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">"alignment_ssh"</span>));</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  gtk_widget_set_sensitive(align, FALSE);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  <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>  gtk_widget_set_tooltip_text(GTK_WIDGET(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), _(<span class="stringliteral">"libsodium >= 1.9.0 is required to use Primary Password"</span>));</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  <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>  gtk_entry_set_text(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  gtk_entry_set_text(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">"%G_%P_%N_%h.remmina"</span>);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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> </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor">#ifdef HAVE_LIBAPPINDICATOR</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</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> = TRUE;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</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#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>[0]))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  <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> && <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>  gtk_font_chooser_set_font(GTK_FONT_CHOOSER(remmina_pref_dialog-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  gtk_font_chooser_set_font(GTK_FONT_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), <span class="stringliteral">"Monospace 12"</span>);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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> </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="comment">/* Foreground color option */</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>), &color);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">/* Background color option */</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>), &color);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="comment">/* Cursor color option */</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), &color);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), &color);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">/* Highlight color option */</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), &color);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), &color);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="comment">/* Bold color option */</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), &color);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="comment">/* 16 colors */</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), &color);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), &color);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), &color);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), &color);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), &color);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), &color);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), &color);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), &color);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), &color);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), &color);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), &color);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), &color);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), &color);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), &color);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), &color);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), &color);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="preprocessor">#if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="preprocessor">#if !VTE_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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> </div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  <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 && strlen(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>) > 0)</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  gtk_file_chooser_set_filename(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  gtk_file_chooser_set_filename(remmina_pref_dialog-><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>  <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>  gtk_entry_set_text(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  gtk_entry_set_text(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">"%G_%P_%N_%h.remmina"</span>);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</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#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> != NULL)</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  gtk_file_chooser_set_filename(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  gtk_file_chooser_set_filename(remmina_pref_dialog-><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>  <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>  gtk_entry_set_text(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  gtk_entry_set_text(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>, <span class="stringliteral">"remmina_%p_%h_%Y%m%d-%H%M%S"</span>);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> </div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  gtk_switch_set_active(remmina_pref_dialog-><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>  <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>  gtk_entry_set_text(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  gtk_entry_set_text(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">"#00FF00"</span>);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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> </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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> </div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <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-><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> </div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  g_signal_connect(G_OBJECT(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">"destroy"</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> </div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  g_object_set_data(G_OBJECT(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">"tag"</span>, <span class="stringliteral">"remmina-pref-dialog"</span>);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> </div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <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> 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> {</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  GSimpleActionGroup *actions;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  GtkAccelGroup *accel_group = NULL;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> </div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  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>  remmina_pref_dialog-><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> </div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  remmina_pref_dialog-><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">"/org/remmina/Remmina/src/../data/ui/remmina_preferences.glade"</span>);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a> = GTK_WIDGET(gtk_builder_get_object(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">builder</a>, <span class="stringliteral">"RemminaPrefDialog"</span>));</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">if</span> (parent)</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  gtk_window_set_transient_for(GTK_WINDOW(remmina_pref_dialog-><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> </div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a> = GTK_NOTEBOOK(GET_OBJECT(<span class="stringliteral">"notebook_preferences"</span>));</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> </div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">"filechooserbutton_options_datadir_path"</span>));</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_file_name"</span>));</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">"filechooserbutton_options_screenshots_path"</span>));</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_screenshot_name"</span>));</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_options_deny_screenshot_clipboard"</span>));</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_options_remember_last_view_mode"</span>));</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_options_confirm_close"</span>));</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_use_primary_password"</span>));</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"unlock_timeout"</span>));</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_lock_connect"</span>));</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_lock_edit"</span>));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_security_enc_method"</span>));</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_audit"</span>));</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_trust_all"</span>));</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119">checkbutton_options_save_settings</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_options_save_settings"</span>));</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_fullscreen_on_auto"</span>));</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_show_tabs"</span>));</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_show_notes"</span>));</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_hide_toolbar"</span>));</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_hide_searchbar"</span>));</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">switch_permit_news</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_permit_news"</span>));</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_options_double_click"</span>));</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_appearance_view_mode"</span>));</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_appearance_tab_interface"</span>));</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_appearance_fullscreen_toolbar_visibility"</span>));</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_options_scale_quality"</span>));</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_options_ssh_parseconfig"</span>));</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_options_ssh_loglevel"</span>));</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_port"</span>));</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_tcp_keepidle"</span>));</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_tcp_keepintvl"</span>));</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_tcp_keepcnt"</span>));</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_tcp_usrtimeout"</span>));</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_scroll"</span>));</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_recent_items"</span>));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_grab_color"</span>));</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_appearance_grab_color"</span>));</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">button_options_recent_items_clear</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_options_recent_items_clear"</span>));</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> </div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  remmina_pref_dialog-><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">"checkbutton_applet_new_connection_on_top"</span>));</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_applet_hide_totals"</span>));</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_applet_disable_tray"</span>));</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_dark_theme"</span>));</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_applet_start_in_tray"</span>));</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> </div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_host_key"</span>));</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_fullscreen"</span>));</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_auto_fit"</span>));</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_switch_tab_left"</span>));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_switch_tabright"</span>));</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_scaled"</span>));</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_grab_keyboard"</span>));</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_multimon"</span>));</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_screenshot"</span>));</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_viewonly"</span>));</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_minimize"</span>));</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_disconnect"</span>));</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_toolbar"</span>));</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_terminal_font_system"</span>));</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a> = GTK_FONT_BUTTON(GET_OBJECT(<span class="stringliteral">"fontbutton_terminal_font"</span>));</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_terminal_bold"</span>));</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_scrollback_lines"</span>));</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_copy"</span>));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_paste"</span>));</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_select_all"</span>));</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_increase_font"</span>));</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_decrease_font"</span>));</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_search_text"</span>));</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">label_terminal_foreground</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_foreground"</span>));</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_foreground"</span>));</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">label_terminal_background</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_background"</span>));</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_background"</span>));</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">label_terminal_cursor_color</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_cursor_color"</span>));</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_cursor"</span>));</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_cursor_foreground"</span>));</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_highlight"</span>));</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_highlight_foreground"</span>));</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">label_terminal_bold_color</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_bold_color"</span>));</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_colorBD"</span>));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">label_terminal_normal_colors</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_normal_colors"</span>));</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color0"</span>));</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color1"</span>));</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color2"</span>));</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color3"</span>));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color4"</span>));</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color5"</span>));</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color6"</span>));</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color7"</span>));</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">label_terminal_bright_colors</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_bright_colors"</span>));</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color8"</span>));</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color9"</span>));</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color10"</span>));</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color11"</span>));</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color12"</span>));</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color13"</span>));</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color14"</span>));</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color15"</span>));</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="preprocessor">#if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="preprocessor">#if VTE_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keyword">const</span> gchar *remmina_dir;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  gchar *destpath;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(), <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  destpath = g_strdup_printf(<span class="stringliteral">"%s/remmina.colors"</span>, remmina_dir);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">"button_term_cs"</span>));</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keyword">const</span> gchar *fc_tooltip_text = g_strconcat(_(<span class="stringliteral">"Picking a terminal colouring file replaces the file: "</span>),</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="stringliteral">"\n"</span>,</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  destpath,</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="stringliteral">"\n"</span>,</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  _(<span class="stringliteral">"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."</span>),</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  NULL);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  gtk_widget_set_tooltip_text(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(remmina_pref_dialog-><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>  g_free(destpath);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  actions = g_simple_action_group_new();</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  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-><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>  gtk_widget_insert_action_group(GTK_WIDGET(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">"pref"</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  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-><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>  g_object_unref(actions);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="comment">/* Accelerators */</span></div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  accel_group = gtk_accel_group_new();</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  gtk_window_add_accel_group(GTK_WINDOW(remmina_pref_dialog-><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>  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>  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> </div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  gtk_builder_connect_signals(remmina_pref_dialog-><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>  <span class="comment">/* Initialize the window and load the preferences */</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <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> </div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keywordflow">if</span> (default_tab > 0)</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  gtk_notebook_set_current_page(remmina_pref_dialog-><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>  <span class="keywordflow">return</span> remmina_pref_dialog-><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> }</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> </div><div class="line"><a name="l00847"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a73b901ed8ee7e318b512f716065adb29"> 847</a></span> 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> {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">if</span> (!remmina_pref_dialog)</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">return</span> remmina_pref_dialog-><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> }</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <vte/vte.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "<a class="code" href="remmina__passwd_8h.html">remmina_passwd.h</a>"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__string__list_8h.html">remmina_string_list.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="remmina__key__chooser_8h.html">remmina_key_chooser.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref__dialog_8h.html">remmina_pref_dialog.h</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2e3c32df32107ad3f4b9ea85fc001368"> 58</a></span> <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> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#define GET_OBJECT(object_name) gtk_builder_get_object(remmina_pref_dialog->builder, object_name)</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257"> 62</a></span> <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>  { <span class="stringliteral">"close"</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> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <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> <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> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <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> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  g_return_if_fail(GTK_IS_BUTTON(widget));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  arguments = <a class="code" href="remmina__key__chooser_8c.html#a9e8586623c819a2e24b6d7b1d3efde94">remmina_key_chooser_new</a>(GTK_WINDOW(remmina_pref_dialog-><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>  <span class="keywordflow">if</span> (arguments-><a class="code" href="struct___remmina_key_chooser_arguments.html#a2fd9e4d001913994dd7ffee24563bde7">response</a> != GTK_RESPONSE_CANCEL && arguments-><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>  gchar *val = <a class="code" href="remmina__key__chooser_8c.html#a5aba1462f1026818581e91155b12618f">remmina_key_chooser_get_value</a>(arguments-><a class="code" href="struct___remmina_key_chooser_arguments.html#ad6bf8db773a58c4b73ce7902f76a860f">keyval</a>, arguments-><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>  gtk_button_set_label(GTK_BUTTON(widget), val);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  g_free(val);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  g_free(arguments);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <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> <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> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  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> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <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>  <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>  <a class="code" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list_set_titles</a>(_(<span class="stringliteral">"Resolutions"</span>), _(<span class="stringliteral">"Configure the available resolutions"</span>));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog-><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>  gtk_dialog_run(dialog);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  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>  <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>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <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> <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> <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> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  gchar *sourcepath;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  gchar *remmina_dir;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  gchar *destpath;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  GFile *source;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  GFile *destination;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  sourcepath = gtk_file_chooser_get_filename(remmina_pref_dialog-><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>  source = g_file_new_for_path(sourcepath);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(), <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">/* /home/foo/.config/remmina */</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  destpath = g_strdup_printf(<span class="stringliteral">"%s/remmina.colors"</span>, remmina_dir);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  destination = g_file_new_for_path(destpath);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <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>  g_file_copy(source,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  destination,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  G_FILE_COPY_OVERWRITE,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  NULL,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  NULL,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  NULL,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  NULL);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">/* Here we should reinitialize the widget */</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  gtk_file_chooser_set_file(remmina_pref_dialog-><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>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  g_free(sourcepath);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  g_free(remmina_dir);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  g_free(destpath);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  g_object_unref(source);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a470290d26c88259265912a3e0018b662"> 136</a></span> <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> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  GtkDialog *dialog;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <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>  dialog = GTK_DIALOG(gtk_message_dialog_new(GTK_WINDOW(remmina_pref_dialog-><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>  GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  _(<span class="stringliteral">"Recent lists cleared."</span>)));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  gtk_dialog_run(dialog);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <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> <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> {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  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> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <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>  <a class="code" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list_set_titles</a>(_(<span class="stringliteral">"Keystrokes"</span>), _(<span class="stringliteral">"Configure the keystrokes"</span>));</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog-><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>  gtk_dialog_run(dialog);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  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>  <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>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#ad9db3e5d980f28a2764be2ee6db18fef"> 164</a></span> <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> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">//REMMINA_DEBUG ("entry_grab_color %d", gtk_switch_get_active(widget));</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <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> <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> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">//REMMINA_DEBUG ("Use Primary Password %d", gtk_switch_get_active(sw));</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span> (gtk_switch_get_active(sw)) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">//REMMINA_DEBUG ("use_password activated");</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  gchar *unlock_password = NULL;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  unlock_password = g_strdup(<a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="stringliteral">"unlock_password"</span>));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-><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>  <span class="comment">//REMMINA_DEBUG ("Password from preferences is: %s", unlock_password);</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (unlock_password == NULL || unlock_password[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__passwd_8c.html#a03a4dd5860c39db272a9fa913a95caea">remmina_passwd</a> (GTK_WINDOW(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), &unlock_password)) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">//REMMINA_DEBUG ("Password is: %s", unlock_password);</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">"unlock_password"</span>, g_strdup(unlock_password));</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <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">""</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">"unlock_password"</span>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  g_free(unlock_password), unlock_password = NULL;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">//REMMINA_DEBUG ("use_password deactivated");</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-><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>  <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">""</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">"unlock_password"</span>, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a722371d3ad01079279d5e86d7c8400e1"> 203</a></span> <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> {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  gtk_widget_destroy(GTK_WIDGET(remmina_pref_dialog-><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>  <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>  GtkSettings *settings = gtk_settings_get_default();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  g_object_set(settings, <span class="stringliteral">"gtk-application-prefer-dark-theme"</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> }</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#adc2763311ece7ab6b505d4ec56391f69"> 212</a></span> <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> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  gtk_widget_destroy(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#ab9776574663e2c3fcb793ec70887336d"> 218</a></span> <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> {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  gboolean b;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  GdkRGBA color;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  gboolean rebuild_remmina_icon = FALSE;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <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-><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>  <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>  <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">""</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</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> = gtk_entry_get_text(remmina_pref_dialog-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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> <= 0)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <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>  <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-><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>  <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> <= 0)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</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> = SSH_SOCKET_TCP_KEEPIDLE;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</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> = atoi(gtk_entry_get_text(remmina_pref_dialog-><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>  <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> <= 0)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</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> = SSH_SOCKET_TCP_KEEPINTVL;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</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> = atoi(gtk_entry_get_text(remmina_pref_dialog-><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>  <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> <= 0)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</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> = SSH_SOCKET_TCP_KEEPCNT;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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> = atoi(gtk_entry_get_text(remmina_pref_dialog-><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>  <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> <= 0)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</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> = SSH_SOCKET_TCP_USER_TIMEOUT;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <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-><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> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <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-><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>  <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> < 0)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</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> = atoi(gtk_entry_get_text(remmina_pref_dialog-><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>  <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> < 10)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</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> = 10;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <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> > 500)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</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> = 500;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <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-><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>  <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> < 0)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <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> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</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> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  <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-><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>  b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  <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>  <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>  rebuild_remmina_icon = TRUE;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</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> = gtk_switch_get_active(remmina_pref_dialog-><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>  <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-><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> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  <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>  <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>  rebuild_remmina_icon = TRUE;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (b)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  b = FALSE;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  <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> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span> (rebuild_remmina_icon) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <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>  <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>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  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>  <span class="keywordflow">if</span> (gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-><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>  <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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <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-><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>  <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-><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>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>), &color);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>), &color);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), &color);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), &color);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), &color);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), &color);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), &color);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), &color);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), &color);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), &color);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), &color);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), &color);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), &color);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), &color);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), &color);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), &color);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), &color);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), &color);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), &color);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), &color);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), &color);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), &color);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), &color);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</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> = gdk_rgba_to_string(&color);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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>  <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-><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> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <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>  <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> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  remmina_pref_dialog-><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> }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4"> 392</a></span> <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> {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <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>  GtkWidget *vbox;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  GtkWidget *widget;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  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> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  widget = gtk_label_new(pref_plugin-><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>  gtk_widget_set_halign(widget, GTK_ALIGN_END);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  gtk_widget_show(widget);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  gtk_widget_show(vbox);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  gtk_notebook_append_page(GTK_NOTEBOOK(remmina_pref_dialog-><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> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  widget = pref_plugin-><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>  gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, FALSE, 0);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2d0556c47e16187ea61e70516a6346bc"> 415</a></span> <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> {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> </div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a18bfbeb5d049a9f37f7624199b2b864a"> 421</a></span> <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> {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  gboolean b;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  b = !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <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> <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> {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  gchar *val;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  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>  gtk_button_set_label(button, val);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  g_free(val);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <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> <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> {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  gchar buf[100];</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  GdkRGBA color;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="preprocessor">#if !defined (HAVE_LIBSSH) || !defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  GtkWidget *align;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor">#if !defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  align = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">"alignment_terminal"</span>));</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  gtk_widget_set_sensitive(align, FALSE);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="preprocessor">#if !defined (HAVE_LIBSSH)</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  align = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">"alignment_ssh"</span>));</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  gtk_widget_set_sensitive(align, FALSE);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  <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>  gtk_widget_set_tooltip_text(GTK_WIDGET(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), _(<span class="stringliteral">"libsodium >= 1.9.0 is required to use Primary Password"</span>));</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  <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>  gtk_entry_set_text(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  gtk_entry_set_text(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">"%G_%P_%N_%h.remmina"</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="preprocessor">#ifdef HAVE_LIBAPPINDICATOR</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</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> = TRUE;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</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#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>[0]))</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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>  <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> && <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>  gtk_font_chooser_set_font(GTK_FONT_CHOOSER(remmina_pref_dialog-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  gtk_font_chooser_set_font(GTK_FONT_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), <span class="stringliteral">"Monospace 12"</span>);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-><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> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="comment">/* Foreground color option */</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>), &color);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">/* Background color option */</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>), &color);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="comment">/* Cursor color option */</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), &color);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), &color);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="comment">/* Highlight color option */</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), &color);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), &color);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">/* Bold color option */</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), &color);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="comment">/* 16 colors */</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), &color);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), &color);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), &color);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), &color);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), &color);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), &color);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), &color);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), &color);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), &color);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), &color);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), &color);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), &color);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), &color);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), &color);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), &color);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  gdk_rgba_parse(&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>  gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), &color);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="preprocessor">#if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="preprocessor">#if !VTE_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> </div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="preprocessor">#if SODIUM_VERSION_INT >= 90200</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">"%i"</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>  gtk_entry_set_text(remmina_pref_dialog-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> </div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  gtk_combo_box_set_active(remmina_pref_dialog-><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>  <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 && strlen(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>) > 0)</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  gtk_file_chooser_set_filename(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  gtk_file_chooser_set_filename(remmina_pref_dialog-><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>  <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>  gtk_entry_set_text(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  gtk_entry_set_text(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">"%G_%P_%N_%h.remmina"</span>);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> </div><div class="line"><a name="l00653"></a><span class="lineno"> 653</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#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> != NULL)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  gtk_file_chooser_set_filename(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  gtk_file_chooser_set_filename(remmina_pref_dialog-><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>  <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>  gtk_entry_set_text(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  gtk_entry_set_text(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>, <span class="stringliteral">"remmina_%p_%h_%Y%m%d-%H%M%S"</span>);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  gtk_switch_set_active(remmina_pref_dialog-><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>  <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>  gtk_entry_set_text(remmina_pref_dialog-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  gtk_entry_set_text(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">"#00FF00"</span>);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-><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> </div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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>  <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-><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> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <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-><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> </div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  g_signal_connect(G_OBJECT(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">"destroy"</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> </div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  g_object_set_data(G_OBJECT(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">"tag"</span>, <span class="stringliteral">"remmina-pref-dialog"</span>);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(GTK_WIDGET(remmina_pref_dialog-><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> }</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> </div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <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> 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> {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  GSimpleActionGroup *actions;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  GtkAccelGroup *accel_group = NULL;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  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>  remmina_pref_dialog-><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> </div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  remmina_pref_dialog-><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">"/org/remmina/Remmina/src/../data/ui/remmina_preferences.glade"</span>);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a> = GTK_WIDGET(gtk_builder_get_object(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">builder</a>, <span class="stringliteral">"RemminaPrefDialog"</span>));</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">if</span> (parent)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  gtk_window_set_transient_for(GTK_WINDOW(remmina_pref_dialog-><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> </div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a> = GTK_NOTEBOOK(GET_OBJECT(<span class="stringliteral">"notebook_preferences"</span>));</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> </div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">"filechooserbutton_options_datadir_path"</span>));</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_file_name"</span>));</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">"filechooserbutton_options_screenshots_path"</span>));</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_screenshot_name"</span>));</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_options_deny_screenshot_clipboard"</span>));</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_options_remember_last_view_mode"</span>));</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_options_confirm_close"</span>));</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_use_primary_password"</span>));</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"unlock_timeout"</span>));</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_lock_connect"</span>));</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_lock_edit"</span>));</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_security_enc_method"</span>));</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> </div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_audit"</span>));</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_security_trust_all"</span>));</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119">checkbutton_options_save_settings</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_options_save_settings"</span>));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_fullscreen_on_auto"</span>));</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_show_tabs"</span>));</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_show_notes"</span>));</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_hide_toolbar"</span>));</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_appearance_hide_searchbar"</span>));</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_options_double_click"</span>));</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_appearance_view_mode"</span>));</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_appearance_tab_interface"</span>));</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_appearance_fullscreen_toolbar_visibility"</span>));</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_options_scale_quality"</span>));</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_options_ssh_parseconfig"</span>));</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">"comboboxtext_options_ssh_loglevel"</span>));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_port"</span>));</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_tcp_keepidle"</span>));</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_tcp_keepintvl"</span>));</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_tcp_keepcnt"</span>));</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_ssh_tcp_usrtimeout"</span>));</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_scroll"</span>));</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_options_recent_items"</span>));</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_grab_color"</span>));</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_appearance_grab_color"</span>));</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">button_options_recent_items_clear</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_options_recent_items_clear"</span>));</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> </div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  remmina_pref_dialog-><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">"checkbutton_applet_new_connection_on_top"</span>));</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_applet_hide_totals"</span>));</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_applet_disable_tray"</span>));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_dark_theme"</span>));</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">"checkbutton_applet_start_in_tray"</span>));</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_host_key"</span>));</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_fullscreen"</span>));</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_auto_fit"</span>));</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_switch_tab_left"</span>));</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_switch_tabright"</span>));</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_scaled"</span>));</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_grab_keyboard"</span>));</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_multimon"</span>));</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_screenshot"</span>));</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_viewonly"</span>));</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_minimize"</span>));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_disconnect"</span>));</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_toolbar"</span>));</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> </div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_terminal_font_system"</span>));</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a> = GTK_FONT_BUTTON(GET_OBJECT(<span class="stringliteral">"fontbutton_terminal_font"</span>));</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">"switch_terminal_bold"</span>));</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">"entry_scrollback_lines"</span>));</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_copy"</span>));</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_paste"</span>));</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_select_all"</span>));</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_increase_font"</span>));</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_decrease_font"</span>));</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">"button_keyboard_search_text"</span>));</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">label_terminal_foreground</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_foreground"</span>));</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_foreground"</span>));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">label_terminal_background</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_background"</span>));</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_background"</span>));</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">label_terminal_cursor_color</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_cursor_color"</span>));</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_cursor"</span>));</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_cursor_foreground"</span>));</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_highlight"</span>));</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_highlight_foreground"</span>));</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">label_terminal_bold_color</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_bold_color"</span>));</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_colorBD"</span>));</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">label_terminal_normal_colors</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_normal_colors"</span>));</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color0"</span>));</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color1"</span>));</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color2"</span>));</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color3"</span>));</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color4"</span>));</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color5"</span>));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color6"</span>));</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color7"</span>));</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">label_terminal_bright_colors</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">"label_terminal_bright_colors"</span>));</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color8"</span>));</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color9"</span>));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color10"</span>));</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color11"</span>));</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color12"</span>));</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color13"</span>));</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color14"</span>));</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">"colorbutton_color15"</span>));</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="preprocessor">#if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="preprocessor">#if VTE_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keyword">const</span> gchar *remmina_dir;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  gchar *destpath;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  remmina_dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_config_dir(), <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  destpath = g_strdup_printf(<span class="stringliteral">"%s/remmina.colors"</span>, remmina_dir);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">"button_term_cs"</span>));</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keyword">const</span> gchar *fc_tooltip_text = g_strconcat(_(<span class="stringliteral">"Picking a terminal colouring file replaces the file: "</span>),</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="stringliteral">"\n"</span>,</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  destpath,</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="stringliteral">"\n"</span>,</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  _(<span class="stringliteral">"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."</span>),</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  NULL);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  gtk_widget_set_tooltip_text(GTK_WIDGET(remmina_pref_dialog-><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>  gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(remmina_pref_dialog-><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>  g_free(destpath);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  actions = g_simple_action_group_new();</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  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-><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>  gtk_widget_insert_action_group(GTK_WIDGET(remmina_pref_dialog-><a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">"pref"</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  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-><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>  g_object_unref(actions);</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="comment">/* Accelerators */</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  accel_group = gtk_accel_group_new();</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  gtk_window_add_accel_group(GTK_WINDOW(remmina_pref_dialog-><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>  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>  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> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  gtk_builder_connect_signals(remmina_pref_dialog-><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>  <span class="comment">/* Initialize the window and load the preferences */</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <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> </div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">if</span> (default_tab > 0)</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  gtk_notebook_set_current_page(remmina_pref_dialog-><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>  <span class="keywordflow">return</span> remmina_pref_dialog-><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> }</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> </div><div class="line"><a name="l00840"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a73b901ed8ee7e318b512f716065adb29"> 840</a></span> 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> {</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keywordflow">if</span> (!remmina_pref_dialog)</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">return</span> remmina_pref_dialog-><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> }</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 </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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> *</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">/*</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> * Remmina Preferences Dialog</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> */</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog_priv.html"> 43</a></span> <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>  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> } <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> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html"> 47</a></span> <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>  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>  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>  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> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123"> 52</a></span>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c"> 92</a></span>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826"> 98</a></span>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46"> 112</a></span>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb"> 153</a></span>  <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> } <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> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> G_BEGIN_DECLS</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment">/* RemminaPrefDialog instance */</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> 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> <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> 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> <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> <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> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> 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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> *</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">/*</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> * Remmina Preferences Dialog</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> */</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog_priv.html"> 43</a></span> <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>  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> } <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> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html"> 47</a></span> <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>  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>  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>  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> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123"> 52</a></span>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c"> 91</a></span>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826"> 97</a></span>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46"> 111</a></span>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb"> 152</a></span>  <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> } <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> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> G_BEGIN_DECLS</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="comment">/* RemminaPrefDialog instance */</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> 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> <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> 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> <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> <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> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> 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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <gtk/gtkx.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <gmodule.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="remmina__chat__window_8h.html">remmina_chat_window.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "<a class="code" href="remmina__ext__exec_8h.html">remmina_ext_exec.h</a>"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a>"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include <gdk/gdkwayland.h></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html"> 60</a></span> <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>  <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>  <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>  <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> </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>  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>  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>  <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>  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> </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>  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>  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>  <span class="comment">/* ssh_tunnels is an array of RemminaSSHTunnel*</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment"> * the 1st one is the "main" 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>  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>  <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> </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>  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> </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>  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> </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>  <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> </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>  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>  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>  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> </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>  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>  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>  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> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <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>  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>  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>  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>  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> </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>  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>  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>  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>  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> };</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373"> 103</a></span> <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32"> 109</a></span> <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> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">enum</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  CONNECT_SIGNAL,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  DISCONNECT_SIGNAL,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  DESKTOP_RESIZE_SIGNAL,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  UPDATE_ALIGN_SIGNAL,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  LOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  UNLOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> };</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </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> <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>  <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>  <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> } <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> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130"> 126</a></span> <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> { 0 };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74"> 129</a></span> <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> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[CONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">"connect"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DISCONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">"disconnect"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DESKTOP_RESIZE_SIGNAL] = g_signal_new(<span class="stringliteral">"desktop-resize"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UPDATE_ALIGN_SIGNAL] = g_signal_new(<span class="stringliteral">"update-align"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[LOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">"lock-dynres"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UNLOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">"unlock-dynres"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1"> 153</a></span> <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> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> && gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">for</span> (i = 0; i < gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len; i++) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[i]);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  REMMINA_DEBUG(<span class="stringliteral">"LibSSH support turned off, no need to free SSH tunnel data"</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  g_ptr_array_set_size(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f"> 171</a></span> <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> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  g_free(gp-><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>  gp-><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> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <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> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> && gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  g_ptr_array_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1"> 216</a></span> <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> {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  GtkWidget *child;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  child = gtk_bin_get_child(GTK_BIN(gp));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span> (child) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  gtk_widget_set_can_focus(child, TRUE);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  gtk_widget_grab_focus(child);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df"> 229</a></span> <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> {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <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> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  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>  gp-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  g_signal_connect(G_OBJECT(gp), <span class="stringliteral">"destroy"</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> }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd"> 242</a></span> <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> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <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> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  REMMINA_DEBUG(<span class="stringliteral">"Opening connection"</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <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>  <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>  gint num_plugin;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  gint num_ssh;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  plugin = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  plugin-><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> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">for</span> (num_plugin = 0, feature = (<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *)plugin-><a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature && feature-><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>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  num_ssh = 0;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_enabled"</span>, FALSE))</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  num_ssh += 2;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (num_plugin + num_ssh == 0) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  feature = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (plugin-><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>  memcpy(feature, plugin-><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>  feature += num_plugin;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  REMMINA_DEBUG(<span class="stringliteral">"Have SSH"</span>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (num_ssh) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  feature-><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>  feature-><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>  feature-><a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">"Connect via SSH from a new terminal"</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  feature-><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>  feature-><a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">"utilities-terminal"</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  feature-><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>  feature-><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>  feature-><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>  feature++;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  feature-><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>  feature-><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>  feature-><a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">"Open SFTP transfer…"</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  feature-><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>  feature-><a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">"folder-remote"</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  feature-><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>  feature-><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>  feature-><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>  feature++;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  feature-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (!plugin-><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>  <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> }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5"> 308</a></span> <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> {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <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> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <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> }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b"> 315</a></span> <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> {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  gchar *s;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">const</span> gchar *name;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">/* Exec precommand before everything else */</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  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>  <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">"Executing external commands…"</span>), NULL, NULL);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-><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> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"precommand"</span>);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-><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> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  name = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"name"</span>);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <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>  s = g_strdup_printf(_(<span class="stringliteral">"Connecting to “%s”…"</span>), (name ? name : <span class="stringliteral">"*"</span>));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  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>  <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>  g_free(s);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-><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> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <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> }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016"> 343</a></span> <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> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <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> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">/* This will close all tunnels */</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="comment">/* Exec postcommand */</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"postcommand"</span>);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <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>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"disconnect"</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261"> 359</a></span> <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> {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <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> <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  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> }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48"> 368</a></span> <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> {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <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> </div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">for</span> (guint i = 0; i < gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len; i++)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[i]);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"connect"</span>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c"> 391</a></span> <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> {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <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> <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  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> }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a"> 399</a></span> <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> {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <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> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"update-align"</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e"> 408</a></span> <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> {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  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> }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc"> 415</a></span> <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> {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <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> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"lock-dynres"</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e"> 424</a></span> <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> {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <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> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"unlock-dynres"</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> </div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457"> 433</a></span> <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> {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  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> }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d"> 440</a></span> <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> {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  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> }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565"> 447</a></span> <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> {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <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> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"desktop-resize"</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee"> 456</a></span> <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> {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  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> }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22"> 464</a></span> <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> {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <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> <span class="comment"> * Nothing else is done here. */</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span> (!GTK_IS_WIDGET(gp))</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gtk_widget_destroy(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <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> <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> <span class="comment"> */</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">/* Clear the current error, or "disconnect" signal func will reshow a panel */</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <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>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"disconnect"</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">/* Ask the plugin to close, async.</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment"> * The plugin will emit a "disconnect" signal on gp to call our</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="comment"> * remmina_protocol_widget_on_disconnected() when done */</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> </div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601"> 499</a></span> 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> {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> </div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471"> 507</a></span> <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> {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  gchar *keystrokes = g_object_get_data(G_OBJECT(widget), <span class="stringliteral">"keystrokes"</span>);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  guint *keyvals;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  gint i;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  gunichar character;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  guint keyval;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  GdkKeymapKey *keys;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  gint n_keys;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  gchar * search;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  gchar * replace;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  guint keyval;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  } KeystrokeReplace;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  KeystrokeReplace keystrokes_replaces[] =</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  { <span class="stringliteral">"\\n"</span>, <span class="stringliteral">"\n"</span>, GDK_KEY_Return },</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  { <span class="stringliteral">"\\t"</span>, <span class="stringliteral">"\t"</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  { <span class="stringliteral">"\\b"</span>, <span class="stringliteral">"\b"</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  { <span class="stringliteral">"\\e"</span>, <span class="stringliteral">"\e"</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  { <span class="stringliteral">"\\\\"</span>, <span class="stringliteral">"\\"</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  { NULL, NULL, 0 }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  };</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <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>  <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>  <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Keystrokes before replacement is \'%s\'"</span>, keystrokes);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  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>  keystrokes_replaces[i].search,</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  keystrokes_replaces[i].replace));</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  REMMINA_DEBUG(<span class="stringliteral">"Keystrokes after replacement is \'%s\'"</span>, keystrokes);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  gchar *iter = g_strdup(keystrokes);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  keyvals = (guint *)g_malloc(strlen(keystrokes));</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <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>  <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>  <span class="keywordflow">if</span> (character == keystrokes_replaces[i].replace[0]) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  keyval = keystrokes_replaces[i].keyval;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <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>  character = 0;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  }</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <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>  <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &keys, &n_keys)) {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  g_warning(<span class="stringliteral">"keyval 0x%04x has no keycode!"</span>, keyval);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  n_keys = 0;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span> (keys->level & 1)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">if</span> (keys->level & 2)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  g_free(keys);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  g_free(keyvals);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  g_free(keystrokes);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06"> 598</a></span> <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> {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <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>  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>  guint *keyvals;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  gint i;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  gunichar character;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  guint keyval;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  GdkKeymapKey *keys;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  gint n_keys;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  gchar * search;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  gchar * replace;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  guint keyval;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  } KeystrokeReplace;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  KeystrokeReplace text_replaces[] =</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  { <span class="stringliteral">"\\n"</span>, <span class="stringliteral">"\n"</span>, GDK_KEY_Return },</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  { <span class="stringliteral">"\\t"</span>, <span class="stringliteral">"\t"</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  { <span class="stringliteral">"\\b"</span>, <span class="stringliteral">"\b"</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  { <span class="stringliteral">"\\e"</span>, <span class="stringliteral">"\e"</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  { <span class="stringliteral">"\\\\"</span>, <span class="stringliteral">"\\"</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  { NULL, NULL, 0 }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  };</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> </div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <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>  <span class="keywordflow">if</span> (text) {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Text clipboard before replacement is \'%s\'"</span>, text);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  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>  text_replaces[i].search,</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  text_replaces[i].replace));</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  REMMINA_DEBUG(<span class="stringliteral">"Text clipboard after replacement is \'%s\'"</span>, text);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  gchar *iter = g_strdup(text);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  REMMINA_DEBUG(<span class="stringliteral">"Iter: %s"</span>, iter),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  keyvals = (guint *)g_malloc(strlen(text));</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  REMMINA_DEBUG(<span class="stringliteral">"Char: U+%04"</span> G_GINT32_FORMAT<span class="stringliteral">"X"</span>, character);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  REMMINA_DEBUG(<span class="stringliteral">"Keyval: %u"</span>, keyval);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <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>  <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>  <span class="keywordflow">if</span> (character == text_replaces[i].replace[0]) {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  keyval = text_replaces[i].keyval;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  REMMINA_DEBUG(<span class="stringliteral">"Special Keyval: %u"</span>, keyval);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <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>  character = 0;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <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>  <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &keys, &n_keys)) {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  REMMINA_WARNING(<span class="stringliteral">"keyval 0x%04x has no keycode!"</span>, keyval);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  }</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  n_keys = 0;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">if</span> (keys->level & 1)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">if</span> (keys->level & 2)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="comment">/*</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="comment"> * @fixme heap buffer overflow</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <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> <span class="comment"> * may lead to a buffer overflow</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  g_free(keys);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  g_free(keyvals);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  g_free(text);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> </div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1"> 694</a></span> <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> {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  GtkClipboard *clipboard;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> </div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <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> <span class="comment"> * called when we do get the contents.</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> <span class="comment"> */</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  gtk_clipboard_request_text(clipboard,</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <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> }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca"> 708</a></span> 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> {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keywordflow">if</span> (!gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"plugin screenshot function is not implemented, using core Remmina functionality"</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> </div><div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435"> 719</a></span> 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> {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">if</span> (!gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"Map plugin function not implemented"</span>);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> </div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling plugin mapping function"</span>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> </div><div class="line"><a name="l00731"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a"> 731</a></span> 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> {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">if</span> (!gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"Unmap plugin function not implemented"</span>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  }</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> </div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling plugin unmapping function"</span>);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> </div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b"> 743</a></span> <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> {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  REMMINA_DEBUG(<span class="stringliteral">"Emitting signals should be used from the object itself, not from another object"</span>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keyword">raise</span>(SIGINT);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> </div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  g_signal_emit_by_name(G_OBJECT(gp), signal_name);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd"> 764</a></span> <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> {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> </div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d"> 770</a></span> 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> {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <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> </div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">if</span> (type == <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a> &&</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_enabled"</span>, FALSE))</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">for</span> (feature = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature && feature-><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>  <span class="keywordflow">if</span> (feature-><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>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> }</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a"> 787</a></span> 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> {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9"> 793</a></span> <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> {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <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> </div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">for</span> (feature = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature && feature-><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>  <span class="keywordflow">if</span> (feature-><a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type && (<span class="keywordtype">id</span> == 0 || feature-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> }</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692"> 806</a></span> <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> {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">switch</span> (feature-><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> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SSH:</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> && gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len > 0) {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <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>  <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"SSH"</span>), NULL,</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[0], NULL);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> </div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SFTP:</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> && gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len > 0) {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <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>  <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"SFTP"</span>), NULL,</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[0], NULL);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  }</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> </div><div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1"> 835</a></span> <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> {</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event->keyval, FALSE);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> }</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0"> 843</a></span> <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> {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event->keyval, TRUE);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> </div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c"> 852</a></span> <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> {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  g_signal_connect(G_OBJECT(widget), <span class="stringliteral">"key-press-event"</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>  g_signal_connect(G_OBJECT(widget), <span class="stringliteral">"key-release-event"</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> }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> </div><div class="line"><a name="l00859"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8"> 859</a></span> <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> {</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> </div><div class="line"><a name="l00865"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1"> 865</a></span> 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> {</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> </div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  <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>  mp = d-><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>  g_free(d);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> </div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  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>  <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>  <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>  <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> }</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> </div><div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5"> 890</a></span> <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> {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <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> }</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> </div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> <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> <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> {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  printf(<span class="stringliteral">"Remmina: Cancelling an opening tunnel is not implemented\n"</span>);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> }</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> </div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3"> 912</a></span> <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> {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <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>  gint ret;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  gchar *msg;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  gboolean partial = FALSE;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  gboolean cont = FALSE;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  tunnel = <a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  REMMINA_DEBUG(<span class="stringliteral">"Creating SSH tunnel to “%s” via SSH…"</span>, REMMINA_SSH(tunnel)->server);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <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>  msg = g_strdup_printf(_(<span class="stringliteral">"Connecting to “%s” via SSH…"</span>), REMMINA_SSH(tunnel)->server);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> </div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-><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>  g_free(msg);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> </div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">if</span> (!partial) {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH Tunnel init session error: %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  }</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> </div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"Tunnel auth returned %d"</span>, ret);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Authentication success"</span>);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Continue with the next auth method"</span>);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  partial = TRUE;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Reconnecting…"</span>);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)-><a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>) {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  ssh_disconnect(REMMINA_SSH(tunnel)-><a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  ssh_free(REMMINA_SSH(tunnel)-><a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  REMMINA_SSH(tunnel)->session = NULL;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  g_free(REMMINA_SSH(tunnel)->callback);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Interrupted by the user"</span>);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  REMMINA_DEBUG(<span class="stringliteral">"Error during the authentication: %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  }</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  cont = TRUE;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> </div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="preprocessor">#if 0</span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> </div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot init SSH session with tunnel struct"</span>);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> </div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"Tunnel auth returned %d"</span>, ret);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <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>  <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>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  }</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> </div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> BREAK:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">if</span> (!cont) {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-><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> </div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">return</span> tunnel;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> }</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> </div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <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> <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> {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  printf(<span class="stringliteral">"Remmina: Cancelling start_direct_tunnel is not implemented\n"</span>);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb"> 1021</a></span> <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> {</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <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>  guint idx = 0;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="preprocessor">#if GLIB_CHECK_VERSION(2, 54, 0)</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  gboolean found = g_ptr_array_find(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel, &idx);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  gboolean found = FALSE;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <span class="keywordflow">for</span> (i = 0; i < gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len; i++) {</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keywordflow">if</span> ((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[i] == tunnel) {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  found = TRUE;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  idx = i;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  }</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  }</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> </div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  printf(<span class="stringliteral">"Tunnel %s found at idx = %d\n"</span>, found ? <span class="stringliteral">"yes"</span>: <span class="stringliteral">"not"</span>, idx);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">if</span> (found) {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  REMMINA_DEBUG(<span class="stringliteral">"[Tunnel with idx %u has been disconnected"</span>, idx);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  g_ptr_array_remove(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> }</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> </div><div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7"> 1057</a></span> 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> {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keyword">const</span> gchar *ssh_tunnel_server;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  gchar *ssh_tunnel_host, *srv_host, *dest;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  gint srv_port, ssh_tunnel_port = 0;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH tunnel initialization…"</span>);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> </div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"server"</span>);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  ssh_tunnel_server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_server"</span>);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="keywordflow">if</span> (!server)</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">return</span> g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> </div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keywordflow">if</span> (strstr(g_strdup(server), <span class="stringliteral">"unix:///"</span>) != NULL) {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  REMMINA_DEBUG(<span class="stringliteral">"%s is a UNIX socket"</span>, server);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordflow">return</span> g_strdup(server);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  }</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, default_port, &srv_host, &srv_port);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port (tunnel)"</span>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(ssh_tunnel_server, 22, &ssh_tunnel_host, &ssh_tunnel_port);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  REMMINA_DEBUG(<span class="stringliteral">"server: %s, port: %d"</span>, srv_host, srv_port);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordflow">if</span> (port_plus && srv_port < 100)</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <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>  srv_port += default_port;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> </div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  gchar *msg;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <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> </div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_enabled"</span>, FALSE)) {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  dest = g_strdup_printf(<span class="stringliteral">"[%s]:%i"</span>, srv_host, srv_port);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  g_free(srv_host);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">return</span> dest;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  }</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</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="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  g_free(srv_host);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  REMMINA_DEBUG(<span class="stringliteral">"remmina_protocol_widget_init_tunnel failed with error is %s"</span>,</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <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>  msg = g_strdup_printf(_(<span class="stringliteral">"Connecting to “%s” via SSH…"</span>), server);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-><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>  g_free(msg);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_loopback"</span>, FALSE)) {</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  g_free(srv_host);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  ssh_tunnel_host = NULL;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  srv_host = g_strdup(<span class="stringliteral">"127.0.0.1"</span>);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  REMMINA_DEBUG(<span class="stringliteral">"Starting tunnel to: %s, port: %d"</span>, ssh_tunnel_host, ssh_tunnel_port);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <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>  g_free(srv_host);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  }</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  g_free(srv_host);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> </div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-><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> </div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  g_ptr_array_add(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">"127.0.0.1:%i"</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> </div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> </div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  dest = g_strdup_printf(<span class="stringliteral">"[%s]:%i"</span>, srv_host, srv_port);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  g_free(srv_host);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="keywordflow">return</span> dest;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> }</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> </div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> <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> <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> {</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  printf(<span class="stringliteral">"Remmina: Cancelling start_reverse_tunnel is not implemented\n"</span>);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> }</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> </div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> </div><div class="line"><a name="l01159"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c"> 1159</a></span> 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> {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  gchar *msg;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <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> </div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_enabled"</span>, FALSE))</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> </div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> </div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <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>  msg = g_strdup_printf(_(<span class="stringliteral">"Awaiting incoming SSH connection on port %i…"</span>), <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"listenport"</span>, 0));</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-><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>  g_free(msg);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"listenport"</span>, 0), local_port)) {</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <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>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-><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>  g_ptr_array_add(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span> </div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> }</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div><div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a"> 1190</a></span> 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> {</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <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>  ssh_channel channel;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  gint status;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  gboolean ret = FALSE;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  gchar *cmd, *ptr;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  va_list args;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len < 1)</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> </div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[0];</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> </div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  if ((channel = ssh_channel_new(REMMINA_SSH(tunnel)-><a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>)) == NULL)</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> </div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  va_start(args, fmt);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  cmd = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  va_end(args);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <span class="keywordflow">if</span> (ssh_channel_open_session(channel) == SSH_OK &&</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  ssh_channel_request_exec(channel, cmd) == SSH_OK) {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keywordflow">if</span> (wait) {</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  status = ssh_channel_get_exit_status(channel);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  ptr = strchr(cmd, <span class="charliteral">' '</span>);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordflow">if</span> (ptr) *ptr = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="keywordflow">switch</span> (status) {</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  ret = TRUE;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  <span class="keywordflow">case</span> 127:</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <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>  <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>  _(<span class="stringliteral">"The “%s” command is not available on the SSH server."</span>), cmd);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  <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>  <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>  _(<span class="stringliteral">"Could not run the “%s” command on the SSH server (status = %i)."</span>), cmd, status);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  }</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  ret = TRUE;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  }</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not run command. %s"</span>));</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  }</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  g_free(cmd);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span> (wait)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  ssh_channel_close(channel);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  ssh_channel_free(channel);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> </div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> </div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> }</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> <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> <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> {</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <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>  gchar *server;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  gint port;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  gboolean ret;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> </div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"server"</span>), 177, &server, &port);</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  ret = ((<a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a>)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>, (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">"localhost"</span> : server), port);</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  g_free(server);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> </div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> }</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> </div><div class="line"><a name="l01273"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee"> 1273</a></span> <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> {</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> }</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> </div><div class="line"><a name="l01279"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d"> 1279</a></span> <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> {</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <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> </div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)->error)</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">"%s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> </div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  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>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> }</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> <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> <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> {</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  printf(<span class="stringliteral">"Remmina: Cancelling an XPort connection is not implemented\n"</span>);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> }</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> <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> 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> {</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  gboolean bindlocalhost;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  gchar *server;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  gchar *msg;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <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> </div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <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> </div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <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>  msg = g_strdup_printf(_(<span class="stringliteral">"Connecting to %s via SSH…"</span>), <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"server"</span>));</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-><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>  g_free(msg);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"server"</span>), 0, &server, NULL);</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  bindlocalhost = (g_strcmp0(REMMINA_SSH(tunnel)->server, server) == 0);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  g_free(server);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> </div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  <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>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">"Could not open channel, %s"</span>,</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  ssh_get_error(REMMINA_SSH(tunnel)-><a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>));</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> </div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-><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>  g_ptr_array_add(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> </div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> }</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> </div><div class="line"><a name="l01342"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54"> 1342</a></span> <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> {</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  <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>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len < 1)</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[0];</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  if (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>) g_free(tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a> = g_strdup_printf(<span class="stringliteral">"unix:%i"</span>, display);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> }</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> </div><div class="line"><a name="l01355"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907"> 1355</a></span> 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> {</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div><div class="line"><a name="l01362"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb"> 1362</a></span> 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> {</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  <span class="comment">/* Returns ehenever multi monitor is enabled (1) */</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"multimon"</span>, -1);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  REMMINA_DEBUG(<span class="stringliteral">"Multi monitor is set to %d"</span>, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> </div><div class="line"><a name="l01371"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9"> 1371</a></span> 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> {</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  <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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> </div><div class="line"><a name="l01378"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f"> 1378</a></span> <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> {</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  <span class="keywordflow">return</span> gp ? gp-><a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> ? gp-><a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a>-><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> }</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> </div><div class="line"><a name="l01384"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995"> 1384</a></span> 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> {</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> </div><div class="line"><a name="l01390"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380"> 1390</a></span> <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> {</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> </div><div class="line"><a name="l01396"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5"> 1396</a></span> 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> {</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> </div><div class="line"><a name="l01402"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044"> 1402</a></span> <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> {</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> </div><div class="line"><a name="l01408"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7"> 1408</a></span> <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> {</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span> </div><div class="line"><a name="l01414"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48"> 1414</a></span> <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> {</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> </div><div class="line"><a name="l01420"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25"> 1420</a></span> 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> {</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> </div><div class="line"><a name="l01426"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa"> 1426</a></span> <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> {</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> }</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> </div><div class="line"><a name="l01433"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771"> 1433</a></span> 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> {</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> </div><div class="line"><a name="l01439"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29"> 1439</a></span> <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> {</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> </div><div class="line"><a name="l01445"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af"> 1445</a></span> <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> {</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  va_list args;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> </div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>) g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  <span class="keywordflow">if</span> (fmt == NULL) {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  }</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> </div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  va_start(args, fmt);</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  va_end(args);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> </div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> </div><div class="line"><a name="l01465"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3"> 1465</a></span> 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> {</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div><div class="line"><a name="l01471"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069"> 1471</a></span> <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> {</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> </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> <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>  <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>  <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>  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>  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>  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>  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>  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>  <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>  <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>  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>  <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>  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>  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>  <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>  <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> };</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> </div><div class="line"><a name="l01495"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb"> 1495</a></span> <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> {</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</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> *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> </div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  d-><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>  <span class="keywordflow">if</span> (button == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  <span class="keywordflow">if</span> (d-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>  }</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> </div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>  <span class="keywordflow">if</span> (d-><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>  <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>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  <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>  pthread_mutex_lock(&d-><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>  pthread_cond_signal(&d-><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>  pthread_mutex_unlock(&d-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  <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>  <a class="code" href="remmina__message__panel_8c.html#af7db7b9f49fe6b83b17471116d363d40">remmina_message_panel_response</a>(d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> }</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> </div><div class="line"><a name="l01528"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113"> 1528</a></span> <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> {</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</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> *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> </div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  <span class="keyword">const</span> gchar *s;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> </div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>  <span class="keywordflow">if</span> (d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> </div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  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> </div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  <span class="keywordflow">if</span> (d-><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>  <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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>, d-><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>  <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-><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>  <span class="keywordflow">if</span> (d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> & <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>  <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-><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>  <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-><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>  <span class="keywordflow">if</span> (d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> & <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>  <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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> == NULL || d-><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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-><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>  <a class="code" href="remmina__message__panel_8c.html#ae5b1825b5d4e56ecc2f25c28bb042c32">remmina_message_panel_setup_question</a>(mp, d-><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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-><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>  <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>  <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"cacert"</span>)) != NULL)</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <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>  <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"cacrl"</span>)) != NULL)</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  <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>  <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"clientcert"</span>)) != NULL)</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <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>  <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"clientkey"</span>)) != NULL)</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  <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>  }</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> </div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><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> </div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> }</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> </div><div class="line"><a name="l01569"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html"> 1569</a></span> <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>  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>  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>  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>  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> } <a class="code" href="struct_mp_run_info.html">MpRunInfo</a>;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div><div class="line"><a name="l01576"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572"> 1576</a></span> <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> {</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  <span class="keywordflow">if</span> (g_main_loop_is_running(mpri-><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>  g_main_loop_quit(mpri-><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> }</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> </div><div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf"> 1582</a></span> <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> {</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  <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> </div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  mpri-><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>  <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> }</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> </div><div class="line"><a name="l01590"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d"> 1590</a></span> <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> {</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  <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> </div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  mpri-><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>  <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> }</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> </div><div class="line"><a name="l01598"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8"> 1598</a></span> <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> {</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  <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> </div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>  mpri-><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>  mpri-><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>  <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> }</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span> </div><div class="line"><a name="l01607"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54"> 1607</a></span> <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>  <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>  <span class="keyword">const</span> gchar *strpasswordlabel)</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> {</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> </div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</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> *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>  <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> </div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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> </div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  <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>  <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>  <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> </div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  gulong unmap_handler;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  gulong destroy_handler;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>  gulong response_handler;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> </div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>  <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> </div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a> = d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>  <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>  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>  response_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">"response"</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>), &mpri);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  unmap_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">"unmap"</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>), &mpri);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>  destroy_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">"destroy"</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>), &mpri);</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>  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> </div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>  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>  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>  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> </div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  <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>  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>  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>  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>  }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  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> </div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>  d-><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>  <span class="comment">// pthread_cleanup_push(ptcleanup, (void*)d);</span></div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  pthread_cond_init(&d-><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>  pthread_mutex_init(&d-><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>  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>  pthread_mutex_lock(&d-><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>  pthread_cond_wait(&d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, &d-><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>  <span class="comment">// pthread_cleanup_pop(0);</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  pthread_mutex_destroy(&d-><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>  pthread_cond_destroy(&d-><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> </div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>  rcbutton = d-><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>  }</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> </div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  g_free(d-><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>  g_free(d-><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>  g_free(d-><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>  g_free(d-><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>  g_free(d-><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>  g_free(d);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  <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> }</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> </div><div class="line"><a name="l01684"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b"> 1684</a></span> 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> {</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>  <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> }</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> </div><div class="line"><a name="l01689"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868"> 1689</a></span> 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>  <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> {</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>  <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>  default_password, default_domain, password_prompt == NULL ? _(<span class="stringliteral">"Password"</span>) : password_prompt);</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> }</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> </div><div class="line"><a name="l01697"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba"> 1697</a></span> 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> {</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <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> </div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>  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>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(remminafile) != NULL &&</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  !remminafile->prevent_saving && allow_password_saving)</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>  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> </div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"ssh_tunnel_username"</span>);</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>  password = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"ssh_tunnel_password"</span>);</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> </div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>  <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">"Type in SSH username and password."</span>), username,</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>  password, NULL, _(<span class="stringliteral">"Password"</span>));</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> }</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> </div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> <span class="comment">/*</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <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> <span class="comment"> * {</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> <span class="comment"> * TRACE_CALL(__func__);</span></div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> <span class="comment"> * unsigned pflags;</span></div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span> <span class="comment"> * RemminaFile* remminafile = gp->priv->remmina_file;</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span> <span class="comment"> * char *password_prompt;</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> <span class="comment"> * int rc;</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> <span class="comment"> *</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> <span class="comment"> * pflags = 0;</span></div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> <span class="comment"> * if (remmina_file_get_filename(remminafile) != NULL &&</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> <span class="comment"> * !remminafile->prevent_saving && allow_password_saving)</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span> <span class="comment"> * pflags |= REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD;</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> <span class="comment"> *</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <span class="comment"> * switch (authpwd_type) {</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> <span class="comment"> * case REMMINA_AUTHPWD_TYPE_PROTOCOL:</span></div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="comment"> * password_prompt = g_strdup_printf(_("%s password"), remmina_file_get_string(remminafile, "protocol"));</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> <span class="comment"> * break;</span></div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> <span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PWD:</span></div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> <span class="comment"> * password_prompt = g_strdup(_("SSH password"));</span></div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> <span class="comment"> * break;</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span> <span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PRIVKEY:</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> <span class="comment"> * password_prompt = g_strdup(_("SSH private key passphrase"));</span></div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span> <span class="comment"> * break;</span></div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> <span class="comment"> * default:</span></div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span> <span class="comment"> * password_prompt = g_strdup(_("Password"));</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> <span class="comment"> * break;</span></div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> <span class="comment"> * }</span></div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span> <span class="comment"> *</span></div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span> <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> <span class="comment"> * g_free(password_prompt);</span></div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> <span class="comment"> * return rc;</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> <span class="comment"> *</span></div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> <span class="comment"> * }</span></div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span> <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> 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> {</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span> </div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  <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> }</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> </div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span> </div><div class="line"><a name="l01759"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084"> 1759</a></span> 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> {</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  gchar *s;</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span> </div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"trust_all"</span>)) {</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  <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>  <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">"remmina-security-trust-all-id"</span>, _(<span class="stringliteral">"Fingerprint automatically accepted"</span>), fingerprint);</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>  rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  }</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>  <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>  s = g_strdup_printf(</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>  <span class="stringliteral">"<big>%s</big>\n\n%s %s\n%s %s\n%s %s\n\n<big>%s</big>"</span>,</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>  <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>  _(<span class="stringliteral">"Certificate details:"</span>),</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>  <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>  _(<span class="stringliteral">"Subject:"</span>), subject,</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>  <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>  _(<span class="stringliteral">"Issuer:"</span>), issuer,</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>  <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate's data and its signature.</span></div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>  _(<span class="stringliteral">"Fingerprint:"</span>), fingerprint,</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>  <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>  _(<span class="stringliteral">"Accept certificate?"</span>));</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>  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>  g_free(s);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> </div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>  <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>  <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> }</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> </div><div class="line"><a name="l01791"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1"> 1791</a></span> 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> {</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>  gchar *s;</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>  <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span> </div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"trust_all"</span>)) {</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  <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>  <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">"remmina-security-trust-all-id"</span>, _(<span class="stringliteral">"Fingerprint automatically accepted"</span>), new_fingerprint);</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>  rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>  }</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>  <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>  s = g_strdup_printf(</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  <span class="stringliteral">"<big>%s</big>\n\n%s %s\n%s %s\n%s %s\n%s %s\n\n<big>%s</big>"</span>,</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>  <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>  _(<span class="stringliteral">"The certificate changed! Details:"</span>),</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <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>  _(<span class="stringliteral">"Subject:"</span>), subject,</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  <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>  _(<span class="stringliteral">"Issuer:"</span>), issuer,</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate's data and its signature.</span></div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  _(<span class="stringliteral">"Old fingerprint:"</span>), old_fingerprint,</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate's data and its signature.</span></div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>  _(<span class="stringliteral">"New fingerprint:"</span>), new_fingerprint,</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  <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>  _(<span class="stringliteral">"Accept changed certificate?"</span>));</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>  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>  g_free(s);</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> </div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  <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>  <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> }</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span> </div><div class="line"><a name="l01825"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0"> 1825</a></span> 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> {</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>  <span class="keywordflow">return</span> g_strdup(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span> </div><div class="line"><a name="l01831"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923"> 1831</a></span> 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> {</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>  <span class="keywordflow">return</span> g_strdup(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span> </div><div class="line"><a name="l01837"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac"> 1837</a></span> 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> {</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>  <span class="keywordflow">return</span> g_strdup(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div><div class="line"><a name="l01843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d"> 1843</a></span> 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> {</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span> </div><div class="line"><a name="l01849"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d"> 1849</a></span> 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> {</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  gchar *s;</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span> </div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> s && s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span> }</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> </div><div class="line"><a name="l01858"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3"> 1858</a></span> 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> {</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  gchar *s;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span> </div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> s && s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> }</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> </div><div class="line"><a name="l01867"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b"> 1867</a></span> 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> {</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>  gchar *s;</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> </div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> s && s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span> }</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span> </div><div class="line"><a name="l01876"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1"> 1876</a></span> 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> {</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>  gchar *s;</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> </div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> s && s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span> }</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span> </div><div class="line"><a name="l01885"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504"> 1885</a></span> <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> {</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> </div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gchar *s;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>  gboolean save = FALSE;</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span> </div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>  }</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span> </div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>  <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>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"username"</span>, s);</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>  save = TRUE;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>  }</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"cacert"</span>, s);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>  save = TRUE;</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>  }</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"cacrl"</span>, s);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>  save = TRUE;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>  }</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"clientcert"</span>, s);</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>  save = TRUE;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>  }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"clientkey"</span>, s);</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>  save = TRUE;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  save = TRUE;</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  }</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  <span class="keywordflow">if</span> (save)</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  <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> }</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span> </div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span> </div><div class="line"><a name="l01939"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d"> 1939</a></span> <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> {</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>  gchar *s;</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span> </div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  }</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span> </div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  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>  s = g_strdup_printf(</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  <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>  _(<span class="stringliteral">"Listening on port %i for an incoming %s connection…"</span>), port,</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"protocol"</span>));</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>  <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>  g_free(s);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-><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> }</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span> </div><div class="line"><a name="l01968"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895"> 1968</a></span> <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> {</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span> </div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>  }</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> </div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  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>  <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">"Could not authenticate, attempting reconnection…"</span>), NULL, NULL);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-><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> }</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span> </div><div class="line"><a name="l01989"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b"> 1989</a></span> <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> {</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>  printf(<span class="stringliteral">"Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n"</span>, __func__);</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span> }</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span> </div><div class="line"><a name="l01995"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad"> 1995</a></span> <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> {</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>  printf(<span class="stringliteral">"Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n"</span>, __func__);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> }</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span> </div><div class="line"><a name="l02001"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d"> 2001</a></span> <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> {</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span> </div><div class="line"><a name="l02007"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2"> 2007</a></span> <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>  <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> {</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gtk_window_present(GTK_WINDOW(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  g_signal_connect_swapped(G_OBJECT(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">"send"</span>, G_CALLBACK(on_send), gp);</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>  g_signal_connect_swapped(G_OBJECT(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">"destroy"</span>,</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>  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>  g_signal_connect_swapped(G_OBJECT(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">"destroy"</span>, G_CALLBACK(on_destroy), gp);</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>  gtk_widget_show(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span> }</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span> </div><div class="line"><a name="l02023"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953"> 2023</a></span> <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> {</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gtk_widget_destroy(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> </div><div class="line"><a name="l02030"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0"> 2030</a></span> <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> {</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>  <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> </div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  }</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>  <a class="code" href="remmina__chat__window_8c.html#a45724aed5474dd741563ffbf89237022">remmina_chat_window_receive</a>(REMMINA_CHAT_WINDOW(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), _(<span class="stringliteral">"Server"</span>), text);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  gtk_window_present(GTK_WINDOW(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span> }</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span> </div><div class="line"><a name="l02052"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8"> 2052</a></span> <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> {</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>  <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> </div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><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> </div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>  <span class="comment">/* Locate the protocol plugin */</span></div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>  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>  <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"protocol"</span>));</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> </div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>  <span class="keywordflow">if</span> (!plugin || !plugin-><a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a> || !plugin-><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>  <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>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, _(<span class="stringliteral">"Install the %s protocol plugin first."</span>),</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>  <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"protocol"</span>));</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>  }</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><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> </div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"scale"</span>, FALSE);</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"scaler_expand"</span>, FALSE);</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> }</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> </div><div class="line"><a name="l02077"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb"> 2077</a></span> 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> {</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#affd4a8e1c05f88299990bb0f3d5d1b9d">rcw_get_gtkwindow</a>(gp-><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> }</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span> </div><div class="line"><a name="l02082"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045"> 2082</a></span> 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> {</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a96f1d274dafe5e4953da52beb75f7d14">rcw_get_gtkviewport</a>(gp-><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> }</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> </div><div class="line"><a name="l02087"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62"> 2087</a></span> 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> {</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  <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> }</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> </div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> <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> <span class="comment"> * key-release events.</span></div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span> <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> <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> <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> {</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  GdkEventKey event;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>  gboolean result;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> </div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  <span class="keyword">event</span>.window = gtk_widget_get_window(widget);</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>  <span class="keyword">event</span>.send_event = TRUE;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  <span class="keyword">event</span>.time = GDK_CURRENT_TIME;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>  <span class="keyword">event</span>.state = 0;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>  <span class="keyword">event</span>.length = 0;</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>  <span class="keyword">event</span>.string = <span class="stringliteral">""</span>;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>  <span class="keyword">event</span>.group = 0;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span> </div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>  <span class="keywordflow">if</span> (action & GDK_KEY_PRESS) {</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>  <span class="comment">/* Press the requested buttons */</span></div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>  <span class="keyword">event</span>.type = GDK_KEY_PRESS;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>  <span class="keywordflow">for</span> (i = 0; i < keyvals_length; i++) {</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>  <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>  <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>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Sending keyval: %u, hardware_keycode: %u"</span>, event.keyval, event.hardware_keycode);</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">"key-press-event"</span>, &event, &result);</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  }</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>  }</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span> </div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>  <span class="keywordflow">if</span> (action & GDK_KEY_RELEASE) {</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>  <span class="comment">/* Release the requested buttons in reverse order */</span></div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>  <span class="keyword">event</span>.type = GDK_KEY_RELEASE;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  <span class="keywordflow">for</span> (i = (keyvals_length - 1); i >= 0; i--) {</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>  <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>  <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>  g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">"key-release-event"</span>, &event, &result);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  }</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  }</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span> }</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div><div class="line"><a name="l02136"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767"> 2136</a></span> <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> {</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>  GdkRectangle rect;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>  gint w, h;</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>  gint wfile, hfile;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>  <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>  <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> </div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>  <a class="code" href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, &rect);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span> </div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>  <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> </div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>  res_mode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"resolution_mode"</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>  scalemode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"scale"</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>  wfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"resolution_width"</span>, -1);</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>  hfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"resolution_height"</span>, -1);</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> </div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  <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> <span class="comment"> * as we did before having resolution_mode */</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>  <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>  <span class="keywordflow">if</span> (wfile <= 0 || hfile <= 0)</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>  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>  <span class="keywordflow">else</span></div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>  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>  }</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> </div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>  <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>  <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>  GtkAllocation al;</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>  gtk_widget_get_allocation(GTK_WIDGET(gp), &al);</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>  <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>  w = al.width - al.width % 4;</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>  h = al.height - al.height % 4;</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>  <span class="keywordflow">if</span> (w < 10) {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  printf(<span class="stringliteral">"Remmina warning: %s RemminaProtocolWidget w=%d h=%d are too small, adjusting to 640x480\n"</span>, __func__, w, h);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>  w = 640;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>  h = 480;</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>  }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>  <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> <span class="comment"> * Adjust to fit. */</span></div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>  <span class="keywordflow">if</span> (w > rect.width)</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>  w = rect.width;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  <span class="keywordflow">if</span> (h > rect.height)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>  h = rect.height;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>  } <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>  w = rect.width;</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  h = rect.height;</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  w = wfile;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>  h = hfile;</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>  }</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <gtk/gtkx.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <gmodule.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="remmina__chat__window_8h.html">remmina_chat_window.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "<a class="code" href="remmina__ext__exec_8h.html">remmina_ext_exec.h</a>"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "<a class="code" href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a>"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include <gdk/gdkwayland.h></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html"> 60</a></span> <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>  <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>  <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>  <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> </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>  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>  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>  <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>  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> </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>  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>  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>  <span class="comment">/* ssh_tunnels is an array of RemminaSSHTunnel*</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment"> * the 1st one is the "main" 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>  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>  <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> </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>  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> </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>  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> </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>  <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> </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>  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>  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>  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> </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>  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>  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>  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> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <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>  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>  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>  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>  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> </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>  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>  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>  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>  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> };</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373"> 103</a></span> <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32"> 109</a></span> <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> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">enum</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  CONNECT_SIGNAL,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  DISCONNECT_SIGNAL,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  DESKTOP_RESIZE_SIGNAL,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  UPDATE_ALIGN_SIGNAL,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  LOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  UNLOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> };</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </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> <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>  <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>  <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> } <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> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130"> 126</a></span> <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> { 0 };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74"> 129</a></span> <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> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[CONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">"connect"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DISCONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">"disconnect"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DESKTOP_RESIZE_SIGNAL] = g_signal_new(<span class="stringliteral">"desktop-resize"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UPDATE_ALIGN_SIGNAL] = g_signal_new(<span class="stringliteral">"update-align"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[LOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">"lock-dynres"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UNLOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">"unlock-dynres"</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  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>  g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1"> 153</a></span> <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> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> && gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">for</span> (i = 0; i < gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len; i++) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[i]);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  REMMINA_DEBUG(<span class="stringliteral">"LibSSH support turned off, no need to free SSH tunnel data"</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  g_ptr_array_set_size(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f"> 171</a></span> <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> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  g_free(gp-><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>  gp-><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> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <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> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> && gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  g_ptr_array_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1"> 216</a></span> <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> {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  GtkWidget *child;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  child = gtk_bin_get_child(GTK_BIN(gp));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span> (child) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  gtk_widget_set_can_focus(child, TRUE);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  gtk_widget_grab_focus(child);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df"> 229</a></span> <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> {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <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> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  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>  gp-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  g_signal_connect(G_OBJECT(gp), <span class="stringliteral">"destroy"</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> }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd"> 242</a></span> <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> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <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> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  REMMINA_DEBUG(<span class="stringliteral">"Opening connection"</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <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>  <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>  gint num_plugin;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  gint num_ssh;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  plugin = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  plugin-><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> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">for</span> (num_plugin = 0, feature = (<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *)plugin-><a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature && feature-><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>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  num_ssh = 0;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_enabled"</span>, FALSE))</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  num_ssh += 2;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (num_plugin + num_ssh == 0) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  feature = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (plugin-><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>  memcpy(feature, plugin-><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>  feature += num_plugin;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  REMMINA_DEBUG(<span class="stringliteral">"Have SSH"</span>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (num_ssh) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  feature-><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>  feature-><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>  feature-><a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">"Connect via SSH from a new terminal"</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  feature-><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>  feature-><a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">"utilities-terminal"</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  feature-><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>  feature-><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>  feature-><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>  feature++;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  feature-><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>  feature-><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>  feature-><a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">"Open SFTP transfer…"</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  feature-><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>  feature-><a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">"folder-remote"</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  feature-><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>  feature-><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>  feature-><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>  feature++;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  feature-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (!plugin-><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>  <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> }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5"> 308</a></span> <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> {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <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> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <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> }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b"> 315</a></span> <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> {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  gchar *s;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">const</span> gchar *name;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">/* Exec precommand before everything else */</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  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>  <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">"Executing external commands…"</span>), NULL, NULL);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-><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> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"precommand"</span>);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-><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> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  name = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"name"</span>);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <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>  s = g_strdup_printf(_(<span class="stringliteral">"Connecting to “%s”…"</span>), (name ? name : <span class="stringliteral">"*"</span>));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  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>  <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>  g_free(s);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-><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> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <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> }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016"> 343</a></span> <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> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <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> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">/* This will close all tunnels */</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="comment">/* Exec postcommand */</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"postcommand"</span>);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <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>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"disconnect"</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261"> 359</a></span> <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> {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <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> <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  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> }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48"> 368</a></span> <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> {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <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> </div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">for</span> (guint i = 0; i < gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len; i++)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[i]);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"connect"</span>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c"> 391</a></span> <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> {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <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> <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  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> }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a"> 399</a></span> <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> {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <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> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"update-align"</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e"> 408</a></span> <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> {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  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> }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc"> 415</a></span> <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> {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <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> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"lock-dynres"</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e"> 424</a></span> <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> {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <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> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"unlock-dynres"</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> </div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457"> 433</a></span> <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> {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  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> }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d"> 440</a></span> <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> {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  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> }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565"> 447</a></span> <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> {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <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> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"desktop-resize"</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee"> 456</a></span> <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> {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <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>  TRACE_CALL(__func__);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  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> }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22"> 464</a></span> <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> {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <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> <span class="comment"> * Nothing else is done here. */</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span> (!GTK_IS_WIDGET(gp))</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gtk_widget_destroy(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <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> <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> <span class="comment"> */</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">/* Clear the current error, or "disconnect" signal func will reshow a panel */</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <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>  g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">"disconnect"</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">/* Ask the plugin to close, async.</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment"> * The plugin will emit a "disconnect" signal on gp to call our</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="comment"> * remmina_protocol_widget_on_disconnected() when done */</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> </div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601"> 499</a></span> 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> {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> </div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471"> 507</a></span> <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> {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  gchar *keystrokes = g_object_get_data(G_OBJECT(widget), <span class="stringliteral">"keystrokes"</span>);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  guint *keyvals;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  gint i;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  gunichar character;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  guint keyval;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  GdkKeymapKey *keys;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  gint n_keys;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  gchar * search;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  gchar * replace;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  guint keyval;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  } KeystrokeReplace;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  KeystrokeReplace keystrokes_replaces[] =</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  { <span class="stringliteral">"\\n"</span>, <span class="stringliteral">"\n"</span>, GDK_KEY_Return },</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  { <span class="stringliteral">"\\t"</span>, <span class="stringliteral">"\t"</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  { <span class="stringliteral">"\\b"</span>, <span class="stringliteral">"\b"</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  { <span class="stringliteral">"\\e"</span>, <span class="stringliteral">"\e"</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  { <span class="stringliteral">"\\\\"</span>, <span class="stringliteral">"\\"</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  { NULL, NULL, 0 }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  };</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <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>  <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>  <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Keystrokes before replacement is \'%s\'"</span>, keystrokes);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  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>  keystrokes_replaces[i].search,</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  keystrokes_replaces[i].replace));</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  REMMINA_DEBUG(<span class="stringliteral">"Keystrokes after replacement is \'%s\'"</span>, keystrokes);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  gchar *iter = g_strdup(keystrokes);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  keyvals = (guint *)g_malloc(strlen(keystrokes));</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <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>  <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>  <span class="keywordflow">if</span> (character == keystrokes_replaces[i].replace[0]) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  keyval = keystrokes_replaces[i].keyval;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <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>  character = 0;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  }</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <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>  <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &keys, &n_keys)) {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  g_warning(<span class="stringliteral">"keyval 0x%04x has no keycode!"</span>, keyval);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  n_keys = 0;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span> (keys->level & 1)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">if</span> (keys->level & 2)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  g_free(keys);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  g_free(keyvals);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  g_free(keystrokes);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06"> 598</a></span> <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> {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <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>  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>  guint *keyvals;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  gint i;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  gunichar character;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  guint keyval;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  GdkKeymapKey *keys;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  gint n_keys;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  gchar * search;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  gchar * replace;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  guint keyval;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  } KeystrokeReplace;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  KeystrokeReplace text_replaces[] =</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  { <span class="stringliteral">"\\n"</span>, <span class="stringliteral">"\n"</span>, GDK_KEY_Return },</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  { <span class="stringliteral">"\\t"</span>, <span class="stringliteral">"\t"</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  { <span class="stringliteral">"\\b"</span>, <span class="stringliteral">"\b"</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  { <span class="stringliteral">"\\e"</span>, <span class="stringliteral">"\e"</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  { <span class="stringliteral">"\\\\"</span>, <span class="stringliteral">"\\"</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  { NULL, NULL, 0 }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  };</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> </div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <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>  <span class="keywordflow">if</span> (text) {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Text clipboard before replacement is \'%s\'"</span>, text);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  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>  text_replaces[i].search,</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  text_replaces[i].replace));</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  REMMINA_DEBUG(<span class="stringliteral">"Text clipboard after replacement is \'%s\'"</span>, text);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  gchar *iter = g_strdup(text);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  REMMINA_DEBUG(<span class="stringliteral">"Iter: %s"</span>, iter),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  keyvals = (guint *)g_malloc(strlen(text));</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  REMMINA_DEBUG(<span class="stringliteral">"Char: U+%04"</span> G_GINT32_FORMAT<span class="stringliteral">"X"</span>, character);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  REMMINA_DEBUG(<span class="stringliteral">"Keyval: %u"</span>, keyval);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <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>  <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>  <span class="keywordflow">if</span> (character == text_replaces[i].replace[0]) {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  keyval = text_replaces[i].keyval;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  REMMINA_DEBUG(<span class="stringliteral">"Special Keyval: %u"</span>, keyval);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <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>  character = 0;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <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>  <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &keys, &n_keys)) {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  REMMINA_WARNING(<span class="stringliteral">"keyval 0x%04x has no keycode!"</span>, keyval);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  }</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  n_keys = 0;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">if</span> (keys->level & 1)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">if</span> (keys->level & 2)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="comment">/*</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="comment"> * @fixme heap buffer overflow</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <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> <span class="comment"> * may lead to a buffer overflow</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  g_free(keys);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  g_free(keyvals);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  g_free(text);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> </div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1"> 694</a></span> <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> {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  GtkClipboard *clipboard;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> </div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <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> <span class="comment"> * called when we do get the contents.</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> <span class="comment"> */</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  gtk_clipboard_request_text(clipboard,</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <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> }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca"> 708</a></span> 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> {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keywordflow">if</span> (!gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"plugin screenshot function is not implemented, using core Remmina functionality"</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> </div><div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435"> 719</a></span> 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> {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">if</span> (!gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"Map plugin function not implemented"</span>);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> </div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling plugin mapping function"</span>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> </div><div class="line"><a name="l00731"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a"> 731</a></span> 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> {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">if</span> (!gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"Unmap plugin function not implemented"</span>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  }</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> </div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling plugin unmapping function"</span>);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> </div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b"> 743</a></span> <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> {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  REMMINA_DEBUG(<span class="stringliteral">"Emitting signals should be used from the object itself, not from another object"</span>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keyword">raise</span>(SIGINT);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> </div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  g_signal_emit_by_name(G_OBJECT(gp), signal_name);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd"> 764</a></span> <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> {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> </div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d"> 770</a></span> 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> {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <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> </div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">if</span> (type == <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a> &&</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_enabled"</span>, FALSE))</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">for</span> (feature = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature && feature-><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>  <span class="keywordflow">if</span> (feature-><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>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> }</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a"> 787</a></span> 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> {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9"> 793</a></span> <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> {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <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> </div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">for</span> (feature = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature && feature-><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>  <span class="keywordflow">if</span> (feature-><a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type && (<span class="keywordtype">id</span> == 0 || feature-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> }</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692"> 806</a></span> <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> {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">switch</span> (feature-><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> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SSH:</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> && gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len > 0) {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <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>  <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"SSH"</span>), NULL,</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[0], NULL);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> </div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SFTP:</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> && gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len > 0) {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <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>  <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"SFTP"</span>), NULL,</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[0], NULL);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  }</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-><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> }</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> </div><div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1"> 835</a></span> <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> {</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event->keyval, FALSE);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> }</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0"> 843</a></span> <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> {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event->keyval, TRUE);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> </div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c"> 852</a></span> <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> {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  g_signal_connect(G_OBJECT(widget), <span class="stringliteral">"key-press-event"</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>  g_signal_connect(G_OBJECT(widget), <span class="stringliteral">"key-release-event"</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> }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> </div><div class="line"><a name="l00859"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8"> 859</a></span> <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> {</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> </div><div class="line"><a name="l00865"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1"> 865</a></span> 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> {</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> </div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  <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>  mp = d-><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>  g_free(d);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> </div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  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>  <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>  <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>  <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> }</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> </div><div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5"> 890</a></span> <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> {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <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> }</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> </div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> <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> <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> {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  printf(<span class="stringliteral">"Remmina: Cancelling an opening tunnel is not implemented\n"</span>);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> }</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> </div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3"> 912</a></span> <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> {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <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>  gint ret;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  gchar *msg;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  gboolean partial = FALSE;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  gboolean cont = FALSE;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  tunnel = <a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  REMMINA_DEBUG(<span class="stringliteral">"Creating SSH tunnel to “%s” via SSH…"</span>, REMMINA_SSH(tunnel)->server);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <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>  msg = g_strdup_printf(_(<span class="stringliteral">"Connecting to “%s” via SSH…"</span>), REMMINA_SSH(tunnel)->server);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> </div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-><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>  g_free(msg);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> </div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> </div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">if</span> (!partial) {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH Tunnel init session error: %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  }</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> </div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"Tunnel auth returned %d"</span>, ret);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Authentication success"</span>);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Continue with the next auth method"</span>);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  partial = TRUE;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Reconnecting…"</span>);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)->session) {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  ssh_disconnect(REMMINA_SSH(tunnel)->session);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  ssh_free(REMMINA_SSH(tunnel)->session);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  REMMINA_SSH(tunnel)->session = NULL;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  g_free(REMMINA_SSH(tunnel)->callback);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Interrupted by the user"</span>);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  REMMINA_DEBUG(<span class="stringliteral">"Error during the authentication: %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  }</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  cont = TRUE;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> </div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="preprocessor">#if 0</span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> </div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot init SSH session with tunnel struct"</span>);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> </div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  REMMINA_DEBUG(<span class="stringliteral">"Tunnel auth returned %d"</span>, ret);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <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>  <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>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  }</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> </div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> BREAK:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">if</span> (!cont) {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-><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> </div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">return</span> tunnel;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> }</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> </div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <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> <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> {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  printf(<span class="stringliteral">"Remmina: Cancelling start_direct_tunnel is not implemented\n"</span>);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb"> 1021</a></span> <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> {</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <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>  guint idx = 0;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="preprocessor">#if GLIB_CHECK_VERSION(2, 54, 0)</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  gboolean found = g_ptr_array_find(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel, &idx);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  gboolean found = FALSE;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <span class="keywordflow">for</span> (i = 0; i < gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len; i++) {</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keywordflow">if</span> ((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[i] == tunnel) {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  found = TRUE;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  idx = i;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  }</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  }</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> </div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  printf(<span class="stringliteral">"Tunnel %s found at idx = %d\n"</span>, found ? <span class="stringliteral">"yes"</span>: <span class="stringliteral">"not"</span>, idx);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">if</span> (found) {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  REMMINA_DEBUG(<span class="stringliteral">"[Tunnel with idx %u has been disconnected"</span>, idx);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  g_ptr_array_remove(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> }</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> </div><div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7"> 1057</a></span> 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> {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keyword">const</span> gchar *ssh_tunnel_server;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  gchar *ssh_tunnel_host, *srv_host, *dest;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  gint srv_port, ssh_tunnel_port = 0;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH tunnel initialization…"</span>);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> </div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"server"</span>);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  ssh_tunnel_server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_server"</span>);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="keywordflow">if</span> (!server)</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">return</span> g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> </div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keywordflow">if</span> (strstr(g_strdup(server), <span class="stringliteral">"unix:///"</span>) != NULL) {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  REMMINA_DEBUG(<span class="stringliteral">"%s is a UNIX socket"</span>, server);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordflow">return</span> g_strdup(server);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  }</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, default_port, &srv_host, &srv_port);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port (tunnel)"</span>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(ssh_tunnel_server, 22, &ssh_tunnel_host, &ssh_tunnel_port);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  REMMINA_DEBUG(<span class="stringliteral">"server: %s, port: %d"</span>, srv_host, srv_port);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordflow">if</span> (port_plus && srv_port < 100)</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <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>  srv_port += default_port;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> </div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  gchar *msg;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <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> </div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_enabled"</span>, FALSE)) {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  dest = g_strdup_printf(<span class="stringliteral">"[%s]:%i"</span>, srv_host, srv_port);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  g_free(srv_host);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">return</span> dest;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  }</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</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="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  g_free(srv_host);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  REMMINA_DEBUG(<span class="stringliteral">"remmina_protocol_widget_init_tunnel failed with error is %s"</span>,</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <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>  msg = g_strdup_printf(_(<span class="stringliteral">"Connecting to “%s” via SSH…"</span>), server);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-><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>  g_free(msg);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_loopback"</span>, FALSE)) {</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  g_free(srv_host);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  ssh_tunnel_host = NULL;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  srv_host = g_strdup(<span class="stringliteral">"127.0.0.1"</span>);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  REMMINA_DEBUG(<span class="stringliteral">"Starting tunnel to: %s, port: %d"</span>, ssh_tunnel_host, ssh_tunnel_port);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <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>  g_free(srv_host);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  }</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  g_free(srv_host);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> </div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-><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> </div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  g_ptr_array_add(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">"127.0.0.1:%i"</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> </div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> </div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  dest = g_strdup_printf(<span class="stringliteral">"[%s]:%i"</span>, srv_host, srv_port);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  g_free(srv_host);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  g_free(ssh_tunnel_host);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <span class="keywordflow">return</span> dest;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> }</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> </div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> <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> <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> {</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  printf(<span class="stringliteral">"Remmina: Cancelling start_reverse_tunnel is not implemented\n"</span>);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> }</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> </div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> </div><div class="line"><a name="l01159"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c"> 1159</a></span> 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> {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  gchar *msg;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <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> </div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"ssh_tunnel_enabled"</span>, FALSE))</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> </div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> </div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <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>  msg = g_strdup_printf(_(<span class="stringliteral">"Awaiting incoming SSH connection on port %i…"</span>), <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"listenport"</span>, 0));</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-><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>  g_free(msg);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"listenport"</span>, 0), local_port)) {</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <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>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-><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>  g_ptr_array_add(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span> </div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> }</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div><div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a"> 1190</a></span> 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> {</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <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>  ssh_channel channel;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  gint status;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  gboolean ret = FALSE;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  gchar *cmd, *ptr;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  va_list args;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len < 1)</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> </div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[0];</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> </div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  if ((channel = ssh_channel_new(REMMINA_SSH(tunnel)->session)) == NULL)</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> </div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  va_start(args, fmt);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  cmd = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  va_end(args);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <span class="keywordflow">if</span> (ssh_channel_open_session(channel) == SSH_OK &&</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  ssh_channel_request_exec(channel, cmd) == SSH_OK) {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keywordflow">if</span> (wait) {</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  status = ssh_channel_get_exit_status(channel);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  ptr = strchr(cmd, <span class="charliteral">' '</span>);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordflow">if</span> (ptr) *ptr = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="keywordflow">switch</span> (status) {</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  ret = TRUE;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  <span class="keywordflow">case</span> 127:</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <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>  <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>  _(<span class="stringliteral">"The “%s” command is not available on the SSH server."</span>), cmd);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  <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>  <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>  _(<span class="stringliteral">"Could not run the “%s” command on the SSH server (status = %i)."</span>), cmd, status);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  }</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  ret = TRUE;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  }</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not run command. %s"</span>));</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  }</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  g_free(cmd);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span> (wait)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  ssh_channel_close(channel);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  ssh_channel_free(channel);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> </div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> </div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> }</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> <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> <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> {</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <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>  gchar *server;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  gint port;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  gboolean ret;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> </div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"server"</span>), 177, &server, &port);</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  ret = ((<a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a>)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>, (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">"localhost"</span> : server), port);</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  g_free(server);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> </div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> }</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> </div><div class="line"><a name="l01273"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee"> 1273</a></span> <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> {</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> }</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> </div><div class="line"><a name="l01279"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d"> 1279</a></span> <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> {</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <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> </div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)->error)</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">"%s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> </div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  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>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> }</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> <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> <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> {</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  printf(<span class="stringliteral">"Remmina: Cancelling an XPort connection is not implemented\n"</span>);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> }</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> <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> 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> {</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  gboolean bindlocalhost;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  gchar *server;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  gchar *msg;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <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> </div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <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> </div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <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>  msg = g_strdup_printf(_(<span class="stringliteral">"Connecting to %s via SSH…"</span>), <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"server"</span>));</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-><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>  g_free(msg);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"server"</span>), 0, &server, NULL);</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  bindlocalhost = (g_strcmp0(REMMINA_SSH(tunnel)->server, server) == 0);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  g_free(server);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> </div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  <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>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">"Could not open channel, %s"</span>,</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  ssh_get_error(REMMINA_SSH(tunnel)->session));</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> </div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-><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>  g_ptr_array_add(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> </div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> }</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> </div><div class="line"><a name="l01342"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54"> 1342</a></span> <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> {</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  <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>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->len < 1)</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>->pdata[0];</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  if (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>) g_free(tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a> = g_strdup_printf(<span class="stringliteral">"unix:%i"</span>, display);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> }</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> </div><div class="line"><a name="l01355"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907"> 1355</a></span> 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> {</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div><div class="line"><a name="l01362"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb"> 1362</a></span> 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> {</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  <span class="comment">/* Returns ehenever multi monitor is enabled (1) */</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"multimon"</span>, -1);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  REMMINA_DEBUG(<span class="stringliteral">"Multi monitor is set to %d"</span>, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> </div><div class="line"><a name="l01371"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9"> 1371</a></span> 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> {</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  <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>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> </div><div class="line"><a name="l01378"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f"> 1378</a></span> <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> {</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  <span class="keywordflow">return</span> gp ? gp-><a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> ? gp-><a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a>-><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> }</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> </div><div class="line"><a name="l01384"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995"> 1384</a></span> 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> {</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> </div><div class="line"><a name="l01390"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380"> 1390</a></span> <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> {</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> </div><div class="line"><a name="l01396"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5"> 1396</a></span> 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> {</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> </div><div class="line"><a name="l01402"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044"> 1402</a></span> <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> {</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> </div><div class="line"><a name="l01408"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7"> 1408</a></span> <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> {</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span> </div><div class="line"><a name="l01414"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48"> 1414</a></span> <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> {</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> </div><div class="line"><a name="l01420"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25"> 1420</a></span> 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> {</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> </div><div class="line"><a name="l01426"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa"> 1426</a></span> <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> {</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> }</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> </div><div class="line"><a name="l01433"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771"> 1433</a></span> 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> {</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> </div><div class="line"><a name="l01439"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29"> 1439</a></span> <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> {</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> </div><div class="line"><a name="l01445"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af"> 1445</a></span> <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> {</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  va_list args;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> </div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>) g_free(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  <span class="keywordflow">if</span> (fmt == NULL) {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  }</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> </div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  va_start(args, fmt);</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  va_end(args);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> </div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> </div><div class="line"><a name="l01465"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3"> 1465</a></span> 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> {</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div><div class="line"><a name="l01471"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069"> 1471</a></span> <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> {</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> </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> <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>  <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>  <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>  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>  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>  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>  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>  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>  <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>  <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>  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>  <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>  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>  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>  <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>  <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> };</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> </div><div class="line"><a name="l01495"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb"> 1495</a></span> <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> {</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</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> *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> </div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  d-><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>  <span class="keywordflow">if</span> (button == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  <span class="keywordflow">if</span> (d-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>  }</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> </div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>  <span class="keywordflow">if</span> (d-><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>  <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>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  <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>  pthread_mutex_lock(&d-><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>  pthread_cond_signal(&d-><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>  pthread_mutex_unlock(&d-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  <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>  <a class="code" href="remmina__message__panel_8c.html#af7db7b9f49fe6b83b17471116d363d40">remmina_message_panel_response</a>(d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> }</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> </div><div class="line"><a name="l01528"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113"> 1528</a></span> <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> {</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</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> *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> </div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  <span class="keyword">const</span> gchar *s;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> </div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>  <span class="keywordflow">if</span> (d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> </div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  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> </div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  <span class="keywordflow">if</span> (d-><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>  <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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>, d-><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>  <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-><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>  <span class="keywordflow">if</span> (d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> & <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>  <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-><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>  <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-><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>  <span class="keywordflow">if</span> (d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> & <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>  <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-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> == NULL || d-><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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-><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>  <a class="code" href="remmina__message__panel_8c.html#ae5b1825b5d4e56ecc2f25c28bb042c32">remmina_message_panel_setup_question</a>(mp, d-><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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-><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>  <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>  <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"cacert"</span>)) != NULL)</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <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>  <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"cacrl"</span>)) != NULL)</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  <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>  <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"clientcert"</span>)) != NULL)</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <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>  <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"clientkey"</span>)) != NULL)</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  <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>  }</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> </div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><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> </div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> }</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> </div><div class="line"><a name="l01569"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html"> 1569</a></span> <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>  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>  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>  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>  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> } <a class="code" href="struct_mp_run_info.html">MpRunInfo</a>;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div><div class="line"><a name="l01576"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572"> 1576</a></span> <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> {</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  <span class="keywordflow">if</span> (g_main_loop_is_running(mpri-><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>  g_main_loop_quit(mpri-><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> }</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> </div><div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf"> 1582</a></span> <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> {</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  <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> </div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  mpri-><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>  <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> }</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> </div><div class="line"><a name="l01590"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d"> 1590</a></span> <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> {</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  <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> </div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  mpri-><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>  <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> }</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> </div><div class="line"><a name="l01598"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8"> 1598</a></span> <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> {</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  <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> </div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>  mpri-><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>  mpri-><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>  <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> }</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span> </div><div class="line"><a name="l01607"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54"> 1607</a></span> <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>  <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>  <span class="keyword">const</span> gchar *strpasswordlabel)</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> {</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> </div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</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> *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>  <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> </div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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>  d-><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> </div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  <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>  <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>  <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> </div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  gulong unmap_handler;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  gulong destroy_handler;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>  gulong response_handler;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> </div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>  <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> </div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a> = d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>  <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>  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>  response_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">"response"</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>), &mpri);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  unmap_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">"unmap"</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>), &mpri);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>  destroy_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">"destroy"</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>), &mpri);</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>  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> </div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>  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>  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>  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> </div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  <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>  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>  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>  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>  }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  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> </div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> </div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>  d-><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>  <span class="comment">// pthread_cleanup_push(ptcleanup, (void*)d);</span></div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  pthread_cond_init(&d-><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>  pthread_mutex_init(&d-><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>  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>  pthread_mutex_lock(&d-><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>  pthread_cond_wait(&d-><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, &d-><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>  <span class="comment">// pthread_cleanup_pop(0);</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  pthread_mutex_destroy(&d-><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>  pthread_cond_destroy(&d-><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> </div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>  rcbutton = d-><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>  }</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> </div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  g_free(d-><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>  g_free(d-><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>  g_free(d-><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>  g_free(d-><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>  g_free(d-><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>  g_free(d);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  <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> }</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> </div><div class="line"><a name="l01684"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b"> 1684</a></span> 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> {</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>  <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> }</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> </div><div class="line"><a name="l01689"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868"> 1689</a></span> 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>  <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> {</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>  <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>  default_password, default_domain, password_prompt == NULL ? _(<span class="stringliteral">"Password"</span>) : password_prompt);</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> }</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> </div><div class="line"><a name="l01697"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba"> 1697</a></span> 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> {</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <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> </div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>  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>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(remminafile) != NULL &&</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  !remminafile->prevent_saving && allow_password_saving)</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>  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> </div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"ssh_tunnel_username"</span>);</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>  password = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"ssh_tunnel_password"</span>);</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> </div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>  <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">"Type in SSH username and password."</span>), username,</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>  password, NULL, _(<span class="stringliteral">"Password"</span>));</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> }</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> </div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> <span class="comment">/*</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <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> <span class="comment"> * {</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> <span class="comment"> * TRACE_CALL(__func__);</span></div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> <span class="comment"> * unsigned pflags;</span></div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span> <span class="comment"> * RemminaFile* remminafile = gp->priv->remmina_file;</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span> <span class="comment"> * char *password_prompt;</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> <span class="comment"> * int rc;</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> <span class="comment"> *</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> <span class="comment"> * pflags = 0;</span></div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> <span class="comment"> * if (remmina_file_get_filename(remminafile) != NULL &&</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> <span class="comment"> * !remminafile->prevent_saving && allow_password_saving)</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span> <span class="comment"> * pflags |= REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD;</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> <span class="comment"> *</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <span class="comment"> * switch (authpwd_type) {</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> <span class="comment"> * case REMMINA_AUTHPWD_TYPE_PROTOCOL:</span></div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="comment"> * password_prompt = g_strdup_printf(_("%s password"), remmina_file_get_string(remminafile, "protocol"));</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> <span class="comment"> * break;</span></div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> <span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PWD:</span></div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> <span class="comment"> * password_prompt = g_strdup(_("SSH password"));</span></div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> <span class="comment"> * break;</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span> <span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PRIVKEY:</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> <span class="comment"> * password_prompt = g_strdup(_("SSH private key passphrase"));</span></div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span> <span class="comment"> * break;</span></div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> <span class="comment"> * default:</span></div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span> <span class="comment"> * password_prompt = g_strdup(_("Password"));</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> <span class="comment"> * break;</span></div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> <span class="comment"> * }</span></div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span> <span class="comment"> *</span></div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span> <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> <span class="comment"> * g_free(password_prompt);</span></div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> <span class="comment"> * return rc;</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> <span class="comment"> *</span></div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> <span class="comment"> * }</span></div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span> <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> 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> {</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span> </div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  <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> }</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> </div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span> </div><div class="line"><a name="l01759"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084"> 1759</a></span> 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> {</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  gchar *s;</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span> </div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"trust_all"</span>)) {</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  <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>  <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">"remmina-security-trust-all-id"</span>, _(<span class="stringliteral">"Fingerprint automatically accepted"</span>), fingerprint);</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>  rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  }</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>  <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>  s = g_strdup_printf(</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>  <span class="stringliteral">"<big>%s</big>\n\n%s %s\n%s %s\n%s %s\n\n<big>%s</big>"</span>,</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>  <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>  _(<span class="stringliteral">"Certificate details:"</span>),</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>  <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>  _(<span class="stringliteral">"Subject:"</span>), subject,</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>  <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>  _(<span class="stringliteral">"Issuer:"</span>), issuer,</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>  <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate's data and its signature.</span></div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>  _(<span class="stringliteral">"Fingerprint:"</span>), fingerprint,</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>  <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>  _(<span class="stringliteral">"Accept certificate?"</span>));</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>  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>  g_free(s);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> </div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>  <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>  <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> }</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> </div><div class="line"><a name="l01791"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1"> 1791</a></span> 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> {</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>  gchar *s;</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>  <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span> </div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">"trust_all"</span>)) {</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  <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>  <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">"remmina-security-trust-all-id"</span>, _(<span class="stringliteral">"Fingerprint automatically accepted"</span>), new_fingerprint);</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>  rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>  }</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>  <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>  s = g_strdup_printf(</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  <span class="stringliteral">"<big>%s</big>\n\n%s %s\n%s %s\n%s %s\n%s %s\n\n<big>%s</big>"</span>,</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>  <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>  _(<span class="stringliteral">"The certificate changed! Details:"</span>),</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <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>  _(<span class="stringliteral">"Subject:"</span>), subject,</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  <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>  _(<span class="stringliteral">"Issuer:"</span>), issuer,</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate's data and its signature.</span></div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  _(<span class="stringliteral">"Old fingerprint:"</span>), old_fingerprint,</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate's data and its signature.</span></div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>  _(<span class="stringliteral">"New fingerprint:"</span>), new_fingerprint,</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  <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>  _(<span class="stringliteral">"Accept changed certificate?"</span>));</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>  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>  g_free(s);</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> </div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  <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>  <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> }</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span> </div><div class="line"><a name="l01825"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0"> 1825</a></span> 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> {</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>  <span class="keywordflow">return</span> g_strdup(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span> </div><div class="line"><a name="l01831"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923"> 1831</a></span> 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> {</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>  <span class="keywordflow">return</span> g_strdup(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span> </div><div class="line"><a name="l01837"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac"> 1837</a></span> 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> {</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>  <span class="keywordflow">return</span> g_strdup(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div><div class="line"><a name="l01843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d"> 1843</a></span> 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> {</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  <span class="keywordflow">return</span> gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span> </div><div class="line"><a name="l01849"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d"> 1849</a></span> 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> {</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  gchar *s;</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span> </div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> s && s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span> }</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> </div><div class="line"><a name="l01858"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3"> 1858</a></span> 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> {</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  gchar *s;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span> </div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> s && s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> }</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> </div><div class="line"><a name="l01867"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b"> 1867</a></span> 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> {</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>  gchar *s;</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> </div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> s && s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span> }</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span> </div><div class="line"><a name="l01876"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1"> 1876</a></span> 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> {</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>  gchar *s;</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> </div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span> s && s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span> }</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span> </div><div class="line"><a name="l01885"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504"> 1885</a></span> <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> {</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> </div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gchar *s;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>  gboolean save = FALSE;</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span> </div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>  }</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span> </div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>  <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>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"username"</span>, s);</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>  save = TRUE;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>  }</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"cacert"</span>, s);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>  save = TRUE;</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>  }</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"cacrl"</span>, s);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>  save = TRUE;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>  }</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"clientcert"</span>, s);</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>  save = TRUE;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>  }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>  s = gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">if</span> (s && s[0]) {</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"clientkey"</span>, s);</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>  save = TRUE;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>, gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  save = TRUE;</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  }</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  <span class="keywordflow">if</span> (save)</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  <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> }</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span> </div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span> </div><div class="line"><a name="l01939"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d"> 1939</a></span> <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> {</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>  gchar *s;</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span> </div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  }</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span> </div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  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>  s = g_strdup_printf(</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  <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>  _(<span class="stringliteral">"Listening on port %i for an incoming %s connection…"</span>), port,</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"protocol"</span>));</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>  <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>  g_free(s);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-><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> }</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span> </div><div class="line"><a name="l01968"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895"> 1968</a></span> <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> {</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>  RemminaMessagePanel *mp;</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span> </div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  <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>  <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>  <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>  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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>  }</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> </div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  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>  <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">"Could not authenticate, attempting reconnection…"</span>), NULL, NULL);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-><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> }</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span> </div><div class="line"><a name="l01989"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b"> 1989</a></span> <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> {</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>  printf(<span class="stringliteral">"Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n"</span>, __func__);</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span> }</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span> </div><div class="line"><a name="l01995"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad"> 1995</a></span> <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> {</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>  printf(<span class="stringliteral">"Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n"</span>, __func__);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> }</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span> </div><div class="line"><a name="l02001"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d"> 2001</a></span> <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> {</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span> </div><div class="line"><a name="l02007"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2"> 2007</a></span> <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>  <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> {</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gtk_window_present(GTK_WINDOW(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  g_signal_connect_swapped(G_OBJECT(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">"send"</span>, G_CALLBACK(on_send), gp);</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>  g_signal_connect_swapped(G_OBJECT(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">"destroy"</span>,</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>  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>  g_signal_connect_swapped(G_OBJECT(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">"destroy"</span>, G_CALLBACK(on_destroy), gp);</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>  gtk_widget_show(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span> }</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span> </div><div class="line"><a name="l02023"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953"> 2023</a></span> <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> {</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gtk_widget_destroy(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> </div><div class="line"><a name="l02030"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0"> 2030</a></span> <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> {</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>  <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> </div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>  <span class="keywordflow">if</span> (gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <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>  <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>  <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>  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>  d-><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>  d-><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>  d-><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>  <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>  g_free(d);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  }</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>  <a class="code" href="remmina__chat__window_8c.html#a45724aed5474dd741563ffbf89237022">remmina_chat_window_receive</a>(REMMINA_CHAT_WINDOW(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), _(<span class="stringliteral">"Server"</span>), text);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  gtk_window_present(GTK_WINDOW(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  }</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span> }</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span> </div><div class="line"><a name="l02052"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8"> 2052</a></span> <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> {</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>  <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> </div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><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> </div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>  <span class="comment">/* Locate the protocol plugin */</span></div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>  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>  <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"protocol"</span>));</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> </div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>  <span class="keywordflow">if</span> (!plugin || !plugin-><a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a> || !plugin-><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>  <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>  <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, _(<span class="stringliteral">"Install the %s protocol plugin first."</span>),</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>  <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"protocol"</span>));</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>  }</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><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> </div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"scale"</span>, FALSE);</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"scaler_expand"</span>, FALSE);</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> }</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> </div><div class="line"><a name="l02077"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb"> 2077</a></span> 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> {</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#affd4a8e1c05f88299990bb0f3d5d1b9d">rcw_get_gtkwindow</a>(gp-><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> }</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span> </div><div class="line"><a name="l02082"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045"> 2082</a></span> 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> {</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a96f1d274dafe5e4953da52beb75f7d14">rcw_get_gtkviewport</a>(gp-><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> }</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> </div><div class="line"><a name="l02087"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62"> 2087</a></span> 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> {</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  <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> }</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> </div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> <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> <span class="comment"> * key-release events.</span></div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span> <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> <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> <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> {</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  GdkEventKey event;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>  gboolean result;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> </div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  <span class="keyword">event</span>.window = gtk_widget_get_window(widget);</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>  <span class="keyword">event</span>.send_event = TRUE;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  <span class="keyword">event</span>.time = GDK_CURRENT_TIME;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>  <span class="keyword">event</span>.state = 0;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>  <span class="keyword">event</span>.length = 0;</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>  <span class="keyword">event</span>.string = <span class="stringliteral">""</span>;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>  <span class="keyword">event</span>.group = 0;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span> </div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>  <span class="keywordflow">if</span> (action & GDK_KEY_PRESS) {</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>  <span class="comment">/* Press the requested buttons */</span></div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>  <span class="keyword">event</span>.type = GDK_KEY_PRESS;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>  <span class="keywordflow">for</span> (i = 0; i < keyvals_length; i++) {</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>  <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>  <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>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Sending keyval: %u, hardware_keycode: %u"</span>, event.keyval, event.hardware_keycode);</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">"key-press-event"</span>, &event, &result);</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  }</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>  }</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span> </div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>  <span class="keywordflow">if</span> (action & GDK_KEY_RELEASE) {</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>  <span class="comment">/* Release the requested buttons in reverse order */</span></div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>  <span class="keyword">event</span>.type = GDK_KEY_RELEASE;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  <span class="keywordflow">for</span> (i = (keyvals_length - 1); i >= 0; i--) {</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>  <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>  <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>  g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">"key-release-event"</span>, &event, &result);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  }</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  }</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span> }</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div><div class="line"><a name="l02136"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767"> 2136</a></span> <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> {</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>  GdkRectangle rect;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>  gint w, h;</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>  gint wfile, hfile;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>  <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>  <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> </div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>  <a class="code" href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, &rect);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span> </div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>  <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> </div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>  res_mode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"resolution_mode"</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>  scalemode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"scale"</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>  wfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"resolution_width"</span>, -1);</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>  hfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">"resolution_height"</span>, -1);</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> </div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  <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> <span class="comment"> * as we did before having resolution_mode */</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>  <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>  <span class="keywordflow">if</span> (wfile <= 0 || hfile <= 0)</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>  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>  <span class="keywordflow">else</span></div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>  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>  }</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> </div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>  <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>  <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>  GtkAllocation al;</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>  gtk_widget_get_allocation(GTK_WIDGET(gp), &al);</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>  <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>  w = al.width - al.width % 4;</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>  h = al.height - al.height % 4;</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>  <span class="keywordflow">if</span> (w < 10) {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  printf(<span class="stringliteral">"Remmina warning: %s RemminaProtocolWidget w=%d h=%d are too small, adjusting to 640x480\n"</span>, __func__, w, h);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>  w = 640;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>  h = 480;</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>  }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>  <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> <span class="comment"> * Adjust to fit. */</span></div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>  <span class="keywordflow">if</span> (w > rect.width)</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>  w = rect.width;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  <span class="keywordflow">if</span> (h > rect.height)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>  h = rect.height;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>  } <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>  w = rect.width;</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  h = rect.height;</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  w = wfile;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>  h = hfile;</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>  }</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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>  gp-><a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-><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> }</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"> </td></tr> <tr class="memitem:a4c6a24749cbe8be70b2878de21f57c65"><td class="memItemLeft" align="right" valign="top">static int </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"> </td></tr> -<tr class="memitem:aa836e9642f5703d984c65513c7220b56"><td class="memItemLeft" align="right" valign="top">static int </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 </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"> </td></tr> -<tr class="memitem:a758df1cb9f9c781ed4b6dad9ca19f2f6"><td class="memItemLeft" align="right" valign="top">static void </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 </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"> </td></tr> <tr class="memitem:a8a66c667543dd8c4c4f7c8d929863fae"><td class="memItemLeft" align="right" valign="top">static void </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"> </td></tr> -<tr class="memitem:ab8f07d5ab2ee8aa8423a11808b6cb100"><td class="memItemLeft" align="right" valign="top">static ssh_channel </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 </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"> </td></tr> <tr class="memitem:a72a58e416c4eeb9d17eaf76360ebee42"><td class="memItemLeft" align="right" valign="top">gchar * </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"> </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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">/* To get definitions of NI_MAXHOST and NI_MAXSERV from <netdb.h> */</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define _DEFAULT_SOURCE</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <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> <span class="preprocessor">#define _XOPEN_SOURCE 600</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#define LIBSSH_STATIC 1</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <libssh/libssh.h></span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include <poll.h></span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <signal.h></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include <time.h></span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include <pthread.h></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#ifdef HAVE_NETDB_H</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include <netdb.h></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#ifdef HAVE_ARPA_INET_H</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include <arpa/inet.h></span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#ifdef HAVE_NETINET_IN_H</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#include <netinet/in.h></span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#ifdef HAVE_SYS_SOCKET_H</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#include <sys/socket.h></span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#ifdef HAVE_FCNTL_H</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#ifdef HAVE_ERRNO_H</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#ifdef HAVE_TERMIOS_H</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#include <termios.h></span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#ifdef HAVE_UNISTD_H</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#ifdef HAVE_PTY_H</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#include <pty.h></span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#ifdef HAVE_SYS_UN_H</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#include <sys/un.h></span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#include "<a class="code" href="types_8h.html">remmina/types.h</a>"</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#include "<a class="code" href="remmina__file_8h.html">remmina_file.h</a>"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#include "<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>"</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#include "<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>"</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#include <netinet/tcp.h></span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#if defined(__FreeBSD__) || defined(__OpenBSD__)</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#ifndef SOL_TCP</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#define SOL_TCP IPPROTO_TCP</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">* SSH Base *</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#define LOCK_SSH(ssh) pthread_mutex_lock(&REMMINA_SSH(ssh)->ssh_mutex);</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#define UNLOCK_SSH(ssh) pthread_mutex_unlock(&REMMINA_SSH(ssh)->ssh_mutex);</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694"> 116</a></span> <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> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="stringliteral">".ssh/id_ed25519"</span>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="stringliteral">".ssh/id_rsa"</span>,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="stringliteral">".ssh/id_dsa"</span>,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="stringliteral">".ssh/identity"</span>,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  NULL</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> };</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">* X11 Channels *</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#define _PATH_UNIX_X "/tmp/.X11-unix/X%d"</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#define _XAUTH_CMD "/usr/bin/xauth list %s 2>/dev/null"</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="structitem.html"> 131</a></span> <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>  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>  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>  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>  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>  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>  <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> } <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> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792"> 140</a></span> <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> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <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> 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> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// Linked nodes to manage channel/fd tuples</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <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> <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> <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> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// X11 Display</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <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> <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> <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> <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> <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> <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> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// Send data to channel</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <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> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// Read data from channel</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <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> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// EOF&Close channel</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <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> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="comment">// Close all X11 channel</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <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> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="comment">// X11 Request</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <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> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <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> <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> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  .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>  .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>  .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>  .userdata = NULL</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> };</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <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> <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> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment">// Functions</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <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> <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> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  pthread_mutex_lock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  REMMINA_DEBUG(<span class="stringliteral">"insert node - fd_in: %d - fd_out: %d - protected %d"</span>, fd_in, fd_out, <span class="keyword">protected</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <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>  <span class="keywordflow">if</span> (node == NULL) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <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>  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>  node-><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>  node-><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>  node-><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>  node-><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>  node-><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>  node-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = NULL;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  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>  <span class="keywordflow">while</span> (node_iterator-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> != NULL)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  node_iterator = node_iterator-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">/* Create the new node */</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <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>  <span class="keyword">new</span>-><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>  <span class="keyword">new</span>->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>  <span class="keyword">new</span>->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>  <span class="keyword">new</span>->protected = <span class="keyword">protected</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">new</span>->thread = <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">new</span>->next = NULL;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  node_iterator-><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>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <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> <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> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  REMMINA_DEBUG(<span class="stringliteral">"delete node"</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  pthread_mutex_lock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <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>  <span class="keywordflow">for</span> (current = node; current; previous = current, current = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span> (current->channel != channel)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span> (previous == NULL)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  node = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  previous-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  free(current);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <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> <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> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">// TODO: too verbose REMMINA_DEBUG("search node");</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  pthread_mutex_lock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <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>  <span class="keywordflow">while</span> (current != NULL) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (current-><a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> == channel) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// TODO: too verbose REMMINA_DEBUG("found node - fd_in: %d - fd_out: %d - protected: %d", current->fd_in, current->fd_out, current->protected);</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> current;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  current = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <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> <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> {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordtype">int</span> opt;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  socklen_t optlen;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  optlen = <span class="keyword">sizeof</span>(opt);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span> (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  REMMINA_WARNING(<span class="stringliteral">"getsockopt TCP_NODELAY: %.100s"</span>, strerror(errno));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (opt == 1) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d is TCP_NODELAY"</span>, fd);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  opt = 1;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d setting TCP_NODELAY"</span>, fd);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span> (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, <span class="keyword">sizeof</span>(opt)) == -1)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  REMMINA_WARNING(<span class="stringliteral">"setsockopt TCP_NODELAY: %.100s"</span>, strerror(errno));</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <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> <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> {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (gaierr == EAI_SYSTEM && errno != 0)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> strerror(errno);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> gai_strerror(gaierr);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <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> <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> {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordtype">char</span> cmd[1024], line[512], xdisplay[512];</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <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>  FILE *f;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordtype">int</span> ret = 0, r;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  *_proto = proto;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  *_cookie = cookie;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  proto[0] = cookie[0] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (strncmp(display, <span class="stringliteral">"localhost:"</span>, 10) == 0) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> ((r = snprintf(xdisplay, <span class="keyword">sizeof</span>(xdisplay), <span class="stringliteral">"unix:%s"</span>, display + 10)) < 0 || (<span class="keywordtype">size_t</span>)r >= <span class="keyword">sizeof</span>(xdisplay)) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  REMMINA_WARNING(<span class="stringliteral">"display name too long. display: %s"</span>, display);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  display = xdisplay;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  snprintf(cmd, <span class="keyword">sizeof</span>(cmd), _XAUTH_CMD, display);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  REMMINA_DEBUG(<span class="stringliteral">"xauth cmd: %s"</span>, cmd);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  f = popen(cmd, <span class="stringliteral">"r"</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">if</span> (f && fgets(line, <span class="keyword">sizeof</span>(line), f) && sscanf(line, <span class="stringliteral">"%*s %511s %511s"</span>, proto, cookie) == 2) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  ret = 0;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  ret = 1;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span> (f) pclose(f);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  REMMINA_DEBUG(<span class="stringliteral">"proto: %s - cookie: %s - ret: %d"</span>, proto, cookie, ret);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <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> <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> {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordtype">int</span> sock;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">struct </span>sockaddr_un addr;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  sock = socket(AF_UNIX, SOCK_STREAM, 0);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (sock == -1)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  REMMINA_WARNING(<span class="stringliteral">"socket: %.100s"</span>, strerror(errno));</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  memset(&addr, 0, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  addr.sun_family = AF_UNIX;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  addr.sun_path[0] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  memcpy(addr.sun_path + 1, pathname, strlen(pathname));</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">if</span> (connect(sock, (<span class="keyword">struct</span> sockaddr *)&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>  REMMINA_DEBUG(<span class="stringliteral">"sock: %d"</span>, sock);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  REMMINA_WARNING(<span class="stringliteral">"connect %.100s: %.100s"</span>, addr.sun_path, strerror(errno));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  close(sock);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <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> <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> {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">char</span> buf[1024];</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  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>  <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> }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <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> <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> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <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>  <span class="keyword">const</span> <span class="keywordtype">char</span> *display;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordtype">char</span> buf[1024], *cp;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">struct </span>addrinfo hints, *ai, *aitop;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordtype">char</span> strport[NI_MAXSERV];</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordtype">int</span> gaierr, sock = 0;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <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>  display = getenv(<span class="stringliteral">"DISPLAY"</span>);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span> (!display) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  REMMINA_DEBUG(<span class="stringliteral">"display: %s"</span>, display);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <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>  <span class="keywordflow">if</span> (strncmp(display, <span class="stringliteral">"unix:"</span>, 5) == 0 || display[0] == <span class="charliteral">':'</span>) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="comment">/* Connect to the unix domain socket. */</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span> (sscanf(strrchr(display, <span class="charliteral">':'</span>) + 1, <span class="stringliteral">"%u"</span>, &display_number) != 1) {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  REMMINA_WARNING(<span class="stringliteral">"Could not parse display number from DISPLAY: %.100s"</span>, display);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  REMMINA_DEBUG(<span class="stringliteral">"display_number: %d"</span>, display_number);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="comment">/* Create a socket. */</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  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> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  REMMINA_DEBUG(<span class="stringliteral">"socket: %d"</span>, sock);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">if</span> (sock < 0)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <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>  <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">/* Connect to an inet socket. */</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  strncpy(buf, display, <span class="keyword">sizeof</span>(buf) - 1);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  cp = strchr(buf, <span class="charliteral">':'</span>);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">if</span> (!cp) {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  REMMINA_WARNING(<span class="stringliteral">"Could not find ':' in DISPLAY: %.100s"</span>, display);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  *cp = 0;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">if</span> (sscanf(cp + 1, <span class="stringliteral">"%u"</span>, &display_number) != 1) {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  REMMINA_WARNING(<span class="stringliteral">"Could not parse display number from DISPLAY: %.100s"</span>, display);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">/* Look up the host address */</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  memset(&hints, 0, <span class="keyword">sizeof</span>(hints));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  hints.ai_family = AF_INET;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  hints.ai_socktype = SOCK_STREAM;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  snprintf(strport, <span class="keyword">sizeof</span>(strport), <span class="stringliteral">"%u"</span>, 6000 + display_number);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span> ((gaierr = getaddrinfo(buf, strport, &hints, &aitop)) != 0) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  REMMINA_WARNING(<span class="stringliteral">"%.100s: unknown host. (%s)"</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>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">for</span> (ai = aitop; ai; ai = ai->ai_next) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">/* Create a socket. */</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">if</span> (sock == -1) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  REMMINA_WARNING(<span class="stringliteral">"socket: %.100s"</span>, strerror(errno));</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="comment">/* Connect it to the display. */</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">if</span> (connect(sock, ai->ai_addr, ai->ai_addrlen) == -1) {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  REMMINA_WARNING(<span class="stringliteral">"connect %.100s port %u: %.100s"</span>, buf, 6000 + display_number, strerror(errno));</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  close(sock);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="comment">/* Success */</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  freeaddrinfo(aitop);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span> (!ai) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  REMMINA_WARNING(<span class="stringliteral">"connect %.100s port %u: %.100s"</span>, buf, 6000 + display_number, strerror(errno));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <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> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  REMMINA_DEBUG(<span class="stringliteral">"sock: %d"</span>, sock);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> </div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <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> <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> {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  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>  gchar buf[0x200000];</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  gint sz = 0, ret = 0;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <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> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">if</span> (!temp_node-><a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  close(fd);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d closed."</span>, fd);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  REMMINA_WARNING(<span class="stringliteral">"channel does not exist."</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">if</span> ((revents & POLLIN) || (revents & POLLPRI)) {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  sz = read(fd, buf, <span class="keyword">sizeof</span>(buf));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">if</span> (sz > 0) {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  ret = ssh_channel_write(channel, buf, sz);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span> (ret != sz)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">//TODO: too verbose REMMINA_DEBUG("ssh_channel_write ret: %d sz: %d", ret, sz);</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sz < 0) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">// TODO: too verbose REMMINA_WARNING("fd bytes read: %d", sz);</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  REMMINA_WARNING(<span class="stringliteral">"Why the hell am I here?"</span>);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">if</span> (!temp_node-><a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  close(fd);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d closed."</span>, fd);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">if</span> ((revents & POLLHUP) || (revents & POLLNVAL) || (revents & POLLERR)) {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  REMMINA_DEBUG(<span class="stringliteral">"Closing channel."</span>);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  ssh_channel_close(channel);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  ret = -1;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <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> <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> {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  (void)session;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  (void)is_stderr;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <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>  <span class="comment">// in this function.</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  (void)userdata;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <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>  gint fd = temp_node-><a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  gint sz = 0;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  sz = write(fd, data, len);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="comment">// TODO: too verbose REMMINA_DEBUG("fd bytes written: %d", sz);</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">return</span> sz;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <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> <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> {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  (void)session;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <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> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <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> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span> (temp_node != NULL) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordtype">int</span> fd = temp_node-><a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span> (!temp_node-><a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <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>  ssh_event_remove_fd(shell-><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>  shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  close(fd);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d closed."</span>, fd);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  }</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  REMMINA_DEBUG(<span class="stringliteral">"Channel closed."</span>);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <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> <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> {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  REMMINA_DEBUG(<span class="stringliteral">"Close all X11 channels"</span>);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> </div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <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>  <span class="keywordflow">while</span> (current != NULL) {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">if</span> (current-><a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a> == thread && !current-><a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  shutdown(current-><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>  close(current-><a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  REMMINA_DEBUG(<span class="stringliteral">"thread: %d - fd %d closed."</span>, thread, current-><a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">if</span> (current-><a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a> != current-><a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>) {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  shutdown(current-><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>  close(current-><a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  REMMINA_DEBUG(<span class="stringliteral">"thread: %d - fd %d closed."</span>, thread, current-><a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  current = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <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> <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> {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  (void)shost;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  (void)sport;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <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> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  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> </div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <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> </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(channel, sock, sock, FALSE, shell-><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> </div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  ssh_event_add_fd(shell-><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>  ssh_event_add_session(shell-><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> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  ssh_add_channel_callbacks(channel, &<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> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <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> }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> </div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> gchar *</div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a72a58e416c4eeb9d17eaf76360ebee42"> 618</a></span> <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> {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <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>  <span class="keywordflow">if</span> (<span class="keywordtype">id</span>[0] == <span class="charliteral">'/'</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>  <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">"%s/%s"</span>, g_get_home_dir(), <span class="keywordtype">id</span>);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> </div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> gchar *</div><div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#ab6d8bdad543b3caead2b2b0339484798"> 627</a></span> <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> {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  gchar *path;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  gint i;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> </div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <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>  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>  <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>  <span class="keywordflow">return</span> path;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  g_free(path);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> }</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <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> <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> {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keyword">const</span> gchar *err;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> </div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  err = ssh_get_error(ssh-><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>  ssh-><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> }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> </div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <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> <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> {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  va_list args;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  va_start(args, fmt);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  ssh-><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>  va_end(args);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> }</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> </div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <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> <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> {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  gint ret;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  gint n;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  gint i;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keyword">const</span> gchar *name, *instruction = NULL;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="comment">//gchar *prompt,*ptr;</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  ret = SSH_AUTH_ERROR;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">if</span> (ssh-><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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, <span class="stringliteral">"OTP code is empty"</span>);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  REMMINA_DEBUG(<span class="stringliteral">"OTP code is empty, returning"</span>);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <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>  }</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  REMMINA_DEBUG(<span class="stringliteral">"OTP code has been set to: %s"</span>, ssh-><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> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  ret = ssh_userauth_kbdint(ssh-><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>  <span class="keywordflow">while</span> (ret == SSH_AUTH_INFO) {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  name = ssh_userauth_kbdint_getname(ssh-><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>  <span class="keywordflow">if</span> (strlen(name) > 0)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH kbd-interactive name: %s"</span>, name);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH kbd-interactive name is empty"</span>);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  instruction = ssh_userauth_kbdint_getinstruction(ssh-><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>  <span class="keywordflow">if</span> (strlen(instruction) > 0)</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH kbd-interactive instruction: %s"</span>, instruction);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH kbd-interactive instruction is empty"</span>);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  n = ssh_userauth_kbdint_getnprompts(ssh-><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>  <span class="keywordflow">for</span> (i = 0; i < n; i++)</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  ssh_userauth_kbdint_setanswer(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, i, ssh-><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>  ret = ssh_userauth_kbdint(ssh-><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>  }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> </div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh_userauth_kbdint returned %d"</span>, ret);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH keyboard interactive. Another method is required. %d"</span>, ret);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="comment">//Authentication success</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH keyboard interactive. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">case</span> SSH_AUTH_INFO:</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticating aagin with SSH keyboard interactive??? %s"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with keyboard interactive, Requested to authenticate again. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="comment">//A serious error happened</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with TOTP/OTP/2FA. %s"</span>));</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate with TOTP/OTP/2FA. Error is %s"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  ssh-><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>  <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> }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> </div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <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> <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> {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  gint ret;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> </div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  REMMINA_DEBUG(<span class="stringliteral">"Password authentication"</span>);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> </div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  ret = SSH_AUTH_ERROR;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">if</span> (ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Already authenticated"</span>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <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>  }</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">if</span> (ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, <span class="stringliteral">"Password is null"</span>);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  REMMINA_DEBUG(<span class="stringliteral">"Password is null, returning"</span>);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <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>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> </div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  ret = ssh_userauth_password(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with SSH password returned: %d"</span>, ret);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH password, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH password. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH password, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate with password. Error is %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with SSH password. %s"</span>));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <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>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  ssh-><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>  <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> }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> </div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <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> <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> {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  ssh_key key = NULL;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  ssh_key cert = NULL;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  gchar pubkey[132] = { 0 }; <span class="comment">// +".pub"</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  gint ret;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">if</span> (ssh-><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> </div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH certificate file: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"File for private SSH key: %s"</span>, ssh-><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>  <span class="keywordflow">if</span> (ssh-><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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="comment">/* First we import the private key */</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">if</span> (ssh_pki_import_privkey_file(ssh-><a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>, (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : <span class="stringliteral">""</span>),</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  NULL, NULL, &key) != SSH_OK) {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> == NULL || ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"No saved SSH password supplied. Asking user to enter it."</span>));</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <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>  }</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> </div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>));</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <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>  }</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  REMMINA_DEBUG (<span class="stringliteral">"Imported private SSH key file"</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="comment">/* First we import the certificate */</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  ret = ssh_pki_import_cert_file(ssh-><a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>, &cert );</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  REMMINA_DEBUG (<span class="stringliteral">"Certificate import returned: %d"</span>, ret);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"SSH certificate cannot be imported. %s"</span>));</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <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>  }</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  REMMINA_DEBUG (<span class="stringliteral">"certificate imported correctly"</span>);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <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>  ret = ssh_pki_copy_cert_to_privkey(cert, key);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  REMMINA_DEBUG (<span class="stringliteral">"Copying the certificate into a key returned: %d"</span>, ret);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"SSH certificate cannot be copied into the private SSH key. %s"</span>));</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  ssh_key_free(cert);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <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>  }</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  REMMINA_DEBUG (<span class="stringliteral">"%s certificate copied into the private SSH key"</span>, ssh-><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>  <span class="comment">/* We try to authenticate */</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  ret = ssh_userauth_try_publickey(ssh-><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>  <span class="keywordflow">if</span> (ret != SSH_AUTH_SUCCESS && ret != SSH_AUTH_AGAIN ) {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  REMMINA_DEBUG (<span class="stringliteral">"Trying to authenticate with the new key returned: %d"</span>, ret);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate using SSH certificate. %s"</span>));</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  ssh_key_free(key);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  ssh_key_free(cert);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <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>  }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  REMMINA_DEBUG (<span class="stringliteral">"Authentication with a certificate file works, we can authenticate"</span>);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  REMMINA_DEBUG (<span class="stringliteral">"lbssh >= 0.9.0 is required to authenticate with certificate file"</span>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keywordflow">if</span> (ssh-><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>  <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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>),</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  _(<span class="stringliteral">"SSH identity file not selected."</span>));</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <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>  }</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  g_snprintf(pubkey, <span class="keyword">sizeof</span>(pubkey), <span class="stringliteral">"%s.pub"</span>, ssh-><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> </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="comment">/*G_FILE_TEST_EXISTS*/</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <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>  ret = ssh_pki_import_pubkey_file(pubkey, &key);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Public SSH key cannot be imported. %s"</span>));</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  ssh_key_free(key);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <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>  }</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> </div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">if</span> (ssh_pki_import_privkey_file(ssh-><a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>, (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : <span class="stringliteral">""</span>),</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  NULL, NULL, &key) != SSH_OK) {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> == NULL || ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"No saved SSH password supplied. Asking user to enter it."</span>));</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <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>  }</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> </div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>));</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <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>  }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  }</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> </div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  ret = ssh_userauth_publickey(ssh-><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>  ssh_key_free(key);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  ssh_key_free(cert);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with public SSH key returned: %d"</span>, ret);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> </div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>));</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <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>  }</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <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> }</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <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> <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> {</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> </div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  gint ret;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  ret = ssh_userauth_publickey_auto(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-><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> </div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with public SSH key returned: %d"</span>, ret);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate automatically with public SSH key. %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate automatically with public SSH key. %s"</span>));</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <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>  }</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  ssh-><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>  <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> }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> </div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <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> <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> {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  gint ret;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  ret = ssh_userauth_agent(ssh-><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> </div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with SSH agent returned: %d"</span>, ret);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> </div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate automatically with SSH agent. %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate automatically with SSH agent. %s"</span>));</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <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>  }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  ssh-><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>  <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> </div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> }</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> </div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <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> <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> {</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  gint ret;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  ret = ssh_userauth_gssapi(ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with SSH GSSAPI/Kerberos: %d"</span>, ret);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate with SSH GSSAPI/Kerberos. %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with SSH GSSAPI/Kerberos. %s"</span>));</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <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>  }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  ssh-><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>  <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> }</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> </div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</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="l01075"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#aad84c6609cb431d48121ae5e0902441b"> 1075</a></span> <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> {</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  gint method;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <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> </div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <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> <span class="comment"> * a new session from existing one */</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="comment">/* TODO: Add error checking</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <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> <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> <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> <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> <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> <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> <span class="comment"> */</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="keywordflow">if</span> (ssh_session_is_known_server(ssh-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">if</span> (ssh_is_server_known(ssh-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(ssh, _(<span class="stringliteral">"The public SSH key changed!"</span>));</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <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>  }</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">if</span> (password) {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">if</span> (password != ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="keywordflow">if</span> (password != ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>) g_free(ssh-><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>  ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> </div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  method = ssh_userauth_list(ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Methods supported by server: %s%s%s%s%s%s%s"</span>,</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  (method & SSH_AUTH_METHOD_NONE) ? <span class="stringliteral">"SSH_AUTH_METHOD_NONE "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  (method & SSH_AUTH_METHOD_UNKNOWN) ? <span class="stringliteral">"SSH_AUTH_METHOD_UNKNOWN "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  (method & SSH_AUTH_METHOD_PASSWORD) ? <span class="stringliteral">"SSH_AUTH_METHOD_PASSWORD "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  (method & SSH_AUTH_METHOD_PUBLICKEY) ? <span class="stringliteral">"SSH_AUTH_METHOD_PUBLICKEY "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  (method & SSH_AUTH_METHOD_HOSTBASED) ? <span class="stringliteral">"SSH_AUTH_METHOD_HOSTBASED "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  (method & SSH_AUTH_METHOD_INTERACTIVE) ? <span class="stringliteral">"SSH_AUTH_METHOD_INTERACTIVE "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  (method & SSH_AUTH_METHOD_GSSAPI_MIC) ? <span class="stringliteral">"SSH_AUTH_METHOD_GSSAPI_MIC "</span> : <span class="stringliteral">""</span></div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  );</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="keywordflow">switch</span> (ssh-><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>  <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>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_PASSWORD (%d)"</span>, ssh-><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>  <span class="keywordflow">if</span> (ssh-><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>  <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>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_PASSWORD) {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH using remmina_ssh_auth_password"</span>);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  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>  }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">if</span> (!ssh-><a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> && (method & SSH_AUTH_METHOD_INTERACTIVE)) {</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH using remmina_ssh_auth_interactive after password has failed"</span>);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  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>  }</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  REMMINA_DEBUG(<span class="stringliteral">"Host-based authentication method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  REMMINA_DEBUG(<span class="stringliteral">"User-based authentication method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  }</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with SSH password. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH using remmina_ssh_auth_interactive"</span>);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_INTERACTIVE) {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  REMMINA_DEBUG(<span class="stringliteral">"Host-based authentication method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  REMMINA_DEBUG(<span class="stringliteral">"User-based authentication method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  }</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with keyboard-interactive. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> </div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_PUBLICKEY (%d)"</span>, ssh-><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>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_PUBLICKEY) {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  REMMINA_DEBUG(<span class="stringliteral">"Host based auth method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  }</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  }</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="comment">// The real error here should be: "The SSH server %s:%d does not support public key authentication"</span></div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> </div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_AGENT (%d)"</span>, ssh-><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>  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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  REMMINA_DEBUG(<span class="stringliteral">"Host based auth method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  }</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> </div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_AUTO_PUBLICKEY (%d)"</span>, ssh-><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>  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>  <span class="comment">/* ssh_agent or none */</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_PUBLICKEY) {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  REMMINA_DEBUG(<span class="stringliteral">"Host based auth method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  }</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  }</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="comment">// The real error here should be: "The SSH server %s:%d does not support public key authentication"</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with automatic public SSH key. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="preprocessor">#if 0</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <span class="comment">/* Not yet supported by libssh */</span></div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  <span class="keywordflow">case</span> SSH_AUTH_HOSTBASED:</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_HOSTBASED)</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="comment">//return remmina_ssh_auth_hostbased;</span></div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_GSSAPI (%d)"</span>, ssh-><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>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_GSSAPI_MIC) {</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  REMMINA_DEBUG(<span class="stringliteral">"Host based auth method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  }</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  }</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  <span class="comment">// The real error here should be: "The SSH server %s:%d does not support SSH GSSAPI/Kerberos authentication"</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with SSH GSSAPI/Kerberos. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> </div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <span class="comment">// We come here after a "break". ssh->error should be already set</span></div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <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> }</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> </div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</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="l01367"></a><span class="lineno"> 1367</span> <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> {</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  gchar *keyname;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  gchar *pwdfkey = NULL;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  gchar *message;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  gchar *current_pwd;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  gchar *current_user;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  <span class="keyword">const</span> gchar *instruction = NULL;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  gint ret;</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  <span class="keywordtype">size_t</span> len;</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  guchar *pubkey;</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  ssh_key server_pubkey;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  gboolean disablepasswordstoring;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  gboolean save_password;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  gint attempt;</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> </div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  <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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  <span class="comment">/* TODO: Add error checking</span></div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <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> <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> <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> <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> <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> <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> <span class="comment"> */</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  ret = ssh_session_is_known_server(ssh-><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>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_OK:</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  <span class="keywordflow">break</span>; <span class="comment">/* ok */</span></div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> </div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <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>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_CHANGED:</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_OTHER:</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_UNKNOWN:</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_NOT_FOUND:</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  ret = ssh_is_server_known(ssh-><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>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  <span class="keywordflow">case</span> SSH_SERVER_KNOWN_OK:</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  <span class="keywordflow">break</span>; <span class="comment">/* ok */</span></div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="comment">/* fallback to SSH_SERVER_NOT_KNOWN behavior */</span></div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <span class="keywordflow">case</span> SSH_SERVER_KNOWN_CHANGED:</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  <span class="keywordflow">case</span> SSH_SERVER_FOUND_OTHER:</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <span class="keywordflow">case</span> SSH_SERVER_NOT_KNOWN:</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  <span class="keywordflow">case</span> SSH_SERVER_FILE_NOT_FOUND:</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 8, 6)</span></div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  <span class="keywordflow">if</span> (ssh_get_server_publickey(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, &server_pubkey) != SSH_OK) {</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not fetch the server\'s public SSH key. %s"</span>));</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh_get_server_publickey() has failed"</span>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  <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>  }</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <span class="keywordflow">if</span> (ssh_get_publickey(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, &server_pubkey) != SSH_OK) {</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not fetch public SSH key. %s"</span>));</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh_get_publickey() has failed"</span>);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  <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>  }</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  <span class="keywordflow">if</span> (ssh_get_publickey_hash(server_pubkey, SSH_PUBLICKEY_HASH_MD5, &pubkey, &len) != 0) {</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  ssh_key_free(server_pubkey);</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not fetch checksum of the public SSH key. %s"</span>));</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh_get_publickey_hash() has failed"</span>);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  <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>  }</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  ssh_key_free(server_pubkey);</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  keyname = ssh_get_hexa(pubkey, len);</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span> </div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  <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> <span class="preprocessor">#else</span></div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  message = g_strdup_printf(<span class="stringliteral">"%s\n%s\n\n%s"</span>,</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  _(<span class="stringliteral">"The server is unknown. The public key fingerprint is:"</span>),</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  keyname,</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  _(<span class="stringliteral">"Do you trust the new public key?"</span>));</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  message = g_strdup_printf(<span class="stringliteral">"%s\n%s\n\n%s"</span>,</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  _(<span class="stringliteral">"Warning: The server has changed its public key. This means you are either under attack,\n"</span></div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  <span class="stringliteral">"or the administrator has changed the key. The new public key fingerprint is:"</span>),</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  keyname,</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  _(<span class="stringliteral">"Do you trust the new public key?"</span>));</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  }</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> </div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  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>  g_free(message);</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> </div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  ssh_string_free_char(keyname);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  ssh_clean_pubkey_hash(&pubkey);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  <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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  ssh_session_update_known_hosts(ssh-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  ssh_write_knownhost(ssh-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_ERROR:</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  <span class="keywordflow">case</span> SSH_SERVER_ERROR:</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not check list of known SSH hosts. %s"</span>));</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  REMMINA_DEBUG(<span class="stringliteral">"Could not check list of known SSH hosts"</span>);</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  <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>  }</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> </div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  <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> </div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  <span class="keywordflow">switch</span> (ssh-><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>  <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>  keyname = _(<span class="stringliteral">"SSH password"</span>);</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>  pwdfkey = ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"ssh_tunnel_password"</span> : <span class="stringliteral">"password"</span>;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  remmina_ssh_auth_type = REMMINA_SSH_AUTH_PASSWORD;</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  <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>  <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>  <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>  keyname = _(<span class="stringliteral">"Password for private SSH key"</span>);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  pwdfkey = ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"ssh_tunnel_passphrase"</span> : <span class="stringliteral">"ssh_passphrase"</span>;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  remmina_ssh_auth_type = REMMINA_SSH_AUTH_PKPASSPHRASE;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  <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>  keyname = _(<span class="stringliteral">"SSH Kerberos/GSSAPI"</span>);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  pwdfkey = ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"ssh_tunnel_kerberos_token"</span> : <span class="stringliteral">"ssh_kerberos_token"</span>;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  remmina_ssh_auth_type = REMMINA_SSH_AUTH_KRBTOKEN;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  <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>  instruction = _(<span class="stringliteral">"Enter TOTP/OTP/2FA code"</span>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  remmina_ssh_auth_type = REMMINA_SSH_AUTH_KBDINTERACTIVE;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <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>  }</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> </div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>  disablepasswordstoring = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">"disablepasswordstoring"</span>, FALSE);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> </div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span> </div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  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> </div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  <span class="comment">/* Try existing password/passphrase first */</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>  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>  REMMINA_DEBUG(<span class="stringliteral">"Returned %d at 1st attempt with the following message:"</span>, ret);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  REMMINA_DEBUG(<span class="stringliteral">"%s"</span>, ssh-><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> </div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  <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> <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> <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>  <span class="keywordflow">for</span> (attempt = 0;</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>  attempt < 2 && 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>  attempt++) {</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>  <span class="keywordflow">if</span> (ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Retrying auth because %s"</span>, ssh-><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> </div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  <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>  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>  (disablepasswordstoring ? 0 :</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  <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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? _(<span class="stringliteral">"SSH tunnel credentials"</span>) : _(<span class="stringliteral">"SSH credentials"</span>),</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  NULL,</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  <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>  NULL,</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>  _(<span class="stringliteral">"Password for private SSH key"</span>));</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  g_free(current_pwd);</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  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>  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>  <span class="keywordflow">if</span> (save_password)</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>  <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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  g_free(current_pwd);</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  <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>  }</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  } <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>  <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> <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>  REMMINA_DEBUG(<span class="stringliteral">"Showing panel for password\n"</span>);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  current_user = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"ssh_tunnel_username"</span> : <span class="stringliteral">"username"</span>));</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  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>  (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>  | <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>  | (!ssh-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? _(<span class="stringliteral">"SSH tunnel credentials"</span>) : _(<span class="stringliteral">"SSH credentials"</span>),</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  current_user,</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  current_pwd,</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  NULL,</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  NULL);</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  g_free(current_pwd);</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  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>  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>  <span class="keywordflow">if</span> (save_password)</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  <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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  <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> </div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <span class="keywordflow">if</span> (!ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> && !ssh-><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>  g_free(current_user);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  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>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"username"</span>, current_user);</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  ssh-><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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  ssh-><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>  g_free(current_user);</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <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>  }</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  g_free(current_user);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  g_free(current_pwd);</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  g_free(current_user);</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  <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>  }</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  } <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>  REMMINA_DEBUG(<span class="stringliteral">"Showing panel for keyboard interactive login\n"</span>);</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  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>  gp,</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>  0,</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  _(<span class="stringliteral">"Keyboard interactive login, TOTP/OTP/2FA"</span>),</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  NULL,</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>  NULL,</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>  NULL,</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>  instruction);</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  g_free(current_pwd);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>  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>  REMMINA_DEBUG(<span class="stringliteral">"OTP code is: %s"</span>, current_pwd);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>  ssh-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>  g_free(current_pwd);</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>  <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>  }</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>  g_print(<span class="stringliteral">"Unimplemented."</span>);</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  g_free(current_pwd);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>  <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>  }</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>  REMMINA_DEBUG(<span class="stringliteral">"Retrying authentication"</span>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  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>  REMMINA_DEBUG(<span class="stringliteral">"Authentication attempt n° %d returned %d with the following message:"</span>, attempt + 2, ret);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>  REMMINA_DEBUG(<span class="stringliteral">"%s"</span>, ssh-><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>  }</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> </div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>  g_free(current_pwd); current_pwd = NULL;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> </div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>  <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> <span class="comment"> * becomes REMMINA_SSH_AUTH_FATAL_ERROR */</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH Authentication failed"</span>);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  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>  }</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> }</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> </div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> <span class="keywordtype">void</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> 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> {</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  REMMINA_DEBUG(message);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> }</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> </div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span> gboolean</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> <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> {</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>  gint verbosity;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  gint rc;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  gchar *parsed_config;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> <span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>  socket_t sshsock;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  gint optval;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> </div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  ssh-><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> </div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  <span class="comment">/* Init & startup the SSH session */</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  REMMINA_DEBUG(<span class="stringliteral">"server=%s port=%d is_tunnel=%s tunnel_entrance_host=%s tunnel_entrance_port=%d"</span>,</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  ssh-><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>  ssh-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"Yes"</span> : <span class="stringliteral">"No"</span>,</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, ssh-><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> </div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  ssh-><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> </div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  <span class="comment">/* Tunnel sanity checks */</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> && ssh-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(<span class="stringliteral">"Internal error in %s: is_tunnel and tunnel_entrance != NULL"</span>, __func__);</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  REMMINA_DEBUG(ssh-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  }</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  <span class="keywordflow">if</span> (!ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> && ssh-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(<span class="stringliteral">"Internal error in %s: is_tunnel == false and tunnel_entrance == NULL"</span>, __func__);</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>  REMMINA_DEBUG(ssh-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>  }</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> </div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>  <span class="comment">/* Set connection host/port */</span></div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>  <span class="keywordflow">if</span> (ssh-><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>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-><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>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PORT, &ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Setting SSH_OPTIONS_HOST to %s and SSH_OPTIONS_PORT to %d"</span>, ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-><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>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PORT, &ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Setting SSH_OPTIONS_HOST to %s and SSH_OPTIONS_PORT to %d"</span>, ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, ssh-><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>  }</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> </div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> && *ssh-><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>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_IDENTITY, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_IDENTITY is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_IDENTITY is not set, by default the files “identity”, “id_dsa” and “id_rsa” are used."</span>);</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  }</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span> </div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span> <span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_SSH_DIR, g_strdup_printf(<span class="stringliteral">"%s/.ssh"</span>, g_getenv(<span class="stringliteral">"SNAP_USER_COMMON"</span>)));</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>  ssh_callbacks_init(ssh-><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>  <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>  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>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>->log_function = remmina_ssh_log_callback;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>  <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>  ssh_set_log_userdata(ssh-><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>  }</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>->userdata = ssh;</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>  ssh_set_callbacks(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, ssh-><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> </div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  <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>  <span class="keywordflow">if</span> (g_strcmp0(ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, <span class="stringliteral">"127.0.0.1"</span>) == 0) {</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_HOST temporary set to the destination host as ssh->tunnel_entrance_host is 127.0.0.1,"</span>);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-><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>  }</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</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#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>) {</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>  <span class="keywordflow">if</span> (ssh_options_parse_config(ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh_config have been correctly parsed"</span>);</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>  REMMINA_DEBUG(<span class="stringliteral">"Cannot parse ssh_config: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>  <span class="keywordflow">if</span> (g_strcmp0(ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, <span class="stringliteral">"127.0.0.1"</span>) == 0) {</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>  REMMINA_DEBUG(<span class="stringliteral">"Setting SSH_OPTIONS_HOST to ssh->tunnel_entrance_host is 127.0.0.1,"</span>);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-><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>  }</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>  <span class="keywordflow">if</span> (!ssh-><a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> || *ssh-><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>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_USER, &parsed_config);</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_USER returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>  }</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_USER, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_USER is now %s"</span>, ssh-><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> </div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>  <span class="comment">/* SSH_OPTIONS_PROXYCOMMAND */</span></div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PROXYCOMMAND, &parsed_config);</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_PROXYCOMMAND returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PROXYCOMMAND, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_PROXYCOMMAND is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_PROXYCOMMAND does not have a valid value. %s"</span>, ssh-><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> </div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  <span class="comment">/* SSH_OPTIONS_HOSTKEYS */</span></div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOSTKEYS, &parsed_config);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_HOSTKEYS returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOSTKEYS, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_HOSTKEYS is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_HOSTKEYS does not have a valid value. %s"</span>, ssh-><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> </div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>  <span class="comment">/* SSH_OPTIONS_KEY_EXCHANGE */</span></div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_KEY_EXCHANGE, &parsed_config);</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_KEY_EXCHANGE returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_KEY_EXCHANGE, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_KEY_EXCHANGE is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_KEY_EXCHANGE does not have a valid value. %s"</span>, ssh-><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> </div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>  <span class="comment">/* SSH_OPTIONS_CIPHERS_C_S */</span></div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_CIPHERS_C_S, &parsed_config);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_CIPHERS_C_S returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_CIPHERS_C_S, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_CIPHERS_C_S has been set to %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_CIPHERS_C_S does not have a valid value. %s"</span>, ssh-><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>  <span class="comment">/* SSH_OPTIONS_STRICTHOSTKEYCHECK */</span></div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_STRICTHOSTKEYCHECK, &parsed_config);</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_STRICTHOSTKEYCHECK returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_STRICTHOSTKEYCHECK, &ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_STRICTHOSTKEYCHECK is now %d"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_STRICTHOSTKEYCHECK does not have a valid value. %d"</span>, ssh-><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>  <span class="comment">/* SSH_OPTIONS_COMPRESSION */</span></div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_COMPRESSION, &parsed_config);</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_COMPRESSION returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_COMPRESSION, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_COMPRESSION is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_COMPRESSION does not have a valid value. %s"</span>, ssh-><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> </div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>  <span class="keywordflow">if</span> (ssh_connect(ssh-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not start SSH session. %s"</span>));</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>  }</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> </div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> <span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>  <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> <span class="comment"> * when we loss the tunnel */</span></div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>  sshsock = ssh_get_fd(ssh-><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>  <span class="keywordflow">if</span> (sshsock >= 0) {</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>  optval = 1;</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>  <span class="keywordflow">if</span> (setsockopt(sshsock, SOL_SOCKET, SO_KEEPALIVE, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP KeepAlive not set"</span>);</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP KeepAlive enabled"</span>);</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span> </div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> <span class="preprocessor">#ifdef TCP_KEEPIDLE</span></div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  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>  <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPIDLE, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPIDLE not set"</span>);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPIDLE set to %i"</span>, optval);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span> </div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span> <span class="preprocessor">#ifdef TCP_KEEPCNT</span></div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  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>  <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPCNT, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPCNT not set"</span>);</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPCNT set to %i"</span>, optval);</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span> </div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> <span class="preprocessor">#ifdef TCP_KEEPINTVL</span></div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>  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>  <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPINTVL, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPINTVL not set"</span>);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPINTVL set to %i"</span>, optval);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> </div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span> <span class="preprocessor">#ifdef TCP_USER_TIMEOUT</span></div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>  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>  <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_USER_TIMEOUT, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_USER_TIMEOUT not set"</span>);</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_USER_TIMEOUT set to %i"</span>, optval);</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> </div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>  }</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span> </div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>  <span class="comment">/* Try the "none" authentication */</span></div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>  <span class="keywordflow">if</span> (ssh_userauth_none(ssh-><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>  ssh-><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>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> }</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> </div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span> gboolean</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span> <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> {</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>  <span class="keyword">const</span> gchar *username;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>  <span class="keyword">const</span> gchar *privatekey;</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>  <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>  gchar *s;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span> </div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>  ssh-><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>  ssh-><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>  ssh-><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>  ssh-><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>  ssh-><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>  ssh-><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>  pthread_mutex_init(&ssh-><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> </div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>  ssh-><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>  ssh-><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> </div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>  username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">"ssh_tunnel_username"</span> : <span class="stringliteral">"username"</span>);</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>  privatekey = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">"ssh_tunnel_privatekey"</span> : <span class="stringliteral">"ssh_privatekey"</span>);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>  ssh-><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">"ssh_tunnel_certfile"</span> : <span class="stringliteral">"ssh_certfile"</span>));</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> </div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>  <span class="comment">/* The ssh->server and ssh->port values */</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>  <span class="keywordflow">if</span> (is_tunnel) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>  REMMINA_DEBUG(<span class="stringliteral">"We are initializing an SSH tunnel session"</span>);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>  server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"ssh_tunnel_server"</span>);</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>  <span class="keywordflow">if</span> (server == NULL || server[0] == 0) {</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>  <span class="comment">// ssh_tunnel_server empty or invalid, we are opening a tunnel, it means that "Same server at port 22" has been selected</span></div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>  server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>);</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>  <span class="keywordflow">if</span> (server == NULL || server[0] == 0)</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>  server = <span class="stringliteral">"localhost"</span>;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &ssh-><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>  ssh-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &ssh-><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>  }</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  REMMINA_DEBUG(<span class="stringliteral">"server:port = %s, server = %s, port = %d"</span>, server, ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  REMMINA_DEBUG(<span class="stringliteral">"We are initializing an SSH session"</span>);</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>);</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  <span class="keywordflow">if</span> (server == NULL || server[0] == 0)</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>  server = <span class="stringliteral">"localhost"</span>;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"server:port = %s, server = %s, port = %d"</span>, server, ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-><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>  }</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> </div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>  g_free(ssh-><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>  <span class="comment">// ???</span></div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 0, &ssh-><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>  }</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span> </div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>  REMMINA_DEBUG(<span class="stringliteral">"Initialized SSH struct from file with ssh->server = %s and SSH->port = %d"</span>, ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-><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> </div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>  ssh-><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>  ssh-><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>  ssh-><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">"ssh_tunnel_auth"</span> : <span class="stringliteral">"ssh_auth"</span>, 0);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>  ssh-><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">"ssh_charset"</span>));</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  ssh-><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">"ssh_tunnel_kex_algorithms"</span> : <span class="stringliteral">"ssh_kex_algorithms"</span>));</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>  ssh-><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">"ssh_tunnel_ciphers"</span> : <span class="stringliteral">"ssh_ciphers"</span>));</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  ssh-><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">"ssh_tunnel_hostkeytypes"</span> : <span class="stringliteral">"ssh_hostkeytypes"</span>));</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>  ssh-><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">"ssh_tunnel_proxycommand"</span> : <span class="stringliteral">"ssh_proxycommand"</span>));</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  ssh-><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">"ssh_tunnel_stricthostkeycheck"</span> : <span class="stringliteral">"ssh_stricthostkeycheck"</span>, 0);</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>  gint c = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, is_tunnel ? <span class="stringliteral">"ssh_tunnel_compression"</span> : <span class="stringliteral">"ssh_compression"</span>, 0);</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = (c == 1) ? <span class="stringliteral">"yes"</span> : <span class="stringliteral">"no"</span>;</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span> </div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh->user: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->password: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->auth: %d"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->charset: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->kex_algorithms: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->ciphers: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->hostkeytypes: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->proxycommand: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->stricthostkeycheck: %d"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->compression: %s"</span>, ssh-><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> </div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>  <span class="comment">/* Public/Private keys */</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>  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>  <span class="keywordflow">if</span> (s) {</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->privkeyfile: %s"</span>, ssh-><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>  g_free(s);</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>  ssh-><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>  }</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> </div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span> }</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span> </div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span> <span class="keyword">static</span> gboolean</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span> 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> {</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  ssh-><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>  ssh-><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>  ssh-><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>  pthread_mutex_init(&ssh-><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> </div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(ssh_src-><a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> ? ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a> = ssh_src-><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> </div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span> }</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span> </div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span> gchar *</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span> <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> {</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>  gchar *to = NULL;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span> </div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> && from)</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>  to = g_convert(from, -1, <span class="stringliteral">"UTF-8"</span>, ssh-><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>  <span class="keywordflow">if</span> (!to) to = g_strdup(from);</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>  <span class="keywordflow">return</span> to;</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span> }</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> </div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span> gchar *</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span> <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> {</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>  gchar *to = NULL;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span> </div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> && from)</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>  to = g_convert(from, -1, ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>, <span class="stringliteral">"UTF-8"</span>, NULL, NULL, NULL);</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>  <span class="keywordflow">if</span> (!to) to = g_strdup(from);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>  <span class="keywordflow">return</span> to;</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> }</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span> </div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> <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> {</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <span class="keywordflow">if</span> (ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Disconnecting SSH session"</span>);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  ssh_disconnect(ssh-><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>  ssh_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  pthread_mutex_destroy(&ssh-><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>  g_free(ssh);</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> }</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> </div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span> <span class="comment">* SSH Tunnel *</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span> <span class="keyword">struct </span>_RemminaSSHTunnelBuffer {</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>  gchar * data;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>  gchar * ptr;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  ssize_t len;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span> };</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span> </div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> <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> remmina_ssh_tunnel_buffer_new(ssize_t len)</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> {</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>  <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> </div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  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>  buffer->data = (gchar *)g_malloc(len);</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>  buffer->ptr = buffer->data;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  buffer->len = len;</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>  <span class="keywordflow">return</span> buffer;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> }</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span> </div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> 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> {</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>  <span class="keywordflow">if</span> (buffer) {</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>  g_free(buffer->data);</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>  g_free(buffer);</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>  }</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span> }</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span> </div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> <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> <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> {</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  <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> </div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  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> </div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  <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> </div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  <span class="keywordflow">return</span> tunnel;</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> }</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> </div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> 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> {</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>  <span class="keywordflow">for</span> (i = 0; i < tunnel-><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>  close(tunnel-><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>  remmina_ssh_tunnel_buffer_free(tunnel-><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>  ssh_channel_close(tunnel-><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>  ssh_channel_send_eof(tunnel-><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>  ssh_channel_free(tunnel-><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>  }</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span> </div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>  g_free(tunnel-><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>  tunnel-><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>  g_free(tunnel-><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>  tunnel-><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>  g_free(tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>  tunnel-><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>  tunnel-><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> }</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span> </div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> 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> {</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>  ssh_channel_close(tunnel-><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>  ssh_channel_send_eof(tunnel-><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>  ssh_channel_free(tunnel-><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>  close(tunnel-><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>  remmina_ssh_tunnel_buffer_free(tunnel-><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>  tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n] = tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[n] = tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[n] = tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[tunnel-><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> }</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> </div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span> <span class="comment">/* Register the new channel/socket pair */</span></div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span> 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> {</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>  gint flags;</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>  gint i;</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> </div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  i = tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> > tunnel-><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>  <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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a> = (ssh_channel *)g_realloc(tunnel-><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>  <span class="keyword">sizeof</span>(ssh_channel) * (tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a> = (gint *)g_realloc(tunnel-><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>  <span class="keyword">sizeof</span>(gint) * tunnel-><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>  tunnel-><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-><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>  <span class="keyword">sizeof</span>(<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *) * tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a> = tunnel-><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> </div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a> = (ssh_channel *)g_realloc(tunnel-><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>  <span class="keyword">sizeof</span>(ssh_channel) * (tunnel-><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>  }</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>  flags = fcntl(sock, F_GETFL, 0);</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>  fcntl(sock, F_SETFL, flags | O_NONBLOCK);</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span> }</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span> </div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span> <span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span> 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> {</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  gint sock, sock_flags;</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span> </div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  sock_flags = fcntl(tunnel-><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>  <span class="keywordflow">if</span> (blocking)</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  sock_flags &= ~O_NONBLOCK;</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>  sock_flags |= O_NONBLOCK;</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>  fcntl(tunnel-><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> </div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  <span class="comment">/* Accept a local connection */</span></div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>  sock = accept(tunnel-><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>  <span class="keywordflow">if</span> (sock < 0) {</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>  g_free(REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>  REMMINA_SSH(tunnel)->error = g_strdup(<span class="stringliteral">"Local socket not accepted"</span>);</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  }</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>  }</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span> </div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> }</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span> </div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span> <span class="keyword">static</span> ssh_channel</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span> 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> {</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>  ssh_channel channel = NULL;</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span> </div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>  channel = ssh_channel_new(tunnel-><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>  <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not create channel. %s"</span>));</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>  }</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span> </div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH tunnel destination is %s"</span>, tunnel-><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>  <span class="keywordflow">if</span> (ssh_channel_open_forward(channel, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>, <span class="stringliteral">"127.0.0.1"</span>, 0) != SSH_OK) {</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>  ssh_channel_close(channel);</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>  ssh_channel_free(channel);</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not connect to SSH tunnel. %s"</span>));</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>  }</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span> </div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>  <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> }</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span> </div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span> <span class="keyword">static</span> gpointer</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span> remmina_ssh_tunnel_main_thread_proc(gpointer data)</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span> {</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>  <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>  gchar *ptr;</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>  ssize_t len = 0, lenw = 0;</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>  fd_set <span class="keyword">set</span>;</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>  <span class="keyword">struct </span>timeval timeout;</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>  g_autoptr(GDateTime) t1 = NULL;</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>  g_autoptr(GDateTime) t2 = NULL;</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>  GTimeSpan diff; <span class="comment">// microseconds</span></div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>  ssh_channel channel = NULL;</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  gboolean first = TRUE;</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>  gboolean disconnected;</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>  gint sock;</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>  gint maxfd;</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>  gint i;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>  gint ret;</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>  <span class="keyword">struct </span>sockaddr_in sin;</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span> </div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>  t1 = t2 = g_date_time_new_now_local();</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span> </div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>  <span class="keywordflow">switch</span> (tunnel-><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>  <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>  sock = remmina_ssh_tunnel_accept_local_connection(tunnel, TRUE);</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>  <span class="keywordflow">if</span> (sock < 0) {</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  <span class="keywordflow">if</span> (tunnel)</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>  }</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span> </div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  channel = remmina_ssh_tunnel_create_forward_channel(tunnel);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>  <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>  close(sock);</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>  }</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> </div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>  remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span> </div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>  <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>  <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>  <span class="keywordflow">for</span> (i = 10; i <= MAX_X_DISPLAY_NUMBER; i++) {</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>  <span class="keywordflow">if</span> (ssh_channel_listen_forward(REMMINA_SSH(tunnel)->session, (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">"localhost"</span> : NULL), 6000 + i, NULL)) {</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>  tunnel-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  }</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>  <span class="keywordflow">if</span> (ssh_forward_listen(REMMINA_SSH(tunnel)->session, (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">"localhost"</span> : NULL), 6000 + i, NULL)) {</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>  tunnel-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  }</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  }</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> < 1) {</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not request port forwarding. %s"</span>));</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  }</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span> </div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> &&</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>  !(*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>)(tunnel, tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>  }</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> </div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span> </div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>  <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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>  <span class="keywordflow">if</span> (ssh_channel_listen_forward(REMMINA_SSH(tunnel)->session, NULL, tunnel-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not request port forwarding. %s"</span>));</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>  }</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>  <span class="keywordflow">if</span> (ssh_forward_listen(REMMINA_SSH(tunnel)->session, NULL, tunnel-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not request port forwarding. %s"</span>));</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  }</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span> </div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> &&</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>  !(*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>)(tunnel, tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>  }</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span> </div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  }</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span> </div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>  tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a> = g_malloc(tunnel-><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> </div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>  <span class="comment">/* Start the tunnel data transmission */</span></div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>  <span class="keywordflow">while</span> (tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  tunnel-><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>  <span class="keywordflow">if</span> (first) {</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>  first = FALSE;</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>  channel = ssh_channel_accept_forward(REMMINA_SSH(tunnel)->session, 15000, &tunnel-><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>  <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"The server did not respond."</span>));</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>  }</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a>)(tunnel, tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  <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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>  ssh_channel_cancel_forward(REMMINA_SSH(tunnel)->session, NULL, tunnel-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>  ssh_forward_cancel(REMMINA_SSH(tunnel)->session, NULL, tunnel-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>  }</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tunnel-><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>  <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> <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>  t1 = g_date_time_new_now_local();</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>  diff = g_date_time_difference(t1, t2) * 10000000</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  + g_date_time_difference(t1, t2) / 100000;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  <span class="keywordflow">if</span> (diff > 1) {</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  REMMINA_DEBUG(<span class="stringliteral">"Polling tunnel channels"</span>);</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  channel = ssh_channel_accept_forward(REMMINA_SSH(tunnel)->session, 0, &tunnel-><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>  <span class="keywordflow">if</span> (channel == NULL)</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  t2 = t1;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  }</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>  g_date_time_unref(t1);</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>  g_date_time_unref(t2);</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>  }</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span> </div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  <span class="keywordflow">if</span> (channel) {</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  <span class="keywordflow">if</span> (tunnel-><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>  sin.sin_family = AF_INET;</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  sin.sin_port = htons(tunnel-><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>  sin.sin_addr.s_addr = inet_addr(<span class="stringliteral">"127.0.0.1"</span>);</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  sock = socket(AF_INET, SOCK_STREAM, 0);</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  <span class="keywordflow">if</span> (connect(sock, (<span class="keyword">struct</span> sockaddr *)&sin, <span class="keyword">sizeof</span>(sin)) < 0) {</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>  <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>  _(<span class="stringliteral">"Cannot connect to local port %i."</span>), tunnel-><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>  close(sock);</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>  sock = -1;</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  }</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  sock = <a class="code" href="remmina__public_8c.html#a52656bbe00a83068f36337f449bdc767">remmina_public_open_xdisplay</a>(tunnel-><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>  <span class="keywordflow">if</span> (sock >= 0)</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>  <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>  ssh_channel_close(channel);</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>  ssh_channel_free(channel);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  }</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  channel = NULL;</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  }</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>  }</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span> </div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> <= 0)</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  <span class="comment">/* No more connections. We should quit */</span></div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span> </div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>  timeout.tv_sec = 0;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>  timeout.tv_usec = 200000;</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span> </div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  FD_ZERO(&<span class="keyword">set</span>);</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>  maxfd = 0;</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  <span class="keywordflow">for</span> (i = 0; i < tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i] > maxfd)</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  maxfd = tunnel-><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>  FD_SET(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], &<span class="keyword">set</span>);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  }</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> </div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  ret = ssh_select(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>, maxfd + 1, &<span class="keyword">set</span>, &timeout);</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  <span class="keywordflow">if</span> (!tunnel-><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>  <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>  <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> </div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>  i = 0;</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  <span class="keywordflow">while</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> && i < tunnel->num_channels) {</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  disconnected = FALSE;</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  <span class="keywordflow">if</span> (FD_ISSET(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], &<span class="keyword">set</span>)) {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  <span class="keywordflow">while</span> (!disconnected &&</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>  (len = read(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a>)) > 0) {</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>  <span class="keywordflow">for</span> (ptr = tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>, lenw = 0; len > 0; len -= lenw, ptr += lenw) {</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  lenw = ssh_channel_write(tunnel-><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>  <span class="keywordflow">if</span> (lenw <= 0) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  disconnected = TRUE;</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not write to SSH channel. %s"</span>));</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  }</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>  }</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  <span class="keywordflow">if</span> (len == 0) {</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not read from tunnel listening socket. %s"</span>));</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  disconnected = TRUE;</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  }</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  }</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  REMMINA_DEBUG(<span class="stringliteral">"tunnel disconnected because %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  remmina_ssh_tunnel_remove_channel(tunnel, i);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  }</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  i++;</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  }</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  <span class="keywordflow">if</span> (!tunnel-><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> </div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  i = 0;</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  <span class="keywordflow">while</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> && i < tunnel->num_channels) {</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  disconnected = FALSE;</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  <span class="keywordflow">if</span> (!tunnel-><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>  len = ssh_channel_poll(tunnel-><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>  <span class="keywordflow">if</span> (len == SSH_ERROR || len == SSH_EOF) {</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not poll SSH channel. %s"</span>));</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  disconnected = TRUE;</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len > 0) {</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  tunnel-><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>  len = ssh_channel_read_nonblocking(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i], tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->data, len, 0);</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  <span class="keywordflow">if</span> (len <= 0) {</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not read SSH channel in a non-blocking way. %s"</span>));</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  disconnected = TRUE;</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len = len;</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  }</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  }</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>  }</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span> </div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>  <span class="keywordflow">if</span> (!disconnected && tunnel-><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>  <span class="keywordflow">for</span> (lenw = 0; tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len > 0;</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len -= lenw, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->ptr += lenw) {</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>  lenw = write(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->ptr, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len);</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>  <span class="keywordflow">if</span> (lenw == -1 && errno == EAGAIN && tunnel-><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>  <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> <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> <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>  <span class="keywordflow">if</span> (lenw <= 0) {</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not send data to tunnel listening socket. %s"</span>));</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  disconnected = TRUE;</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  }</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  }</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len <= 0) {</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  remmina_ssh_tunnel_buffer_free(tunnel-><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>  tunnel-><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>  }</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  }</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span> </div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>  REMMINA_DEBUG(<span class="stringliteral">"Connection to SSH tunnel dropped. %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>  remmina_ssh_tunnel_remove_channel(tunnel, i);</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>  }</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>  i++;</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>  }</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>  sock = remmina_ssh_tunnel_accept_local_connection(tunnel, FALSE);</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  <span class="keywordflow">if</span> (sock > 0) {</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  channel = remmina_ssh_tunnel_create_forward_channel(tunnel);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>  <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>  REMMINA_DEBUG(<span class="stringliteral">"Could not open new SSH connection. %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>  close(sock);</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  <span class="comment">/* Leave thread loop */</span></div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>  tunnel-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  }</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  }</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>  }</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> </div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  remmina_ssh_tunnel_close_all_channels(tunnel);</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span> </div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  tunnel-><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> </div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  <span class="comment">/* Notify tunnel owner of disconnection */</span></div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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> </div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span> }</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span> </div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span> <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> {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  <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> </div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  <span class="comment">/* Ask tunnel owner to destroy tunnel object */</span></div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a>)(tunnel, tunnel-><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> </div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span> }</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span> </div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span> <span class="keyword">static</span> gpointer</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span> remmina_ssh_tunnel_main_thread(gpointer data)</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span> {</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  <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> </div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span> </div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  remmina_ssh_tunnel_main_thread_proc(data);</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> < 0 || tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> == 0 || !tunnel-><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>  }</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  tunnel-><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> </div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  <span class="comment">/* Do after tunnel thread cleanup */</span></div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  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> </div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span> }</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span> </div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span> </div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span> <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> {</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> >= 0) {</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  close(tunnel-><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>  tunnel-><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>  }</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span> }</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span> </div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span> gboolean</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span> <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> {</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  gint sock;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  gint sockopt = 1;</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  <span class="keyword">struct </span>sockaddr_in sin;</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span> </div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  tunnel-><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>  tunnel-><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>  tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  REMMINA_SSH(tunnel)->error = g_strdup(_(<span class="stringliteral">"Assign a destination port."</span>));</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  }</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span> </div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  <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>  sock = socket(AF_INET, SOCK_STREAM, 0);</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>  <span class="keywordflow">if</span> (sock < 0) {</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  REMMINA_SSH(tunnel)->error = g_strdup(_(<span class="stringliteral">"Could not create socket."</span>));</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  }</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &sockopt, <span class="keyword">sizeof</span>(sockopt));</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span> </div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  sin.sin_family = AF_INET;</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  sin.sin_port = htons(local_port);</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  sin.sin_addr.s_addr = inet_addr(<span class="stringliteral">"127.0.0.1"</span>);</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span> </div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  <span class="keywordflow">if</span> (bind(sock, (<span class="keyword">struct</span> sockaddr *)&sin, <span class="keyword">sizeof</span>(sin))) {</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>  REMMINA_SSH(tunnel)->error = g_strdup(_(<span class="stringliteral">"Could not bind server socket to local port."</span>));</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  close(sock);</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  }</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span> </div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  <span class="keywordflow">if</span> (listen(sock, 1)) {</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  REMMINA_SSH(tunnel)->error = g_strdup(_(<span class="stringliteral">"Could not listen to local port."</span>));</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  close(sock);</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  }</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span> </div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  <span class="keywordflow">if</span> (pthread_create(&tunnel-><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>  <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not start pthread."</span>));</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  tunnel-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  }</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span> }</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span> </div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span> gboolean</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span> <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> {</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>  <span class="keywordflow">if</span> (pthread_create(&tunnel-><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>  <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not start pthread."</span>));</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>  tunnel-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  }</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span> }</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span> </div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span> gboolean</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span> <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> {</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  <span class="keywordflow">if</span> (pthread_create(&tunnel-><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>  <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not start pthread."</span>));</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>  tunnel-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>  }</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span> }</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span> </div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span> gboolean</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span> <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> {</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>  <span class="keywordflow">return</span> tunnel-><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> }</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span> </div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span> <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> {</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>  pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span> </div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>  REMMINA_DEBUG(<span class="stringliteral">"tunnel->thread = %lX\n"</span>, tunnel-><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> </div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>  thread = tunnel-><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>  <span class="keywordflow">if</span> (thread != 0) {</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  tunnel-><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>  pthread_cancel(thread);</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>  pthread_join(thread, NULL);</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>  tunnel-><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>  }</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span> </div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>  <span class="keywordflow">if</span> (tunnel-><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> && tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> > 0) {</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>  ssh_channel_cancel_forward(REMMINA_SSH(tunnel)->session, NULL, 6000 + tunnel-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>  ssh_forward_cancel(REMMINA_SSH(tunnel)->session, NULL, 6000 + tunnel-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>  }</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> >= 0) {</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>  close(tunnel-><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>  tunnel-><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>  }</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span> </div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>  remmina_ssh_tunnel_close_all_channels(tunnel);</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span> </div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>  g_free(tunnel-><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>  g_free(tunnel-><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>  g_free(tunnel-><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>  g_free(tunnel-><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> </div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>  <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> }</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span> </div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span> <span class="comment">* SSH SFTP *</span></div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span> <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> <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> {</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>  <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> </div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>  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> </div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>  <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> </div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>  sftp-><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> </div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>  <span class="keywordflow">return</span> sftp;</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span> }</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span> </div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span> <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> <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> {</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>  <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> </div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>  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> </div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>  remmina_ssh_init_from_ssh(REMMINA_SSH(sftp), ssh);</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span> </div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>  sftp-><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> </div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>  <span class="keywordflow">return</span> sftp;</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span> }</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span> </div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span> gboolean</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span> <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> {</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>  sftp-><a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = sftp_new(sftp-><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>  <span class="keywordflow">if</span> (!sftp-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(sftp), _(<span class="stringliteral">"Could not create SFTP session. %s"</span>));</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>  }</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>  <span class="keywordflow">if</span> (sftp_init(sftp-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(sftp), _(<span class="stringliteral">"Could not start SFTP session. %s"</span>));</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>  }</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span> }</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span> </div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span> <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> {</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>  <span class="keywordflow">if</span> (sftp-><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>  sftp_free(sftp-><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>  sftp-><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>  }</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>  <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> }</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span> </div><div class="line"><a name="l02801"></a><span class="lineno"> 2801</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span> <span class="comment">* SSH Shell *</span></div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span> <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> <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> {</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>  <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> </div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>  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> </div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>  <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> </div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>  shell-><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>  shell-><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>  shell-><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">"exec"</span>));</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>  shell-><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">"run_line"</span>));</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span> </div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>  <span class="keywordflow">return</span> shell;</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span> }</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span> </div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span> <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> <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> {</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>  <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> </div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>  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> </div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>  remmina_ssh_init_from_ssh(REMMINA_SSH(shell), ssh);</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span> </div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>  shell-><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>  shell-><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> </div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>  <span class="keywordflow">return</span> shell;</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span> }</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span> </div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span> <span class="keyword">static</span> gboolean</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span> remmina_ssh_call_exit_callback_on_main_thread(gpointer data)</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span> {</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span> </div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>  <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>  <span class="keywordflow">if</span> (shell-><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>  shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>(shell-><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>  <span class="keywordflow">if</span> (shell) {</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>  <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>  shell = NULL;</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>  }</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span> }</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span> </div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span> <span class="keyword">static</span> gpointer</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span> remmina_ssh_shell_thread(gpointer data)</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span> {</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>  <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>  <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)shell-><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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>  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>  ssh_channel channel = NULL;</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>  gint ret;</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>  gchar *filename;</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>  <span class="keyword">const</span> gchar *dir;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>  <span class="keyword">const</span> gchar *sshlogname;</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>  FILE *fp = NULL;</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span> </div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>  <span class="comment">//gint screen;</span></div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span> </div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>  LOCK_SSH(shell)</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span> </div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>  <span class="keywordflow">if</span> ((channel = ssh_channel_new(REMMINA_SSH(shell)->session)) == NULL ||</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>  ssh_channel_open_session(channel)) {</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(shell), _(<span class="stringliteral">"Could not open channel. %s"</span>));</div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>  <span class="keywordflow">if</span> (channel) ssh_channel_free(channel);</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>  shell-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>  }</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span> </div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>  ssh_channel_request_pty(channel);</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span> </div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>  <span class="comment">// SSH Callbacks</span></div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>  <span class="keyword">struct </span>ssh_callbacks_struct cb =</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>  {</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>  .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>  .userdata = shell,</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>  };</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span> </div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">"ssh_forward_x11"</span>, FALSE)) {</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>  ssh_callbacks_init(&cb);</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>  ssh_set_callbacks(REMMINA_SSH(shell)->session, &cb);</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span> </div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *display = getenv(<span class="stringliteral">"DISPLAY"</span>);</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>  <span class="keywordtype">char</span> *proto = NULL, *cookie = NULL;</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b">remmina_ssh_x11_get_proto</a>(display, &proto, &cookie) != 0) {</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>  REMMINA_DEBUG(<span class="stringliteral">"Using fake authentication data for X11 forwarding"</span>);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>  proto = NULL;</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>  cookie = NULL;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>  }</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span> </div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>  REMMINA_DEBUG(<span class="stringliteral">"proto: %s - cookie: %s"</span>, proto, cookie);</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>  ret = ssh_channel_request_x11(channel, 0, proto, cookie, 0);</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>  <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>  }</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span> </div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>  <span class="keywordflow">if</span> (shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a> && shell-><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>  REMMINA_DEBUG (<span class="stringliteral">"Requesting an SSH exec channel"</span>);</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>  ret = ssh_channel_request_exec(channel, shell-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>  REMMINA_DEBUG (<span class="stringliteral">"Requesting an SSH shell channel"</span>);</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>  ret = ssh_channel_request_shell(channel);</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>  }</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>  <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>  REMMINA_WARNING (<span class="stringliteral">"Could not request shell"</span>);</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(shell), _(<span class="stringliteral">"Could not request shell. %s"</span>));</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>  ssh_channel_close(channel);</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>  ssh_channel_free(channel);</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>  shell-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>  }</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span> </div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>  shell-><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> </div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span> </div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>  GFile *rf = g_file_new_for_path(remminafile->filename);</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span> </div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"sshlogfolder"</span>) == NULL)</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>  dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_cache_dir(), <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>  dir = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"sshlogfolder"</span>);</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span> </div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"sshlogname"</span>) == NULL)</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>  sshlogname = g_strconcat(g_file_get_basename(rf), <span class="stringliteral">"."</span>, <span class="stringliteral">"log"</span>, NULL);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>  sshlogname = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"sshlogname"</span>);</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>  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>  filename = g_strconcat(dir, <span class="stringliteral">"/"</span>, sshlogname, NULL);</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span> </div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"sshsavesession"</span>, FALSE)) {</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>  REMMINA_DEBUG(<span class="stringliteral">"Saving session log to %s"</span>, filename);</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>  fp = fopen(filename, <span class="stringliteral">"w"</span>);</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>  }</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span> </div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>  g_free(filename);</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span> </div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>  REMMINA_DEBUG(<span class="stringliteral">"Run_line: %s"</span>, shell-><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>  <span class="keywordflow">if</span> (!shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a> && shell-><a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a> && shell-><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>  LOCK_SSH(shell)</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>  <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>  ssh_channel_write(channel, shell-><a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>, (gint)strlen(shell-><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>  ssh_channel_write(channel, <span class="stringliteral">"\n"</span>, (gint)1); <span class="comment">//TODO: Test this</span></div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>  REMMINA_DEBUG(<span class="stringliteral">"Run_line written to channel"</span>);</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>  }</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span> </div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>  LOCK_SSH(shell)</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span> </div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>  <span class="comment">// Create new event context.</span></div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>  shell-><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>  <span class="keywordflow">if</span> (shell-><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>  REMMINA_WARNING(<span class="stringliteral">"Internal error in %s: Couldn't get a event."</span>, __func__);</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>  }</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span> </div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>  REMMINA_DEBUG(<span class="stringliteral">"shell->slave: %d"</span>, shell-><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> </div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>  <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>  <span class="keywordflow">if</span> (ssh_event_add_fd(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, shell-><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>  REMMINA_WARNING(<span class="stringliteral">"Internal error in %s: Couldn't add an fd to the event."</span>, __func__);</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>  }</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span> </div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>  <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>  <span class="keywordflow">if</span> (ssh_event_add_session(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, REMMINA_SSH(shell)->session) != SSH_OK) {</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>  REMMINA_WARNING(<span class="stringliteral">"Internal error in %s: Couldn't add the session to the event."</span>, __func__);</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>  }</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span> </div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>  <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, TRUE, shell-><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> </div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>  <span class="comment">// Initializes the ssh_callbacks_struct.</span></div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>  <a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>.userdata = &shell;</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>  ssh_callbacks_init(&<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>  <span class="comment">// Set the channel callback functions.</span></div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>  ssh_set_channel_callbacks(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, &<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>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span> </div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>  <span class="keywordflow">do</span> {</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>  ssh_event_dopoll(shell-><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>  } <span class="keywordflow">while</span>(!ssh_channel_is_closed(shell-><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> </div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>  <span class="comment">// Close all OPENED X11 channel</span></div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>  <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(shell-><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> </div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>  shell-><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> </div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>  LOCK_SSH(shell)</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span> </div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>  <span class="comment">// Remove socket fd from event context.</span></div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>  ret = ssh_event_remove_fd(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, shell-><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>  REMMINA_DEBUG(<span class="stringliteral">"Remove socket fd from event context: %d"</span>, ret);</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span> </div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>  <span class="comment">// Remove session object from event context.</span></div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>  ret = ssh_event_remove_session(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, REMMINA_SSH(shell)->session);</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>  REMMINA_DEBUG(<span class="stringliteral">"Remove session object from event context: %d"</span>, ret);</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span> </div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>  <span class="comment">// Free event context.</span></div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>  ssh_event_free(shell-><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>  REMMINA_DEBUG(<span class="stringliteral">"Free event context"</span>);</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span> </div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>  <span class="comment">// Remove channel callback.</span></div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>  ret = ssh_remove_channel_callbacks(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, &<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>  REMMINA_DEBUG(<span class="stringliteral">"Remove channel callback: %d"</span>, ret);</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span> </div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"sshsavesession"</span>, FALSE))</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>  fclose(fp);</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>  shell-><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>  ssh_channel_close(channel);</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>  ssh_channel_free(channel);</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span> </div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>  shell-><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> </div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>  <span class="keywordflow">if</span> (shell-><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>  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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span> }</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span> </div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span> gboolean</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span> <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> {</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>  gchar *slavedevice;</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>  <span class="keyword">struct </span>termios stermios;</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span> </div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>  shell-><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>  <span class="keywordflow">if</span> (shell-><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>  grantpt(shell-><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>  unlockpt(shell-><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>  (slavedevice = ptsname(shell-><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>  (shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a> = open(slavedevice, O_RDWR | O_NOCTTY)) < 0) {</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>  REMMINA_SSH(shell)->error = g_strdup(_(<span class="stringliteral">"Could not create PTY device."</span>));</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>  }</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span> </div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>  <span class="comment">/* As per libssh documentation */</span></div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>  tcgetattr(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, &stermios);</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>  stermios.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>  stermios.c_oflag &= ~OPOST;</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>  stermios.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>  stermios.c_cflag &= ~(CSIZE | PARENB);</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>  stermios.c_cflag |= CS8;</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>  tcsetattr(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, TCSANOW, &stermios);</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span> </div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>  shell-><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>  shell-><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> </div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>  <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>  pthread_create(&shell-><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> </div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span> }</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span> </div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span> <span class="keywordtype">void</span></div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span> <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> {</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>  LOCK_SSH(shell)</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>  <span class="keywordflow">if</span> (shell-><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>  ssh_channel_change_pty_size(shell-><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>  UNLOCK_SSH(shell)</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span> }</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span> </div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span> <span class="keywordtype">void</span></div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span> <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> {</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>  <span class="comment">//pthread_t thread = shell->thread;</span></div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span> </div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>  <span class="comment">// Close all OPENED X11 channel</span></div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>  <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(shell-><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> </div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>  shell-><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>  shell-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cancelling the shell thread if needed"</span>);</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>  <span class="keywordflow">if</span> (shell-><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>  pthread_cancel(shell-><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>  <span class="keywordflow">if</span> (shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>) pthread_join(shell-><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>  }</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>  close(shell-><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>  <span class="keywordflow">if</span> (shell-><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>  g_free(shell-><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>  shell-><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>  }</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>  <span class="keywordflow">if</span> (shell-><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>  g_free(shell-><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>  shell-><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>  }</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>  <span class="comment">/* It’s not necessary to close shell->slave since the other end (vte) will close it */</span>;</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>  <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> }</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span> </div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span> <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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "config.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">/* To get definitions of NI_MAXHOST and NI_MAXSERV from <netdb.h> */</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define _DEFAULT_SOURCE</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <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> <span class="preprocessor">#define _XOPEN_SOURCE 600</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#define LIBSSH_STATIC 1</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <libssh/libssh.h></span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include <gtk/gtk.h></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include <poll.h></span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <signal.h></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include <time.h></span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include <pthread.h></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#ifdef HAVE_NETDB_H</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include <netdb.h></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#ifdef HAVE_ARPA_INET_H</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include <arpa/inet.h></span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#ifdef HAVE_NETINET_IN_H</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#include <netinet/in.h></span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#ifdef HAVE_SYS_SOCKET_H</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#include <sys/socket.h></span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#ifdef HAVE_FCNTL_H</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#ifdef HAVE_ERRNO_H</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#ifdef HAVE_TERMIOS_H</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#include <termios.h></span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#ifdef HAVE_UNISTD_H</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#ifdef HAVE_PTY_H</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#include <pty.h></span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#ifdef HAVE_SYS_UN_H</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#include <sys/un.h></span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#include "<a class="code" href="remmina__public_8h.html">remmina_public.h</a>"</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#include "<a class="code" href="types_8h.html">remmina/types.h</a>"</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#include "<a class="code" href="remmina__file_8h.html">remmina_file.h</a>"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#include "<a class="code" href="remmina__log_8h.html">remmina_log.h</a>"</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#include "<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>"</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#include "<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>"</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#include "<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>"</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#include <netinet/tcp.h></span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#if defined(__FreeBSD__) || defined(__OpenBSD__)</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#ifndef SOL_TCP</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#define SOL_TCP IPPROTO_TCP</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">* SSH Base *</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#define LOCK_SSH(ssh) pthread_mutex_lock(&REMMINA_SSH(ssh)->ssh_mutex);</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#define UNLOCK_SSH(ssh) pthread_mutex_unlock(&REMMINA_SSH(ssh)->ssh_mutex);</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694"> 116</a></span> <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> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="stringliteral">".ssh/id_ed25519"</span>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="stringliteral">".ssh/id_rsa"</span>,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="stringliteral">".ssh/id_dsa"</span>,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="stringliteral">".ssh/identity"</span>,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  NULL</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> };</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">* X11 Channels *</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#define _PATH_UNIX_X "/tmp/.X11-unix/X%d"</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#define _XAUTH_CMD "/usr/bin/xauth list %s 2>/dev/null"</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="structitem.html"> 131</a></span> <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>  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>  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>  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>  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>  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>  <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> } <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> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792"> 140</a></span> <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> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <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> 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> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// Linked nodes to manage channel/fd tuples</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <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> <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> <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> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// X11 Display</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <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> <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> <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> <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> <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> <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> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// Send data to channel</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <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> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// Read data from channel</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <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> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// EOF&Close channel</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <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> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="comment">// Close all X11 channel</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <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> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="comment">// X11 Request</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <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> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <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> <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> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  .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>  .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>  .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>  .userdata = NULL</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> };</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <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> <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> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment">// Functions</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <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> <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> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  pthread_mutex_lock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  REMMINA_DEBUG(<span class="stringliteral">"insert node - fd_in: %d - fd_out: %d - protected %d"</span>, fd_in, fd_out, <span class="keyword">protected</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <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>  <span class="keywordflow">if</span> (node == NULL) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <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>  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>  node-><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>  node-><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>  node-><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>  node-><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>  node-><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>  node-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = NULL;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  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>  <span class="keywordflow">while</span> (node_iterator-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> != NULL)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  node_iterator = node_iterator-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">/* Create the new node */</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <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>  <span class="keyword">new</span>-><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>  <span class="keyword">new</span>->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>  <span class="keyword">new</span>->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>  <span class="keyword">new</span>->protected = <span class="keyword">protected</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">new</span>->thread = <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">new</span>->next = NULL;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  node_iterator-><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>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <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> <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> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  REMMINA_DEBUG(<span class="stringliteral">"delete node"</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  pthread_mutex_lock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <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>  <span class="keywordflow">for</span> (current = node; current; previous = current, current = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span> (current->channel != channel)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span> (previous == NULL)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  node = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  previous-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  free(current);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <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> <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> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">// TODO: too verbose REMMINA_DEBUG("search node");</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  pthread_mutex_lock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <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>  <span class="keywordflow">while</span> (current != NULL) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (current-><a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> == channel) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// TODO: too verbose REMMINA_DEBUG("found node - fd_in: %d - fd_out: %d - protected: %d", current->fd_in, current->fd_out, current->protected);</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> current;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  current = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  pthread_mutex_unlock(&<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <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> <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> {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordtype">int</span> opt;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  socklen_t optlen;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  optlen = <span class="keyword">sizeof</span>(opt);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span> (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  REMMINA_WARNING(<span class="stringliteral">"getsockopt TCP_NODELAY: %.100s"</span>, strerror(errno));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (opt == 1) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d is TCP_NODELAY"</span>, fd);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  opt = 1;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d setting TCP_NODELAY"</span>, fd);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span> (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, <span class="keyword">sizeof</span>(opt)) == -1)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  REMMINA_WARNING(<span class="stringliteral">"setsockopt TCP_NODELAY: %.100s"</span>, strerror(errno));</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <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> <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> {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (gaierr == EAI_SYSTEM && errno != 0)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> strerror(errno);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> gai_strerror(gaierr);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <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> <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> {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordtype">char</span> cmd[1024], line[512], xdisplay[512];</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <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>  FILE *f;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordtype">int</span> ret = 0, r;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  *_proto = proto;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  *_cookie = cookie;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  proto[0] = cookie[0] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (strncmp(display, <span class="stringliteral">"localhost:"</span>, 10) == 0) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> ((r = snprintf(xdisplay, <span class="keyword">sizeof</span>(xdisplay), <span class="stringliteral">"unix:%s"</span>, display + 10)) < 0 || (<span class="keywordtype">size_t</span>)r >= <span class="keyword">sizeof</span>(xdisplay)) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  REMMINA_WARNING(<span class="stringliteral">"display name too long. display: %s"</span>, display);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  display = xdisplay;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  snprintf(cmd, <span class="keyword">sizeof</span>(cmd), _XAUTH_CMD, display);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  REMMINA_DEBUG(<span class="stringliteral">"xauth cmd: %s"</span>, cmd);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  f = popen(cmd, <span class="stringliteral">"r"</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">if</span> (f && fgets(line, <span class="keyword">sizeof</span>(line), f) && sscanf(line, <span class="stringliteral">"%*s %511s %511s"</span>, proto, cookie) == 2) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  ret = 0;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  ret = 1;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span> (f) pclose(f);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  REMMINA_DEBUG(<span class="stringliteral">"proto: %s - cookie: %s - ret: %d"</span>, proto, cookie, ret);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <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> <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> {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordtype">int</span> sock;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">struct </span>sockaddr_un addr;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  sock = socket(AF_UNIX, SOCK_STREAM, 0);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (sock == -1)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  REMMINA_WARNING(<span class="stringliteral">"socket: %.100s"</span>, strerror(errno));</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  memset(&addr, 0, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  addr.sun_family = AF_UNIX;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  addr.sun_path[0] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  memcpy(addr.sun_path + 1, pathname, strlen(pathname));</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">if</span> (connect(sock, (<span class="keyword">struct</span> sockaddr *)&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>  REMMINA_DEBUG(<span class="stringliteral">"sock: %d"</span>, sock);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  REMMINA_WARNING(<span class="stringliteral">"connect %.100s: %.100s"</span>, addr.sun_path, strerror(errno));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  close(sock);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <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> <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> {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">char</span> buf[1024];</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  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>  <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> }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <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> <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> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <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>  <span class="keyword">const</span> <span class="keywordtype">char</span> *display;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordtype">char</span> buf[1024], *cp;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">struct </span>addrinfo hints, *ai, *aitop;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordtype">char</span> strport[NI_MAXSERV];</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordtype">int</span> gaierr, sock = 0;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <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>  display = getenv(<span class="stringliteral">"DISPLAY"</span>);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span> (!display) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  REMMINA_DEBUG(<span class="stringliteral">"display: %s"</span>, display);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <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>  <span class="keywordflow">if</span> (strncmp(display, <span class="stringliteral">"unix:"</span>, 5) == 0 || display[0] == <span class="charliteral">':'</span>) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="comment">/* Connect to the unix domain socket. */</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span> (sscanf(strrchr(display, <span class="charliteral">':'</span>) + 1, <span class="stringliteral">"%u"</span>, &display_number) != 1) {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  REMMINA_WARNING(<span class="stringliteral">"Could not parse display number from DISPLAY: %.100s"</span>, display);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  REMMINA_DEBUG(<span class="stringliteral">"display_number: %d"</span>, display_number);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="comment">/* Create a socket. */</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  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> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  REMMINA_DEBUG(<span class="stringliteral">"socket: %d"</span>, sock);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">if</span> (sock < 0)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <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>  <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">/* Connect to an inet socket. */</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  strncpy(buf, display, <span class="keyword">sizeof</span>(buf) - 1);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  cp = strchr(buf, <span class="charliteral">':'</span>);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">if</span> (!cp) {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  REMMINA_WARNING(<span class="stringliteral">"Could not find ':' in DISPLAY: %.100s"</span>, display);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  *cp = 0;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">if</span> (sscanf(cp + 1, <span class="stringliteral">"%u"</span>, &display_number) != 1) {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  REMMINA_WARNING(<span class="stringliteral">"Could not parse display number from DISPLAY: %.100s"</span>, display);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">/* Look up the host address */</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  memset(&hints, 0, <span class="keyword">sizeof</span>(hints));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  hints.ai_family = AF_INET;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  hints.ai_socktype = SOCK_STREAM;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  snprintf(strport, <span class="keyword">sizeof</span>(strport), <span class="stringliteral">"%u"</span>, 6000 + display_number);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span> ((gaierr = getaddrinfo(buf, strport, &hints, &aitop)) != 0) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  REMMINA_WARNING(<span class="stringliteral">"%.100s: unknown host. (%s)"</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>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">for</span> (ai = aitop; ai; ai = ai->ai_next) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">/* Create a socket. */</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">if</span> (sock == -1) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  REMMINA_WARNING(<span class="stringliteral">"socket: %.100s"</span>, strerror(errno));</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="comment">/* Connect it to the display. */</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">if</span> (connect(sock, ai->ai_addr, ai->ai_addrlen) == -1) {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  REMMINA_WARNING(<span class="stringliteral">"connect %.100s port %u: %.100s"</span>, buf, 6000 + display_number, strerror(errno));</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  close(sock);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="comment">/* Success */</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  freeaddrinfo(aitop);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span> (!ai) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  REMMINA_WARNING(<span class="stringliteral">"connect %.100s port %u: %.100s"</span>, buf, 6000 + display_number, strerror(errno));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <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> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  REMMINA_DEBUG(<span class="stringliteral">"sock: %d"</span>, sock);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> </div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <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> <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> {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  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>  gchar buf[0x200000];</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  gint sz = 0, ret = 0;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <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> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">if</span> (!temp_node-><a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  close(fd);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d closed."</span>, fd);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  REMMINA_WARNING(<span class="stringliteral">"channel does not exist."</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">if</span> ((revents & POLLIN) || (revents & POLLPRI)) {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  sz = read(fd, buf, <span class="keyword">sizeof</span>(buf));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">if</span> (sz > 0) {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  ret = ssh_channel_write(channel, buf, sz);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span> (ret != sz)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">//TODO: too verbose REMMINA_DEBUG("ssh_channel_write ret: %d sz: %d", ret, sz);</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sz < 0) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">// TODO: too verbose REMMINA_WARNING("fd bytes read: %d", sz);</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  REMMINA_WARNING(<span class="stringliteral">"Why the hell am I here?"</span>);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">if</span> (!temp_node-><a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  close(fd);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d closed."</span>, fd);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">if</span> ((revents & POLLHUP) || (revents & POLLNVAL) || (revents & POLLERR)) {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  REMMINA_DEBUG(<span class="stringliteral">"Closing channel."</span>);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  ssh_channel_close(channel);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  ret = -1;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <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> <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> {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  (void)session;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  (void)is_stderr;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <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>  <span class="comment">// in this function.</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  (void)userdata;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <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>  gint fd = temp_node-><a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  gint sz = 0;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  sz = write(fd, data, len);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="comment">// TODO: too verbose REMMINA_DEBUG("fd bytes written: %d", sz);</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">return</span> sz;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <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> <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> {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  (void)session;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <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> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <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> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span> (temp_node != NULL) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordtype">int</span> fd = temp_node-><a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span> (!temp_node-><a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <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>  ssh_event_remove_fd(shell-><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>  shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  close(fd);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  REMMINA_DEBUG(<span class="stringliteral">"fd %d closed."</span>, fd);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  }</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  REMMINA_DEBUG(<span class="stringliteral">"Channel closed."</span>);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <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> <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> {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  REMMINA_DEBUG(<span class="stringliteral">"Close all X11 channels"</span>);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> </div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <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>  <span class="keywordflow">while</span> (current != NULL) {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">if</span> (current-><a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a> == thread && !current-><a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  shutdown(current-><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>  close(current-><a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  REMMINA_DEBUG(<span class="stringliteral">"thread: %d - fd %d closed."</span>, thread, current-><a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">if</span> (current-><a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a> != current-><a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>) {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  shutdown(current-><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>  close(current-><a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  REMMINA_DEBUG(<span class="stringliteral">"thread: %d - fd %d closed."</span>, thread, current-><a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  current = current-><a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <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> <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> {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  (void)shost;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  (void)sport;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <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> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  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> </div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <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> </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(channel, sock, sock, FALSE, shell-><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> </div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  ssh_event_add_fd(shell-><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>  ssh_event_add_session(shell-><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> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  ssh_add_channel_callbacks(channel, &<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> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <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> }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> </div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> gchar *</div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a72a58e416c4eeb9d17eaf76360ebee42"> 618</a></span> <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> {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <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>  <span class="keywordflow">if</span> (<span class="keywordtype">id</span>[0] == <span class="charliteral">'/'</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>  <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">"%s/%s"</span>, g_get_home_dir(), <span class="keywordtype">id</span>);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> </div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> gchar *</div><div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#ab6d8bdad543b3caead2b2b0339484798"> 627</a></span> <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> {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  gchar *path;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  gint i;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> </div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <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>  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>  <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>  <span class="keywordflow">return</span> path;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  g_free(path);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> }</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <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> <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> {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keyword">const</span> gchar *err;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> </div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  err = ssh_get_error(ssh-><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>  ssh-><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> }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> </div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <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> <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> {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  va_list args;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  va_start(args, fmt);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  ssh-><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>  va_end(args);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> }</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> </div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <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> <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> {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  gint ret;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  gint n;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  gint i;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keyword">const</span> gchar *name, *instruction = NULL;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="comment">//gchar *prompt,*ptr;</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  ret = SSH_AUTH_ERROR;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">if</span> (ssh-><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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, <span class="stringliteral">"OTP code is empty"</span>);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  REMMINA_DEBUG(<span class="stringliteral">"OTP code is empty, returning"</span>);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <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>  }</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  REMMINA_DEBUG(<span class="stringliteral">"OTP code has been set to: %s"</span>, ssh-><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> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  ret = ssh_userauth_kbdint(ssh-><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>  <span class="keywordflow">while</span> (ret == SSH_AUTH_INFO) {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  name = ssh_userauth_kbdint_getname(ssh-><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>  <span class="keywordflow">if</span> (strlen(name) > 0)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH kbd-interactive name: %s"</span>, name);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH kbd-interactive name is empty"</span>);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  instruction = ssh_userauth_kbdint_getinstruction(ssh-><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>  <span class="keywordflow">if</span> (strlen(instruction) > 0)</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH kbd-interactive instruction: %s"</span>, instruction);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH kbd-interactive instruction is empty"</span>);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  n = ssh_userauth_kbdint_getnprompts(ssh-><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>  <span class="keywordflow">for</span> (i = 0; i < n; i++)</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  ssh_userauth_kbdint_setanswer(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, i, ssh-><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>  ret = ssh_userauth_kbdint(ssh-><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>  }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> </div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh_userauth_kbdint returned %d"</span>, ret);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH keyboard interactive. Another method is required. %d"</span>, ret);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="comment">//Authentication success</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH keyboard interactive. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">case</span> SSH_AUTH_INFO:</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticating aagin with SSH keyboard interactive??? %s"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with keyboard interactive, Requested to authenticate again. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="comment">//A serious error happened</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with TOTP/OTP/2FA. %s"</span>));</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate with TOTP/OTP/2FA. Error is %s"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  ssh-><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>  <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> }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> </div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <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> <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> {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  gint ret;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> </div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  REMMINA_DEBUG(<span class="stringliteral">"Password authentication"</span>);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> </div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  ret = SSH_AUTH_ERROR;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">if</span> (ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Already authenticated"</span>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <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>  }</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">if</span> (ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, <span class="stringliteral">"Password is null"</span>);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  REMMINA_DEBUG(<span class="stringliteral">"Password is null, returning"</span>);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <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>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> </div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  ret = ssh_userauth_password(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with SSH password returned: %d"</span>, ret);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH password, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH password. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with SSH password, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate with password. Error is %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with SSH password. %s"</span>));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <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>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  ssh-><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>  <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> }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> </div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <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> <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> {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  ssh_key key = NULL;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  ssh_key cert = NULL;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  gchar pubkey[132] = { 0 }; <span class="comment">// +".pub"</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  gint ret;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">if</span> (ssh-><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> </div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH certificate file: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"File for private SSH key: %s"</span>, ssh-><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>  <span class="keywordflow">if</span> (ssh-><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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="comment">/* First we import the private key */</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">if</span> (ssh_pki_import_privkey_file(ssh-><a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>, (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : <span class="stringliteral">""</span>),</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  NULL, NULL, &key) != SSH_OK) {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> == NULL || ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"No saved SSH password supplied. Asking user to enter it."</span>));</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <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>  }</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> </div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>));</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <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>  }</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  REMMINA_DEBUG (<span class="stringliteral">"Imported private SSH key file"</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="comment">/* First we import the certificate */</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  ret = ssh_pki_import_cert_file(ssh-><a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>, &cert );</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  REMMINA_DEBUG (<span class="stringliteral">"Certificate import returned: %d"</span>, ret);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"SSH certificate cannot be imported. %s"</span>));</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <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>  }</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  REMMINA_DEBUG (<span class="stringliteral">"certificate imported correctly"</span>);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <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>  ret = ssh_pki_copy_cert_to_privkey(cert, key);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  REMMINA_DEBUG (<span class="stringliteral">"Copying the certificate into a key returned: %d"</span>, ret);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"SSH certificate cannot be copied into the private SSH key. %s"</span>));</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  ssh_key_free(cert);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <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>  }</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  REMMINA_DEBUG (<span class="stringliteral">"%s certificate copied into the private SSH key"</span>, ssh-><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>  <span class="comment">/* We try to authenticate */</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  ret = ssh_userauth_try_publickey(ssh-><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>  <span class="keywordflow">if</span> (ret != SSH_AUTH_SUCCESS && ret != SSH_AUTH_AGAIN ) {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  REMMINA_DEBUG (<span class="stringliteral">"Trying to authenticate with the new key returned: %d"</span>, ret);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate using SSH certificate. %s"</span>));</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  ssh_key_free(key);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  ssh_key_free(cert);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <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>  }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  REMMINA_DEBUG (<span class="stringliteral">"Authentication with a certificate file works, we can authenticate"</span>);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  REMMINA_DEBUG (<span class="stringliteral">"lbssh >= 0.9.0 is required to authenticate with certificate file"</span>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keywordflow">if</span> (ssh-><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>  <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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>),</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  _(<span class="stringliteral">"SSH identity file not selected."</span>));</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <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>  }</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  g_snprintf(pubkey, <span class="keyword">sizeof</span>(pubkey), <span class="stringliteral">"%s.pub"</span>, ssh-><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> </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="comment">/*G_FILE_TEST_EXISTS*/</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <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>  ret = ssh_pki_import_pubkey_file(pubkey, &key);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Public SSH key cannot be imported. %s"</span>));</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  ssh_key_free(key);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <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>  }</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> </div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">if</span> (ssh_pki_import_privkey_file(ssh-><a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>, (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : <span class="stringliteral">""</span>),</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  NULL, NULL, &key) != SSH_OK) {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> == NULL || ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"No saved SSH password supplied. Asking user to enter it."</span>));</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <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>  }</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> </div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>));</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <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>  }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  }</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> </div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  ret = ssh_userauth_publickey(ssh-><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>  ssh_key_free(key);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  ssh_key_free(cert);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with public SSH key returned: %d"</span>, ret);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> </div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>));</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <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>  }</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <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> }</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <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> <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> {</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> </div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  gint ret;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  ret = ssh_userauth_publickey_auto(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, (ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-><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> </div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with public SSH key returned: %d"</span>, ret);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate automatically with public SSH key. %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate automatically with public SSH key. %s"</span>));</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <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>  }</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  ssh-><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>  <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> }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> </div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <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> <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> {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  gint ret;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  ret = ssh_userauth_agent(ssh-><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> </div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with SSH agent returned: %d"</span>, ret);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> </div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate automatically with SSH agent. %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate automatically with SSH agent. %s"</span>));</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <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>  }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  ssh-><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>  <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> </div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> }</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> </div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <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> <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> {</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  gint ret;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  ret = ssh_userauth_gssapi(ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authentication with SSH GSSAPI/Kerberos: %d"</span>, ret);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="comment">//You'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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Another method is required. %d"</span>, ret);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key. %s"</span>, ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="comment">//In nonblocking mode, you've got to call this again later.</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  REMMINA_DEBUG(<span class="stringliteral">"Authenticated with public SSH key, Requested to authenticate again. %s"</span>, ssh-><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>  ssh-><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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cannot authenticate with SSH GSSAPI/Kerberos. %s"</span>, ssh-><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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not authenticate with SSH GSSAPI/Kerberos. %s"</span>));</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <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>  }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  ssh-><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>  <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> }</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> </div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</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="l01075"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#aad84c6609cb431d48121ae5e0902441b"> 1075</a></span> <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> {</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  gint method;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <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> </div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <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> <span class="comment"> * a new session from existing one */</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="comment">/* TODO: Add error checking</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <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> <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> <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> <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> <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> <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> <span class="comment"> */</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="keywordflow">if</span> (ssh_session_is_known_server(ssh-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">if</span> (ssh_is_server_known(ssh-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(ssh, _(<span class="stringliteral">"The public SSH key changed!"</span>));</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <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>  }</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">if</span> (password) {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">if</span> (password != ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="keywordflow">if</span> (password != ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>) g_free(ssh-><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>  ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> </div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  method = ssh_userauth_list(ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Methods supported by server: %s%s%s%s%s%s%s"</span>,</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  (method & SSH_AUTH_METHOD_NONE) ? <span class="stringliteral">"SSH_AUTH_METHOD_NONE "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  (method & SSH_AUTH_METHOD_UNKNOWN) ? <span class="stringliteral">"SSH_AUTH_METHOD_UNKNOWN "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  (method & SSH_AUTH_METHOD_PASSWORD) ? <span class="stringliteral">"SSH_AUTH_METHOD_PASSWORD "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  (method & SSH_AUTH_METHOD_PUBLICKEY) ? <span class="stringliteral">"SSH_AUTH_METHOD_PUBLICKEY "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  (method & SSH_AUTH_METHOD_HOSTBASED) ? <span class="stringliteral">"SSH_AUTH_METHOD_HOSTBASED "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  (method & SSH_AUTH_METHOD_INTERACTIVE) ? <span class="stringliteral">"SSH_AUTH_METHOD_INTERACTIVE "</span> : <span class="stringliteral">""</span>,</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  (method & SSH_AUTH_METHOD_GSSAPI_MIC) ? <span class="stringliteral">"SSH_AUTH_METHOD_GSSAPI_MIC "</span> : <span class="stringliteral">""</span></div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  );</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="keywordflow">switch</span> (ssh-><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>  <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>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_PASSWORD (%d)"</span>, ssh-><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>  <span class="keywordflow">if</span> (ssh-><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>  <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>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_PASSWORD) {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH using remmina_ssh_auth_password"</span>);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  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>  }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">if</span> (!ssh-><a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> && (method & SSH_AUTH_METHOD_INTERACTIVE)) {</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH using remmina_ssh_auth_interactive after password has failed"</span>);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  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>  }</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  REMMINA_DEBUG(<span class="stringliteral">"Host-based authentication method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  REMMINA_DEBUG(<span class="stringliteral">"User-based authentication method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  }</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with SSH password. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH using remmina_ssh_auth_interactive"</span>);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_INTERACTIVE) {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  REMMINA_DEBUG(<span class="stringliteral">"Host-based authentication method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  REMMINA_DEBUG(<span class="stringliteral">"User-based authentication method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  }</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with keyboard-interactive. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> </div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_PUBLICKEY (%d)"</span>, ssh-><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>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_PUBLICKEY) {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  REMMINA_DEBUG(<span class="stringliteral">"Host based auth method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  }</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  }</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="comment">// The real error here should be: "The SSH server %s:%d does not support public key authentication"</span></div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with public SSH key. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> </div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_AGENT (%d)"</span>, ssh-><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>  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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  REMMINA_DEBUG(<span class="stringliteral">"Host based auth method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  }</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> </div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_AUTO_PUBLICKEY (%d)"</span>, ssh-><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>  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>  <span class="comment">/* ssh_agent or none */</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_PUBLICKEY) {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  REMMINA_DEBUG(<span class="stringliteral">"Host based auth method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  }</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  }</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="comment">// The real error here should be: "The SSH server %s:%d does not support public key authentication"</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with automatic public SSH key. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="preprocessor">#if 0</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <span class="comment">/* Not yet supported by libssh */</span></div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  <span class="keywordflow">case</span> SSH_AUTH_HOSTBASED:</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_HOSTBASED)</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="comment">//return remmina_ssh_auth_hostbased;</span></div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_AUTH_GSSAPI (%d)"</span>, ssh-><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>  <span class="keywordflow">if</span> (method & SSH_AUTH_METHOD_GSSAPI_MIC) {</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  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>  <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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-><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>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  REMMINA_DEBUG(<span class="stringliteral">"Host based auth method not implemented: %d"</span>, ssh-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  ssh-><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>  <span class="comment">//REMMINA_DEBUG("Interactive auth method not implemented: %d", ssh->auth);</span></div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  }</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  }</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  <span class="comment">// The real error here should be: "The SSH server %s:%d does not support SSH GSSAPI/Kerberos authentication"</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">"Could not authenticate with SSH GSSAPI/Kerberos. %s"</span>), <span class="stringliteral">""</span>);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> </div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  REMMINA_DEBUG(<span class="stringliteral">"User auth method not supported: %d"</span>, ssh-><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>  <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>  }</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <span class="comment">// We come here after a "break". ssh->error should be already set</span></div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <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> }</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> </div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</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="l01367"></a><span class="lineno"> 1367</span> <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> {</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  gchar *keyname;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  gchar *pwdfkey = NULL;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  gchar *message;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  gchar *current_pwd;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  gchar *current_user;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  <span class="keyword">const</span> gchar *instruction = NULL;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  gint ret;</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  <span class="keywordtype">size_t</span> len;</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  guchar *pubkey;</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  ssh_key server_pubkey;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  gboolean disablepasswordstoring;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  gboolean save_password;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  gint attempt;</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> </div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  <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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  <span class="comment">/* TODO: Add error checking</span></div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <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> <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> <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> <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> <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> <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> <span class="comment"> */</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  ret = ssh_session_is_known_server(ssh-><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>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_OK:</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  <span class="keywordflow">break</span>; <span class="comment">/* ok */</span></div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> </div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <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>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_CHANGED:</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_OTHER:</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_UNKNOWN:</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_NOT_FOUND:</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  ret = ssh_is_server_known(ssh-><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>  <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  <span class="keywordflow">case</span> SSH_SERVER_KNOWN_OK:</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  <span class="keywordflow">break</span>; <span class="comment">/* ok */</span></div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="comment">/* fallback to SSH_SERVER_NOT_KNOWN behavior */</span></div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <span class="keywordflow">case</span> SSH_SERVER_KNOWN_CHANGED:</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  <span class="keywordflow">case</span> SSH_SERVER_FOUND_OTHER:</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <span class="keywordflow">case</span> SSH_SERVER_NOT_KNOWN:</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  <span class="keywordflow">case</span> SSH_SERVER_FILE_NOT_FOUND:</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 8, 6)</span></div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  <span class="keywordflow">if</span> (ssh_get_server_publickey(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, &server_pubkey) != SSH_OK) {</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not fetch the server\'s public SSH key. %s"</span>));</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh_get_server_publickey() has failed"</span>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  <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>  }</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <span class="keywordflow">if</span> (ssh_get_publickey(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, &server_pubkey) != SSH_OK) {</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not fetch public SSH key. %s"</span>));</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh_get_publickey() has failed"</span>);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  <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>  }</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  <span class="keywordflow">if</span> (ssh_get_publickey_hash(server_pubkey, SSH_PUBLICKEY_HASH_MD5, &pubkey, &len) != 0) {</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  ssh_key_free(server_pubkey);</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not fetch checksum of the public SSH key. %s"</span>));</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh_get_publickey_hash() has failed"</span>);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  <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>  }</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  ssh_key_free(server_pubkey);</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  keyname = ssh_get_hexa(pubkey, len);</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span> </div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  <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> <span class="preprocessor">#else</span></div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  <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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  message = g_strdup_printf(<span class="stringliteral">"%s\n%s\n\n%s"</span>,</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  _(<span class="stringliteral">"The server is unknown. The public key fingerprint is:"</span>),</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  keyname,</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  _(<span class="stringliteral">"Do you trust the new public key?"</span>));</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  message = g_strdup_printf(<span class="stringliteral">"%s\n%s\n\n%s"</span>,</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  _(<span class="stringliteral">"Warning: The server has changed its public key. This means you are either under attack,\n"</span></div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  <span class="stringliteral">"or the administrator has changed the key. The new public key fingerprint is:"</span>),</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  keyname,</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  _(<span class="stringliteral">"Do you trust the new public key?"</span>));</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  }</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> </div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  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>  g_free(message);</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> </div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  ssh_string_free_char(keyname);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  ssh_clean_pubkey_hash(&pubkey);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  <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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  ssh_session_update_known_hosts(ssh-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  ssh_write_knownhost(ssh-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_ERROR:</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  <span class="keywordflow">case</span> SSH_SERVER_ERROR:</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not check list of known SSH hosts. %s"</span>));</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  REMMINA_DEBUG(<span class="stringliteral">"Could not check list of known SSH hosts"</span>);</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  <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>  }</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> </div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  <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> </div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  <span class="keywordflow">switch</span> (ssh-><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>  <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>  keyname = _(<span class="stringliteral">"SSH password"</span>);</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>  pwdfkey = ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"ssh_tunnel_password"</span> : <span class="stringliteral">"password"</span>;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  remmina_ssh_auth_type = REMMINA_SSH_AUTH_PASSWORD;</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  <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>  <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>  <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>  keyname = _(<span class="stringliteral">"Password for private SSH key"</span>);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  pwdfkey = ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"ssh_tunnel_passphrase"</span> : <span class="stringliteral">"ssh_passphrase"</span>;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  remmina_ssh_auth_type = REMMINA_SSH_AUTH_PKPASSPHRASE;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  <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>  keyname = _(<span class="stringliteral">"SSH Kerberos/GSSAPI"</span>);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  pwdfkey = ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"ssh_tunnel_kerberos_token"</span> : <span class="stringliteral">"ssh_kerberos_token"</span>;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  remmina_ssh_auth_type = REMMINA_SSH_AUTH_KRBTOKEN;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  <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>  instruction = _(<span class="stringliteral">"Enter TOTP/OTP/2FA code"</span>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  remmina_ssh_auth_type = REMMINA_SSH_AUTH_KBDINTERACTIVE;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <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>  }</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> </div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>  disablepasswordstoring = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">"disablepasswordstoring"</span>, FALSE);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> </div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span> </div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  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> </div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  <span class="comment">/* Try existing password/passphrase first */</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>  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>  REMMINA_DEBUG(<span class="stringliteral">"Returned %d at 1st attempt with the following message:"</span>, ret);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  REMMINA_DEBUG(<span class="stringliteral">"%s"</span>, ssh-><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> </div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  <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> <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> <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>  <span class="keywordflow">for</span> (attempt = 0;</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>  attempt < 2 && 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>  attempt++) {</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>  <span class="keywordflow">if</span> (ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Retrying auth because %s"</span>, ssh-><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> </div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  <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>  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>  (disablepasswordstoring ? 0 :</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  <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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? _(<span class="stringliteral">"SSH tunnel credentials"</span>) : _(<span class="stringliteral">"SSH credentials"</span>),</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  NULL,</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  <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>  NULL,</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>  _(<span class="stringliteral">"Password for private SSH key"</span>));</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  g_free(current_pwd);</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  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>  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>  <span class="keywordflow">if</span> (save_password)</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>  <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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  g_free(current_pwd);</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  <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>  }</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  } <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>  <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> <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>  REMMINA_DEBUG(<span class="stringliteral">"Showing panel for password\n"</span>);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  current_user = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"ssh_tunnel_username"</span> : <span class="stringliteral">"username"</span>));</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  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>  (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>  | <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>  | (!ssh-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? _(<span class="stringliteral">"SSH tunnel credentials"</span>) : _(<span class="stringliteral">"SSH credentials"</span>),</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  current_user,</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  current_pwd,</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  NULL,</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  NULL);</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  g_free(current_pwd);</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  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>  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>  <span class="keywordflow">if</span> (save_password)</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  <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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  <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> </div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <span class="keywordflow">if</span> (!ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> && !ssh-><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>  g_free(current_user);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  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>  <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">"username"</span>, current_user);</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  ssh-><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>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  ssh-><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>  g_free(current_user);</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <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>  }</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  g_free(current_user);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  g_free(current_pwd);</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  g_free(current_user);</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  <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>  }</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  } <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>  REMMINA_DEBUG(<span class="stringliteral">"Showing panel for keyboard interactive login\n"</span>);</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  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>  gp,</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>  0,</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  _(<span class="stringliteral">"Keyboard interactive login, TOTP/OTP/2FA"</span>),</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  NULL,</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>  NULL,</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>  NULL,</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>  instruction);</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  g_free(current_pwd);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>  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>  REMMINA_DEBUG(<span class="stringliteral">"OTP code is: %s"</span>, current_pwd);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>  ssh-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>  g_free(current_pwd);</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>  <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>  }</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>  g_print(<span class="stringliteral">"Unimplemented."</span>);</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  g_free(current_pwd);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>  <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>  }</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>  REMMINA_DEBUG(<span class="stringliteral">"Retrying authentication"</span>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  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>  REMMINA_DEBUG(<span class="stringliteral">"Authentication attempt n° %d returned %d with the following message:"</span>, attempt + 2, ret);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>  REMMINA_DEBUG(<span class="stringliteral">"%s"</span>, ssh-><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>  }</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> </div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>  g_free(current_pwd); current_pwd = NULL;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> </div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>  <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> <span class="comment"> * becomes REMMINA_SSH_AUTH_FATAL_ERROR */</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH Authentication failed"</span>);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  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>  }</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> }</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> </div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> <span class="keywordtype">void</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> 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> {</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  REMMINA_DEBUG(message);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> }</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> </div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span> gboolean</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> <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> {</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>  gint verbosity;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  gint rc;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  gchar *parsed_config;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> <span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>  socket_t sshsock;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  gint optval;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> </div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  ssh-><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> </div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  <span class="comment">/* Init & startup the SSH session */</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  REMMINA_DEBUG(<span class="stringliteral">"server=%s port=%d is_tunnel=%s tunnel_entrance_host=%s tunnel_entrance_port=%d"</span>,</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  ssh-><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>  ssh-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">"Yes"</span> : <span class="stringliteral">"No"</span>,</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, ssh-><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> </div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  ssh-><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> </div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  <span class="comment">/* Tunnel sanity checks */</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> && ssh-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(<span class="stringliteral">"Internal error in %s: is_tunnel and tunnel_entrance != NULL"</span>, __func__);</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  REMMINA_DEBUG(ssh-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  }</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  <span class="keywordflow">if</span> (!ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> && ssh-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(<span class="stringliteral">"Internal error in %s: is_tunnel == false and tunnel_entrance == NULL"</span>, __func__);</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>  REMMINA_DEBUG(ssh-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>  }</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> </div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>  <span class="comment">/* Set connection host/port */</span></div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>  <span class="keywordflow">if</span> (ssh-><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>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-><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>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PORT, &ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Setting SSH_OPTIONS_HOST to %s and SSH_OPTIONS_PORT to %d"</span>, ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-><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>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PORT, &ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Setting SSH_OPTIONS_HOST to %s and SSH_OPTIONS_PORT to %d"</span>, ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, ssh-><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>  }</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> </div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> && *ssh-><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>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_IDENTITY, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_IDENTITY is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_IDENTITY is not set, by default the files “identity”, “id_dsa” and “id_rsa” are used."</span>);</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  }</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span> </div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span> <span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_SSH_DIR, g_strdup_printf(<span class="stringliteral">"%s/.ssh"</span>, g_getenv(<span class="stringliteral">"SNAP_USER_COMMON"</span>)));</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>  ssh_callbacks_init(ssh-><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>  <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>  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>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>->log_function = remmina_ssh_log_callback;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>  <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>  ssh_set_log_userdata(ssh-><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>  }</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>->userdata = ssh;</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>  ssh_set_callbacks(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, ssh-><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> </div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  <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>  <span class="keywordflow">if</span> (g_strcmp0(ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, <span class="stringliteral">"127.0.0.1"</span>) == 0) {</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_HOST temporary set to the destination host as ssh->tunnel_entrance_host is 127.0.0.1,"</span>);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-><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>  }</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</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#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>) {</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>  <span class="keywordflow">if</span> (ssh_options_parse_config(ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh_config have been correctly parsed"</span>);</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>  REMMINA_DEBUG(<span class="stringliteral">"Cannot parse ssh_config: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>  <span class="keywordflow">if</span> (g_strcmp0(ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, <span class="stringliteral">"127.0.0.1"</span>) == 0) {</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>  REMMINA_DEBUG(<span class="stringliteral">"Setting SSH_OPTIONS_HOST to ssh->tunnel_entrance_host is 127.0.0.1,"</span>);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-><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>  }</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>  <span class="keywordflow">if</span> (!ssh-><a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> || *ssh-><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>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_USER, &parsed_config);</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>  <span class="keywordflow">if</span> (ssh-><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>  g_free(ssh-><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>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_USER returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>  }</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>  ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_USER, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_USER is now %s"</span>, ssh-><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> </div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>  <span class="comment">/* SSH_OPTIONS_PROXYCOMMAND */</span></div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PROXYCOMMAND, &parsed_config);</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_PROXYCOMMAND returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PROXYCOMMAND, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_PROXYCOMMAND is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_PROXYCOMMAND does not have a valid value. %s"</span>, ssh-><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> </div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  <span class="comment">/* SSH_OPTIONS_HOSTKEYS */</span></div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOSTKEYS, &parsed_config);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_HOSTKEYS returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOSTKEYS, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_HOSTKEYS is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_HOSTKEYS does not have a valid value. %s"</span>, ssh-><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> </div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>  <span class="comment">/* SSH_OPTIONS_KEY_EXCHANGE */</span></div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_KEY_EXCHANGE, &parsed_config);</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_KEY_EXCHANGE returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_KEY_EXCHANGE, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_KEY_EXCHANGE is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_KEY_EXCHANGE does not have a valid value. %s"</span>, ssh-><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> </div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>  <span class="comment">/* SSH_OPTIONS_CIPHERS_C_S */</span></div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_CIPHERS_C_S, &parsed_config);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_CIPHERS_C_S returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_CIPHERS_C_S, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_CIPHERS_C_S has been set to %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_CIPHERS_C_S does not have a valid value. %s"</span>, ssh-><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>  <span class="comment">/* SSH_OPTIONS_STRICTHOSTKEYCHECK */</span></div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_STRICTHOSTKEYCHECK, &parsed_config);</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_STRICTHOSTKEYCHECK returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_STRICTHOSTKEYCHECK, &ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_STRICTHOSTKEYCHECK is now %d"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_STRICTHOSTKEYCHECK does not have a valid value. %d"</span>, ssh-><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>  <span class="comment">/* SSH_OPTIONS_COMPRESSION */</span></div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>  rc = ssh_options_get(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_COMPRESSION, &parsed_config);</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>  ssh-><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>  ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>  REMMINA_DEBUG(<span class="stringliteral">"Parsing ssh_config for SSH_OPTIONS_COMPRESSION returned an error: %s"</span>, ssh_get_error(ssh-><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>  }</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  rc = ssh_options_set(ssh-><a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_COMPRESSION, ssh-><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>  <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_COMPRESSION is now %s"</span>, ssh-><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>  REMMINA_DEBUG(<span class="stringliteral">"SSH_OPTIONS_COMPRESSION does not have a valid value. %s"</span>, ssh-><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> </div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>  <span class="keywordflow">if</span> (ssh_connect(ssh-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">"Could not start SSH session. %s"</span>));</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>  }</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> </div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> <span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>  <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> <span class="comment"> * when we loss the tunnel */</span></div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>  sshsock = ssh_get_fd(ssh-><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>  <span class="keywordflow">if</span> (sshsock >= 0) {</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>  optval = 1;</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>  <span class="keywordflow">if</span> (setsockopt(sshsock, SOL_SOCKET, SO_KEEPALIVE, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP KeepAlive not set"</span>);</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP KeepAlive enabled"</span>);</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span> </div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> <span class="preprocessor">#ifdef TCP_KEEPIDLE</span></div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  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>  <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPIDLE, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPIDLE not set"</span>);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPIDLE set to %i"</span>, optval);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span> </div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span> <span class="preprocessor">#ifdef TCP_KEEPCNT</span></div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  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>  <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPCNT, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPCNT not set"</span>);</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPCNT set to %i"</span>, optval);</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span> </div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> <span class="preprocessor">#ifdef TCP_KEEPINTVL</span></div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>  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>  <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPINTVL, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPINTVL not set"</span>);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_KEEPINTVL set to %i"</span>, optval);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> </div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span> <span class="preprocessor">#ifdef TCP_USER_TIMEOUT</span></div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>  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>  <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_USER_TIMEOUT, &optval, <span class="keyword">sizeof</span>(optval)) < 0)</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_USER_TIMEOUT not set"</span>);</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>  REMMINA_DEBUG(<span class="stringliteral">"TCP_USER_TIMEOUT set to %i"</span>, optval);</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> </div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>  }</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span> </div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>  <span class="comment">/* Try the "none" authentication */</span></div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>  <span class="keywordflow">if</span> (ssh_userauth_none(ssh-><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>  ssh-><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>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> }</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> </div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span> gboolean</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span> <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> {</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>  <span class="keyword">const</span> gchar *username;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>  <span class="keyword">const</span> gchar *privatekey;</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>  <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>  gchar *s;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span> </div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>  ssh-><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>  ssh-><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>  ssh-><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>  ssh-><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>  ssh-><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>  ssh-><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>  pthread_mutex_init(&ssh-><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> </div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>  ssh-><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>  ssh-><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> </div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>  username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">"ssh_tunnel_username"</span> : <span class="stringliteral">"username"</span>);</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>  privatekey = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">"ssh_tunnel_privatekey"</span> : <span class="stringliteral">"ssh_privatekey"</span>);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>  ssh-><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">"ssh_tunnel_certfile"</span> : <span class="stringliteral">"ssh_certfile"</span>));</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> </div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>  <span class="comment">/* The ssh->server and ssh->port values */</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>  <span class="keywordflow">if</span> (is_tunnel) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>  REMMINA_DEBUG(<span class="stringliteral">"We are initializing an SSH tunnel session"</span>);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>  server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"ssh_tunnel_server"</span>);</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>  <span class="keywordflow">if</span> (server == NULL || server[0] == 0) {</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>  <span class="comment">// ssh_tunnel_server empty or invalid, we are opening a tunnel, it means that "Same server at port 22" has been selected</span></div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>  server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>);</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>  <span class="keywordflow">if</span> (server == NULL || server[0] == 0)</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>  server = <span class="stringliteral">"localhost"</span>;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &ssh-><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>  ssh-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &ssh-><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>  }</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  REMMINA_DEBUG(<span class="stringliteral">"server:port = %s, server = %s, port = %d"</span>, server, ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  REMMINA_DEBUG(<span class="stringliteral">"We are initializing an SSH session"</span>);</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>);</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  <span class="keywordflow">if</span> (server == NULL || server[0] == 0)</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>  server = <span class="stringliteral">"localhost"</span>;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"server:port = %s, server = %s, port = %d"</span>, server, ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-><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>  }</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> </div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>  g_free(ssh-><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>  <span class="comment">// ???</span></div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  REMMINA_DEBUG(<span class="stringliteral">"Calling remmina_public_get_server_port"</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>  <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 0, &ssh-><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>  }</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span> </div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>  REMMINA_DEBUG(<span class="stringliteral">"Initialized SSH struct from file with ssh->server = %s and SSH->port = %d"</span>, ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-><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> </div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>  ssh-><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>  ssh-><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>  ssh-><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">"ssh_tunnel_auth"</span> : <span class="stringliteral">"ssh_auth"</span>, 0);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>  ssh-><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">"ssh_charset"</span>));</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  ssh-><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">"ssh_tunnel_kex_algorithms"</span> : <span class="stringliteral">"ssh_kex_algorithms"</span>));</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>  ssh-><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">"ssh_tunnel_ciphers"</span> : <span class="stringliteral">"ssh_ciphers"</span>));</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  ssh-><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">"ssh_tunnel_hostkeytypes"</span> : <span class="stringliteral">"ssh_hostkeytypes"</span>));</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>  ssh-><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">"ssh_tunnel_proxycommand"</span> : <span class="stringliteral">"ssh_proxycommand"</span>));</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  ssh-><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">"ssh_tunnel_stricthostkeycheck"</span> : <span class="stringliteral">"ssh_stricthostkeycheck"</span>, 0);</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>  gint c = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, is_tunnel ? <span class="stringliteral">"ssh_tunnel_compression"</span> : <span class="stringliteral">"ssh_compression"</span>, 0);</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = (c == 1) ? <span class="stringliteral">"yes"</span> : <span class="stringliteral">"no"</span>;</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span> </div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>  REMMINA_DEBUG(<span class="stringliteral">"ssh->user: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->password: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->auth: %d"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->charset: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->kex_algorithms: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->ciphers: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->hostkeytypes: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->proxycommand: %s"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->stricthostkeycheck: %d"</span>, ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->compression: %s"</span>, ssh-><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> </div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>  <span class="comment">/* Public/Private keys */</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>  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>  <span class="keywordflow">if</span> (s) {</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"ssh->privkeyfile: %s"</span>, ssh-><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>  g_free(s);</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>  ssh-><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>  }</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> </div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span> }</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span> </div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span> <span class="keyword">static</span> gboolean</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span> 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> {</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  ssh-><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>  ssh-><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>  ssh-><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>  pthread_mutex_init(&ssh-><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> </div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(ssh_src-><a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> ? ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> = g_strdup(ssh_src-><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>  ssh-><a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a> = ssh_src-><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> </div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span> }</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span> </div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span> gchar *</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span> <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> {</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>  gchar *to = NULL;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span> </div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> && from)</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>  to = g_convert(from, -1, <span class="stringliteral">"UTF-8"</span>, ssh-><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>  <span class="keywordflow">if</span> (!to) to = g_strdup(from);</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>  <span class="keywordflow">return</span> to;</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span> }</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> </div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span> gchar *</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span> <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> {</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>  gchar *to = NULL;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span> </div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>  <span class="keywordflow">if</span> (ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> && from)</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>  to = g_convert(from, -1, ssh-><a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>, <span class="stringliteral">"UTF-8"</span>, NULL, NULL, NULL);</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>  <span class="keywordflow">if</span> (!to) to = g_strdup(from);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>  <span class="keywordflow">return</span> to;</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> }</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span> </div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> <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> {</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <span class="keywordflow">if</span> (ssh-><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>  REMMINA_DEBUG(<span class="stringliteral">"Disconnecting SSH session"</span>);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  ssh_disconnect(ssh-><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>  ssh_free(ssh-><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>  ssh-><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>  }</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  g_free(ssh-><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>  pthread_mutex_destroy(&ssh-><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>  g_free(ssh);</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> }</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> </div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span> <span class="comment">* SSH Tunnel *</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span> <span class="keyword">struct </span>_RemminaSSHTunnelBuffer {</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>  gchar * data;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>  gchar * ptr;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  ssize_t len;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span> };</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span> </div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> <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> remmina_ssh_tunnel_buffer_new(ssize_t len)</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> {</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>  <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> </div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  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>  buffer->data = (gchar *)g_malloc(len);</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>  buffer->ptr = buffer->data;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  buffer->len = len;</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>  <span class="keywordflow">return</span> buffer;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> }</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span> </div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> 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> {</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>  <span class="keywordflow">if</span> (buffer) {</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>  g_free(buffer->data);</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>  g_free(buffer);</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>  }</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span> }</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span> </div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> <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> <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> {</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  <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> </div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  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> </div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  <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> </div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  <span class="keywordflow">return</span> tunnel;</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> }</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> </div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> 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> {</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>  <span class="keywordflow">for</span> (i = 0; i < tunnel-><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>  close(tunnel-><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>  remmina_ssh_tunnel_buffer_free(tunnel-><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>  ssh_channel_close(tunnel-><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>  ssh_channel_send_eof(tunnel-><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>  ssh_channel_free(tunnel-><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>  }</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span> </div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>  g_free(tunnel-><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>  tunnel-><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>  g_free(tunnel-><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>  tunnel-><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>  g_free(tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>  tunnel-><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>  tunnel-><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> }</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span> </div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> 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> {</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>  ssh_channel_close(tunnel-><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>  ssh_channel_send_eof(tunnel-><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>  ssh_channel_free(tunnel-><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>  close(tunnel-><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>  remmina_ssh_tunnel_buffer_free(tunnel-><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>  tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n] = tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[n] = tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[n] = tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[tunnel-><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> }</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> </div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span> <span class="comment">/* Register the new channel/socket pair */</span></div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span> 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> {</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>  gint flags;</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>  gint i;</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> </div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  i = tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> > tunnel-><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>  <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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a> = (ssh_channel *)g_realloc(tunnel-><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>  <span class="keyword">sizeof</span>(ssh_channel) * (tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a> = (gint *)g_realloc(tunnel-><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>  <span class="keyword">sizeof</span>(gint) * tunnel-><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>  tunnel-><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-><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>  <span class="keyword">sizeof</span>(<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *) * tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a> = tunnel-><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> </div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a> = (ssh_channel *)g_realloc(tunnel-><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>  <span class="keyword">sizeof</span>(ssh_channel) * (tunnel-><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>  }</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>  flags = fcntl(sock, F_GETFL, 0);</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>  fcntl(sock, F_SETFL, flags | O_NONBLOCK);</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span> }</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span> </div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span> <span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span> 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> {</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  gint sock, sock_flags;</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span> </div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  sock_flags = fcntl(tunnel-><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>  <span class="keywordflow">if</span> (blocking)</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  sock_flags &= ~O_NONBLOCK;</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>  sock_flags |= O_NONBLOCK;</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>  fcntl(tunnel-><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> </div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  <span class="comment">/* Accept a local connection */</span></div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>  sock = accept(tunnel-><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>  <span class="keywordflow">if</span> (sock < 0) {</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>  g_free(REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>  REMMINA_SSH(tunnel)->error = g_strdup(<span class="stringliteral">"Local socket not accepted"</span>);</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  }</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>  }</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span> </div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> }</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span> </div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span> <span class="keyword">static</span> ssh_channel</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span> 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> {</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>  ssh_channel channel = NULL;</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span> </div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>  channel = ssh_channel_new(tunnel-><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>  <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not create channel. %s"</span>));</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>  }</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span> </div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>  <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>  REMMINA_DEBUG(<span class="stringliteral">"SSH tunnel destination is %s"</span>, tunnel-><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>  <span class="keywordflow">if</span> (ssh_channel_open_forward(channel, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>, <span class="stringliteral">"127.0.0.1"</span>, 0) != SSH_OK) {</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>  ssh_channel_close(channel);</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>  ssh_channel_free(channel);</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not connect to SSH tunnel. %s"</span>));</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>  }</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span> </div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>  <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> }</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span> </div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span> <span class="keyword">static</span> gpointer</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span> remmina_ssh_tunnel_main_thread_proc(gpointer data)</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span> {</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>  <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>  gchar *ptr;</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>  ssize_t len = 0, lenw = 0;</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>  fd_set <span class="keyword">set</span>;</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>  <span class="keyword">struct </span>timeval timeout;</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>  g_autoptr(GDateTime) t1 = NULL;</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>  g_autoptr(GDateTime) t2 = NULL;</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>  GTimeSpan diff; <span class="comment">// microseconds</span></div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>  ssh_channel channel = NULL;</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  gboolean first = TRUE;</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>  gboolean disconnected;</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>  gint sock;</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>  gint maxfd;</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>  gint i;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>  gint ret;</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>  <span class="keyword">struct </span>sockaddr_in sin;</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span> </div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>  t1 = t2 = g_date_time_new_now_local();</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span> </div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>  <span class="keywordflow">switch</span> (tunnel-><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>  <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>  sock = remmina_ssh_tunnel_accept_local_connection(tunnel, TRUE);</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>  <span class="keywordflow">if</span> (sock < 0) {</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  <span class="keywordflow">if</span> (tunnel)</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>  }</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span> </div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  channel = remmina_ssh_tunnel_create_forward_channel(tunnel);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>  <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>  close(sock);</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>  }</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> </div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>  remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span> </div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>  <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>  <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>  <span class="keywordflow">for</span> (i = 10; i <= MAX_X_DISPLAY_NUMBER; i++) {</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>  <span class="keywordflow">if</span> (ssh_channel_listen_forward(REMMINA_SSH(tunnel)->session, (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">"localhost"</span> : NULL), 6000 + i, NULL)) {</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>  tunnel-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  }</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>  <span class="keywordflow">if</span> (ssh_forward_listen(REMMINA_SSH(tunnel)->session, (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">"localhost"</span> : NULL), 6000 + i, NULL)) {</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>  tunnel-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  }</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  }</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> < 1) {</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not request port forwarding. %s"</span>));</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  }</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span> </div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> &&</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>  !(*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>)(tunnel, tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>  }</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> </div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span> </div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>  <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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>  <span class="keywordflow">if</span> (ssh_channel_listen_forward(REMMINA_SSH(tunnel)->session, NULL, tunnel-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not request port forwarding. %s"</span>));</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>  }</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>  <span class="keywordflow">if</span> (ssh_forward_listen(REMMINA_SSH(tunnel)->session, NULL, tunnel-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not request port forwarding. %s"</span>));</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  }</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span> </div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> &&</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>  !(*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>)(tunnel, tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>  }</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span> </div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  }</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span> </div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>  tunnel-><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>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a> = g_malloc(tunnel-><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> </div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>  <span class="comment">/* Start the tunnel data transmission */</span></div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>  <span class="keywordflow">while</span> (tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  tunnel-><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>  <span class="keywordflow">if</span> (first) {</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>  first = FALSE;</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>  channel = ssh_channel_accept_forward(REMMINA_SSH(tunnel)->session, 15000, &tunnel-><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>  <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"The server did not respond."</span>));</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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>  tunnel-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>  }</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a>)(tunnel, tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  <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> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>  ssh_channel_cancel_forward(REMMINA_SSH(tunnel)->session, NULL, tunnel-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>  ssh_forward_cancel(REMMINA_SSH(tunnel)->session, NULL, tunnel-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>  }</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tunnel-><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>  <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> <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>  t1 = g_date_time_new_now_local();</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>  diff = g_date_time_difference(t1, t2) * 10000000</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  + g_date_time_difference(t1, t2) / 100000;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  <span class="keywordflow">if</span> (diff > 1) {</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  REMMINA_DEBUG(<span class="stringliteral">"Polling tunnel channels"</span>);</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  channel = ssh_channel_accept_forward(REMMINA_SSH(tunnel)->session, 0, &tunnel-><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>  <span class="keywordflow">if</span> (channel == NULL)</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  t2 = t1;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  }</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>  g_date_time_unref(t1);</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>  g_date_time_unref(t2);</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>  }</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span> </div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  <span class="keywordflow">if</span> (channel) {</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  <span class="keywordflow">if</span> (tunnel-><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>  sin.sin_family = AF_INET;</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  sin.sin_port = htons(tunnel-><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>  sin.sin_addr.s_addr = inet_addr(<span class="stringliteral">"127.0.0.1"</span>);</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  sock = socket(AF_INET, SOCK_STREAM, 0);</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  <span class="keywordflow">if</span> (connect(sock, (<span class="keyword">struct</span> sockaddr *)&sin, <span class="keyword">sizeof</span>(sin)) < 0) {</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>  <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>  _(<span class="stringliteral">"Cannot connect to local port %i."</span>), tunnel-><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>  close(sock);</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>  sock = -1;</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  }</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  sock = <a class="code" href="remmina__public_8c.html#a52656bbe00a83068f36337f449bdc767">remmina_public_open_xdisplay</a>(tunnel-><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>  <span class="keywordflow">if</span> (sock >= 0)</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>  <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>  ssh_channel_close(channel);</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>  ssh_channel_free(channel);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  }</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  channel = NULL;</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  }</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>  }</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span> </div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> <= 0)</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  <span class="comment">/* No more connections. We should quit */</span></div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span> </div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>  timeout.tv_sec = 0;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>  timeout.tv_usec = 200000;</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span> </div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  FD_ZERO(&<span class="keyword">set</span>);</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>  maxfd = 0;</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  <span class="keywordflow">for</span> (i = 0; i < tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i] > maxfd)</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  maxfd = tunnel-><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>  FD_SET(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], &<span class="keyword">set</span>);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  }</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> </div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  ret = ssh_select(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>, maxfd + 1, &<span class="keyword">set</span>, &timeout);</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  <span class="keywordflow">if</span> (!tunnel-><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>  <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>  <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> </div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>  i = 0;</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  <span class="keywordflow">while</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> && i < tunnel->num_channels) {</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  disconnected = FALSE;</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  <span class="keywordflow">if</span> (FD_ISSET(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], &<span class="keyword">set</span>)) {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  <span class="keywordflow">while</span> (!disconnected &&</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>  (len = read(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a>)) > 0) {</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>  <span class="keywordflow">for</span> (ptr = tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>, lenw = 0; len > 0; len -= lenw, ptr += lenw) {</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  lenw = ssh_channel_write(tunnel-><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>  <span class="keywordflow">if</span> (lenw <= 0) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  disconnected = TRUE;</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not write to SSH channel. %s"</span>));</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  }</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>  }</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  <span class="keywordflow">if</span> (len == 0) {</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not read from tunnel listening socket. %s"</span>));</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  disconnected = TRUE;</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  }</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  }</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  REMMINA_DEBUG(<span class="stringliteral">"tunnel disconnected because %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  remmina_ssh_tunnel_remove_channel(tunnel, i);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  }</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  i++;</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  }</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  <span class="keywordflow">if</span> (!tunnel-><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> </div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  i = 0;</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  <span class="keywordflow">while</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> && i < tunnel->num_channels) {</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  disconnected = FALSE;</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  <span class="keywordflow">if</span> (!tunnel-><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>  len = ssh_channel_poll(tunnel-><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>  <span class="keywordflow">if</span> (len == SSH_ERROR || len == SSH_EOF) {</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not poll SSH channel. %s"</span>));</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  disconnected = TRUE;</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len > 0) {</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  tunnel-><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>  len = ssh_channel_read_nonblocking(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i], tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->data, len, 0);</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  <span class="keywordflow">if</span> (len <= 0) {</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not read SSH channel in a non-blocking way. %s"</span>));</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  disconnected = TRUE;</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len = len;</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  }</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  }</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>  }</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span> </div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>  <span class="keywordflow">if</span> (!disconnected && tunnel-><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>  <span class="keywordflow">for</span> (lenw = 0; tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len > 0;</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len -= lenw, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->ptr += lenw) {</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>  lenw = write(tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->ptr, tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len);</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>  <span class="keywordflow">if</span> (lenw == -1 && errno == EAGAIN && tunnel-><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>  <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> <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> <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>  <span class="keywordflow">if</span> (lenw <= 0) {</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not send data to tunnel listening socket. %s"</span>));</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  disconnected = TRUE;</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  }</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  }</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]->len <= 0) {</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  remmina_ssh_tunnel_buffer_free(tunnel-><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>  tunnel-><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>  }</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  }</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span> </div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>  REMMINA_DEBUG(<span class="stringliteral">"Connection to SSH tunnel dropped. %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>  remmina_ssh_tunnel_remove_channel(tunnel, i);</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>  }</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>  i++;</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>  }</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>  sock = remmina_ssh_tunnel_accept_local_connection(tunnel, FALSE);</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  <span class="keywordflow">if</span> (sock > 0) {</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  channel = remmina_ssh_tunnel_create_forward_channel(tunnel);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>  <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>  REMMINA_DEBUG(<span class="stringliteral">"Could not open new SSH connection. %s"</span>, REMMINA_SSH(tunnel)->error);</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>  close(sock);</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  <span class="comment">/* Leave thread loop */</span></div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>  tunnel-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  }</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  }</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>  }</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> </div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  remmina_ssh_tunnel_close_all_channels(tunnel);</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span> </div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  tunnel-><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> </div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  <span class="comment">/* Notify tunnel owner of disconnection */</span></div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-><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> </div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span> }</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span> </div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span> <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> {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  <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> </div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  <span class="comment">/* Ask tunnel owner to destroy tunnel object */</span></div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  <span class="keywordflow">if</span> (tunnel-><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>  (*tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a>)(tunnel, tunnel-><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> </div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span> }</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span> </div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span> <span class="keyword">static</span> gpointer</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span> remmina_ssh_tunnel_main_thread(gpointer data)</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span> {</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  <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> </div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span> </div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  remmina_ssh_tunnel_main_thread_proc(data);</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> < 0 || tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> == 0 || !tunnel-><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>  }</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  tunnel-><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> </div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  <span class="comment">/* Do after tunnel thread cleanup */</span></div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  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> </div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span> }</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span> </div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span> </div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span> <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> {</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> >= 0) {</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  close(tunnel-><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>  tunnel-><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>  }</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span> }</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span> </div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span> gboolean</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span> <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> {</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  gint sock;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  gint sockopt = 1;</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  <span class="keyword">struct </span>sockaddr_in sin;</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span> </div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  tunnel-><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>  tunnel-><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>  tunnel-><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>  <span class="keywordflow">if</span> (tunnel-><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>  REMMINA_SSH(tunnel)->error = g_strdup(_(<span class="stringliteral">"Assign a destination port."</span>));</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  }</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span> </div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  <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>  sock = socket(AF_INET, SOCK_STREAM, 0);</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>  <span class="keywordflow">if</span> (sock < 0) {</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  REMMINA_SSH(tunnel)->error = g_strdup(_(<span class="stringliteral">"Could not create socket."</span>));</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  }</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &sockopt, <span class="keyword">sizeof</span>(sockopt));</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span> </div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  sin.sin_family = AF_INET;</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  sin.sin_port = htons(local_port);</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  sin.sin_addr.s_addr = inet_addr(<span class="stringliteral">"127.0.0.1"</span>);</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span> </div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  <span class="keywordflow">if</span> (bind(sock, (<span class="keyword">struct</span> sockaddr *)&sin, <span class="keyword">sizeof</span>(sin))) {</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>  REMMINA_SSH(tunnel)->error = g_strdup(_(<span class="stringliteral">"Could not bind server socket to local port."</span>));</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  close(sock);</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  }</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span> </div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  <span class="keywordflow">if</span> (listen(sock, 1)) {</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  REMMINA_SSH(tunnel)->error = g_strdup(_(<span class="stringliteral">"Could not listen to local port."</span>));</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  close(sock);</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  }</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span> </div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  <span class="keywordflow">if</span> (pthread_create(&tunnel-><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>  <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not start pthread."</span>));</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  tunnel-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  }</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span> }</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span> </div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span> gboolean</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span> <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> {</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>  <span class="keywordflow">if</span> (pthread_create(&tunnel-><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>  <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not start pthread."</span>));</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>  tunnel-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  }</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span> }</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span> </div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span> gboolean</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span> <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> {</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>  tunnel-><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>  tunnel-><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>  tunnel-><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>  tunnel-><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> </div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  <span class="keywordflow">if</span> (pthread_create(&tunnel-><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>  <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">"Could not start pthread."</span>));</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>  tunnel-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>  }</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span> }</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span> </div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span> gboolean</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span> <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> {</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>  <span class="keywordflow">return</span> tunnel-><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> }</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span> </div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span> <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> {</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>  pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span> </div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>  REMMINA_DEBUG(<span class="stringliteral">"tunnel->thread = %lX\n"</span>, tunnel-><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> </div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>  thread = tunnel-><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>  <span class="keywordflow">if</span> (thread != 0) {</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  tunnel-><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>  pthread_cancel(thread);</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>  pthread_join(thread, NULL);</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>  tunnel-><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>  }</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span> </div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>  <span class="keywordflow">if</span> (tunnel-><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> && tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> > 0) {</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span> <span class="preprocessor">#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>  ssh_channel_cancel_forward(REMMINA_SSH(tunnel)->session, NULL, 6000 + tunnel-><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> <span class="preprocessor">#else</span></div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>  ssh_forward_cancel(REMMINA_SSH(tunnel)->session, NULL, 6000 + tunnel-><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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>  }</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>  <span class="keywordflow">if</span> (tunnel-><a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> >= 0) {</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>  close(tunnel-><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>  tunnel-><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>  }</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span> </div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>  remmina_ssh_tunnel_close_all_channels(tunnel);</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span> </div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>  g_free(tunnel-><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>  g_free(tunnel-><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>  g_free(tunnel-><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>  g_free(tunnel-><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> </div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>  <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> }</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span> </div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span> <span class="comment">* SSH SFTP *</span></div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span> <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> <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> {</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>  <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> </div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>  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> </div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>  <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> </div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>  sftp-><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> </div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>  <span class="keywordflow">return</span> sftp;</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span> }</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span> </div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span> <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> <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> {</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>  <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> </div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>  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> </div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>  remmina_ssh_init_from_ssh(REMMINA_SSH(sftp), ssh);</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span> </div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>  sftp-><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> </div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>  <span class="keywordflow">return</span> sftp;</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span> }</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span> </div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span> gboolean</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span> <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> {</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>  sftp-><a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = sftp_new(sftp-><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>  <span class="keywordflow">if</span> (!sftp-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(sftp), _(<span class="stringliteral">"Could not create SFTP session. %s"</span>));</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>  }</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>  <span class="keywordflow">if</span> (sftp_init(sftp-><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>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(sftp), _(<span class="stringliteral">"Could not start SFTP session. %s"</span>));</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>  }</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span> }</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span> </div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span> <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> {</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>  <span class="keywordflow">if</span> (sftp-><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>  sftp_free(sftp-><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>  sftp-><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>  }</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>  <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> }</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span> </div><div class="line"><a name="l02801"></a><span class="lineno"> 2801</span> <span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span> <span class="comment">* SSH Shell *</span></div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span> <span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span> <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> <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> {</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>  <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> </div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>  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> </div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>  <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> </div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>  shell-><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>  shell-><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>  shell-><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">"exec"</span>));</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>  shell-><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">"run_line"</span>));</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span> </div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>  <span class="keywordflow">return</span> shell;</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span> }</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span> </div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span> <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> <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> {</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>  <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> </div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>  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> </div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>  remmina_ssh_init_from_ssh(REMMINA_SSH(shell), ssh);</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span> </div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>  shell-><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>  shell-><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> </div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>  <span class="keywordflow">return</span> shell;</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span> }</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span> </div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span> <span class="keyword">static</span> gboolean</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span> remmina_ssh_call_exit_callback_on_main_thread(gpointer data)</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span> {</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span> </div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>  <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>  <span class="keywordflow">if</span> (shell-><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>  shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>(shell-><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>  <span class="keywordflow">if</span> (shell) {</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>  <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>  shell = NULL;</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>  }</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span> }</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span> </div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span> <span class="keyword">static</span> gpointer</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span> remmina_ssh_shell_thread(gpointer data)</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span> {</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>  <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>  <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)shell-><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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>  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>  ssh_channel channel = NULL;</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>  gint ret;</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>  gchar *filename;</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>  <span class="keyword">const</span> gchar *dir;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>  <span class="keyword">const</span> gchar *sshlogname;</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>  FILE *fp = NULL;</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span> </div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>  <span class="comment">//gint screen;</span></div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span> </div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>  LOCK_SSH(shell)</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span> </div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>  <span class="keywordflow">if</span> ((channel = ssh_channel_new(REMMINA_SSH(shell)->session)) == NULL ||</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>  ssh_channel_open_session(channel)) {</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(shell), _(<span class="stringliteral">"Could not open channel. %s"</span>));</div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>  <span class="keywordflow">if</span> (channel) ssh_channel_free(channel);</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>  shell-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>  }</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span> </div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>  ssh_channel_request_pty(channel);</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span> </div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>  <span class="comment">// SSH Callbacks</span></div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>  <span class="keyword">struct </span>ssh_callbacks_struct cb =</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>  {</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>  .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>  .userdata = shell,</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>  };</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span> </div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">"ssh_forward_x11"</span>, FALSE)) {</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>  ssh_callbacks_init(&cb);</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>  ssh_set_callbacks(REMMINA_SSH(shell)->session, &cb);</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span> </div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *display = getenv(<span class="stringliteral">"DISPLAY"</span>);</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>  <span class="keywordtype">char</span> *proto = NULL, *cookie = NULL;</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b">remmina_ssh_x11_get_proto</a>(display, &proto, &cookie) != 0) {</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>  REMMINA_DEBUG(<span class="stringliteral">"Using fake authentication data for X11 forwarding"</span>);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>  proto = NULL;</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>  cookie = NULL;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>  }</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span> </div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>  REMMINA_DEBUG(<span class="stringliteral">"proto: %s - cookie: %s"</span>, proto, cookie);</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>  ret = ssh_channel_request_x11(channel, 0, proto, cookie, 0);</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>  <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>  }</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span> </div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>  <span class="keywordflow">if</span> (shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a> && shell-><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>  REMMINA_DEBUG (<span class="stringliteral">"Requesting an SSH exec channel"</span>);</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>  ret = ssh_channel_request_exec(channel, shell-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>  REMMINA_DEBUG (<span class="stringliteral">"Requesting an SSH shell channel"</span>);</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>  ret = ssh_channel_request_shell(channel);</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>  }</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>  <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>  REMMINA_WARNING (<span class="stringliteral">"Could not request shell"</span>);</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>  <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>  <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(shell), _(<span class="stringliteral">"Could not request shell. %s"</span>));</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>  ssh_channel_close(channel);</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>  ssh_channel_free(channel);</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>  shell-><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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>  }</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span> </div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>  shell-><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> </div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span> </div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>  GFile *rf = g_file_new_for_path(remminafile->filename);</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span> </div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"sshlogfolder"</span>) == NULL)</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>  dir = g_build_path(<span class="stringliteral">"/"</span>, g_get_user_cache_dir(), <span class="stringliteral">"remmina"</span>, NULL);</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>  dir = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"sshlogfolder"</span>);</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span> </div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"sshlogname"</span>) == NULL)</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>  sshlogname = g_strconcat(g_file_get_basename(rf), <span class="stringliteral">"."</span>, <span class="stringliteral">"log"</span>, NULL);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>  sshlogname = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">"sshlogname"</span>);</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>  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>  filename = g_strconcat(dir, <span class="stringliteral">"/"</span>, sshlogname, NULL);</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span> </div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"sshsavesession"</span>, FALSE)) {</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>  REMMINA_DEBUG(<span class="stringliteral">"Saving session log to %s"</span>, filename);</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>  fp = fopen(filename, <span class="stringliteral">"w"</span>);</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>  }</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span> </div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>  g_free(filename);</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span> </div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>  REMMINA_DEBUG(<span class="stringliteral">"Run_line: %s"</span>, shell-><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>  <span class="keywordflow">if</span> (!shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a> && shell-><a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a> && shell-><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>  LOCK_SSH(shell)</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>  <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>  ssh_channel_write(channel, shell-><a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>, (gint)strlen(shell-><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>  ssh_channel_write(channel, <span class="stringliteral">"\n"</span>, (gint)1); <span class="comment">//TODO: Test this</span></div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>  REMMINA_DEBUG(<span class="stringliteral">"Run_line written to channel"</span>);</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>  }</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span> </div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>  LOCK_SSH(shell)</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span> </div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>  <span class="comment">// Create new event context.</span></div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>  shell-><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>  <span class="keywordflow">if</span> (shell-><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>  REMMINA_WARNING(<span class="stringliteral">"Internal error in %s: Couldn't get a event."</span>, __func__);</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>  }</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span> </div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>  REMMINA_DEBUG(<span class="stringliteral">"shell->slave: %d"</span>, shell-><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> </div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>  <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>  <span class="keywordflow">if</span> (ssh_event_add_fd(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, shell-><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>  REMMINA_WARNING(<span class="stringliteral">"Internal error in %s: Couldn't add an fd to the event."</span>, __func__);</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>  }</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span> </div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>  <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>  <span class="keywordflow">if</span> (ssh_event_add_session(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, REMMINA_SSH(shell)->session) != SSH_OK) {</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>  REMMINA_WARNING(<span class="stringliteral">"Internal error in %s: Couldn't add the session to the event."</span>, __func__);</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>  }</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span> </div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>  <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, TRUE, shell-><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> </div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>  <span class="comment">// Initializes the ssh_callbacks_struct.</span></div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>  <a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>.userdata = &shell;</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>  ssh_callbacks_init(&<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>  <span class="comment">// Set the channel callback functions.</span></div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>  ssh_set_channel_callbacks(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, &<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>  UNLOCK_SSH(shell)</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span> </div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>  <span class="keywordflow">do</span> {</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>  ssh_event_dopoll(shell-><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>  } <span class="keywordflow">while</span>(!ssh_channel_is_closed(shell-><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> </div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>  <span class="comment">// Close all OPENED X11 channel</span></div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>  <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(shell-><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> </div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>  shell-><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> </div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>  LOCK_SSH(shell)</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span> </div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>  <span class="comment">// Remove socket fd from event context.</span></div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>  ret = ssh_event_remove_fd(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, shell-><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>  REMMINA_DEBUG(<span class="stringliteral">"Remove socket fd from event context: %d"</span>, ret);</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span> </div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>  <span class="comment">// Remove session object from event context.</span></div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>  ret = ssh_event_remove_session(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, REMMINA_SSH(shell)->session);</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>  REMMINA_DEBUG(<span class="stringliteral">"Remove session object from event context: %d"</span>, ret);</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span> </div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>  <span class="comment">// Free event context.</span></div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>  ssh_event_free(shell-><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>  REMMINA_DEBUG(<span class="stringliteral">"Free event context"</span>);</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span> </div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>  <span class="comment">// Remove channel callback.</span></div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>  ret = ssh_remove_channel_callbacks(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, &<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>  REMMINA_DEBUG(<span class="stringliteral">"Remove channel callback: %d"</span>, ret);</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span> </div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>  <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">"sshsavesession"</span>, FALSE))</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>  fclose(fp);</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>  shell-><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>  ssh_channel_close(channel);</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>  ssh_channel_send_eof(channel);</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>  ssh_channel_free(channel);</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>  UNLOCK_SSH(shell)</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span> </div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>  shell-><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> </div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>  <span class="keywordflow">if</span> (shell-><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>  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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span> }</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span> </div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span> gboolean</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span> <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> {</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>  gchar *slavedevice;</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>  <span class="keyword">struct </span>termios stermios;</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span> </div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>  shell-><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>  <span class="keywordflow">if</span> (shell-><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>  grantpt(shell-><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>  unlockpt(shell-><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>  (slavedevice = ptsname(shell-><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>  (shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a> = open(slavedevice, O_RDWR | O_NOCTTY)) < 0) {</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>  REMMINA_SSH(shell)->error = g_strdup(_(<span class="stringliteral">"Could not create PTY device."</span>));</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>  }</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span> </div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>  <span class="comment">/* As per libssh documentation */</span></div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>  tcgetattr(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, &stermios);</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>  stermios.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>  stermios.c_oflag &= ~OPOST;</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>  stermios.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>  stermios.c_cflag &= ~(CSIZE | PARENB);</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>  stermios.c_cflag |= CS8;</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>  tcsetattr(shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, TCSANOW, &stermios);</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span> </div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>  shell-><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>  shell-><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> </div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>  <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>  pthread_create(&shell-><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> </div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span> }</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span> </div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span> <span class="keywordtype">void</span></div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span> <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> {</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>  LOCK_SSH(shell)</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>  <span class="keywordflow">if</span> (shell-><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>  ssh_channel_change_pty_size(shell-><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>  UNLOCK_SSH(shell)</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span> }</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span> </div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span> <span class="keywordtype">void</span></div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span> <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> {</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>  <span class="comment">//pthread_t thread = shell->thread;</span></div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span> </div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>  <span class="comment">// Close all OPENED X11 channel</span></div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>  <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(shell-><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> </div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>  shell-><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>  shell-><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>  REMMINA_DEBUG(<span class="stringliteral">"Cancelling the shell thread if needed"</span>);</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>  <span class="keywordflow">if</span> (shell-><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>  pthread_cancel(shell-><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>  <span class="keywordflow">if</span> (shell-><a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>) pthread_join(shell-><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>  }</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>  close(shell-><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>  <span class="keywordflow">if</span> (shell-><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>  g_free(shell-><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>  shell-><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>  }</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>  <span class="keywordflow">if</span> (shell-><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>  g_free(shell-><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>  shell-><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>  }</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>  <span class="comment">/* It’s not necessary to close shell->slave since the other end (vte) will close it */</span>;</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>  <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> }</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span> </div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span> <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 "uname -m". </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 * </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"> </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"> </td></tr> -<tr class="memitem:a483959ec642cece17e1b79506e71b00e"><td class="memItemLeft" align="right" valign="top">gchar * </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"> </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"> </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">◆ </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">◆ </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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <sys/utsname.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <locale.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <glib/gstdio.h></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <gio/gio.h></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define EMPTY(ptr) \</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"> (!(ptr) || !*(ptr))</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c"> 54</a></span> <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> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <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> <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> <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> <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>  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>  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> } <a class="code" href="remmina__utils_8c.html#a376b0273338fd875054d93b329e85fba">LSBDistroInfo</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">/*</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment"> * static LSBDistroInfo lsbFields[] = {</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment"> * { "DISTRIB_ID=", "DISTRIB_ID=%s" },</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"> * { "DISTRIB_RELEASE=", "DISTRIB_RELEASE=%s" },</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment"> * { "DISTRIB_CODENAME=", "DISTRIB_CODENAME=%s" },</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"> * { "DISTRIB_DESCRIPTION=", "DISTRIB_DESCRIPTION=%s" },</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"> * { NULL, NULL },</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"> * };</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"> */</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="structdistro__info.html"> 74</a></span> <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>  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>  gchar * <a class="code" href="structdistro__info.html#a1999084b11586bdb56bc2453fce7f633">filename</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> } <a class="code" href="remmina__utils_8c.html#a1371483cedecdda522244523c1bb96b1">DistroInfo</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#a819abe021d49cefa64ffc7981aacc478"> 79</a></span> <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>  { <span class="stringliteral">"RedHat"</span>, <span class="stringliteral">"/etc/redhat-release"</span> },</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  { <span class="stringliteral">"RedHat"</span>, <span class="stringliteral">"/etc/redhat_version"</span> },</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  { <span class="stringliteral">"Sun"</span>, <span class="stringliteral">"/etc/sun-release"</span> },</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  { <span class="stringliteral">"SuSE"</span>, <span class="stringliteral">"/etc/SuSE-release"</span> },</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  { <span class="stringliteral">"SuSE"</span>, <span class="stringliteral">"/etc/novell-release"</span> },</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  { <span class="stringliteral">"SuSE"</span>, <span class="stringliteral">"/etc/sles-release"</span> },</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  { <span class="stringliteral">"SuSE"</span>, <span class="stringliteral">"/etc/os-release"</span> },</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  { <span class="stringliteral">"Debian"</span>, <span class="stringliteral">"/etc/debian_version"</span> },</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  { <span class="stringliteral">"Debian"</span>, <span class="stringliteral">"/etc/debian_release"</span> },</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  { <span class="stringliteral">"Ubuntu"</span>, <span class="stringliteral">"/etc/lsb-release"</span> },</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  { <span class="stringliteral">"Mandrake"</span>, <span class="stringliteral">"/etc/mandrake-release"</span> },</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  { <span class="stringliteral">"Mandriva"</span>, <span class="stringliteral">"/etc/mandriva-release"</span> },</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  { <span class="stringliteral">"Mandrake"</span>, <span class="stringliteral">"/etc/mandrakelinux-release"</span> },</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  { <span class="stringliteral">"TurboLinux"</span>, <span class="stringliteral">"/etc/turbolinux-release"</span> },</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  { <span class="stringliteral">"Fedora Core"</span>, <span class="stringliteral">"/etc/fedora-release"</span> },</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  { <span class="stringliteral">"Gentoo"</span>, <span class="stringliteral">"/etc/gentoo-release"</span> },</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  { <span class="stringliteral">"Novell"</span>, <span class="stringliteral">"/etc/nld-release"</span> },</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  { <span class="stringliteral">"Annvix"</span>, <span class="stringliteral">"/etc/annvix-release"</span> },</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  { <span class="stringliteral">"Arch"</span>, <span class="stringliteral">"/etc/arch-release"</span> },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  { <span class="stringliteral">"Arklinux"</span>, <span class="stringliteral">"/etc/arklinux-release"</span> },</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  { <span class="stringliteral">"Aurox"</span>, <span class="stringliteral">"/etc/aurox-release"</span> },</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  { <span class="stringliteral">"BlackCat"</span>, <span class="stringliteral">"/etc/blackcat-release"</span> },</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  { <span class="stringliteral">"Cobalt"</span>, <span class="stringliteral">"/etc/cobalt-release"</span> },</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  { <span class="stringliteral">"Conectiva"</span>, <span class="stringliteral">"/etc/conectiva-release"</span> },</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  { <span class="stringliteral">"Immunix"</span>, <span class="stringliteral">"/etc/immunix-release"</span> },</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  { <span class="stringliteral">"Knoppix"</span>, <span class="stringliteral">"/etc/knoppix_version"</span> },</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  { <span class="stringliteral">"Linux-From-Scratch"</span>, <span class="stringliteral">"/etc/lfs-release"</span> },</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  { <span class="stringliteral">"Linux-PPC"</span>, <span class="stringliteral">"/etc/linuxppc-release"</span> },</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  { <span class="stringliteral">"MkLinux"</span>, <span class="stringliteral">"/etc/mklinux-release"</span> },</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  { <span class="stringliteral">"PLD"</span>, <span class="stringliteral">"/etc/pld-release"</span> },</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  { <span class="stringliteral">"Slackware"</span>, <span class="stringliteral">"/etc/slackware-version"</span> },</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  { <span class="stringliteral">"Slackware"</span>, <span class="stringliteral">"/etc/slackware-release"</span> },</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  { <span class="stringliteral">"SMEServer"</span>, <span class="stringliteral">"/etc/e-smith-release"</span> },</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  { <span class="stringliteral">"Solaris"</span>, <span class="stringliteral">"/etc/release"</span> },</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  { <span class="stringliteral">"Solus"</span>, <span class="stringliteral">"/etc/solus-release"</span> },</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  { <span class="stringliteral">"Tiny Sofa"</span>, <span class="stringliteral">"/etc/tinysofa-release"</span> },</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  { <span class="stringliteral">"UltraPenguin"</span>, <span class="stringliteral">"/etc/ultrapenguin-release"</span> },</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  { <span class="stringliteral">"UnitedLinux"</span>, <span class="stringliteral">"/etc/UnitedLinux-release"</span> },</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  { <span class="stringliteral">"VALinux"</span>, <span class="stringliteral">"/etc/va-release"</span> },</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  { <span class="stringliteral">"Yellow Dog"</span>, <span class="stringliteral">"/etc/yellowdog-release"</span> },</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  { NULL, NULL },</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3"> 123</a></span> 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> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">const</span> gchar *sub;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (!*needle)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  sub = strstr(haystack, needle);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span> (!sub)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> sub - haystack;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">/* end can be -1 for haystack->len.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment"> * returns: position of found text or -1.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <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> 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> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  gint pos;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  g_return_val_if_fail(haystack != NULL, -1);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">if</span> (haystack->len == 0)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  g_return_val_if_fail(start >= 0, -1);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span> (start >= (gint)haystack->len)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  g_return_val_if_fail(!EMPTY(needle), -1);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (end < 0)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  end = haystack->len;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  pos = <a class="code" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3">remmina_utils_strpos</a>(haystack->str + start, needle);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span> (pos == -1)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  pos += start;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (pos >= end)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="comment">/* Replaces @len characters from offset @a pos.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <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> <span class="comment"> * returns: pos + strlen(replace).</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <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> 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> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  g_string_erase(str, pos, len);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span> (replace) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  g_string_insert(str, pos, replace);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  pos += strlen(replace);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66"> 193</a></span> 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> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  guint count = 0;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  gint pos = 0;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  gsize needle_length = strlen(needle);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  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> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span> (pos == -1)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  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>  count++;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> count;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d"> 220</a></span> 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> {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  gchar *p = g_malloc(strlen(s) + 1);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (p) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  gchar *p2 = p;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">while</span> (*s != <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span> (*s != <span class="charliteral">'\t'</span> && *s != <span class="charliteral">'\n'</span> && *s != <span class="charliteral">'\"'</span>)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  *p2++ = *s++;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  ++s;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  *p2 = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa"> 251</a></span> <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> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  gsize file_sz;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">struct </span>stat st;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  gchar *distro_desc = NULL;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  GError *err = NULL;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span> (g_stat(filename, &st) == -1) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  g_debug(<span class="stringliteral">"%s: could not stat the file %s\n"</span>, __func__, filename);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  g_debug(<span class="stringliteral">"%s: File %s is %lu bytes long\n"</span>, __func__, filename, st.st_size);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span> (st.st_size > 131072)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (!g_file_get_contents(filename, &distro_desc, &file_sz, &err)) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  g_debug(<span class="stringliteral">"%s: could not get the file content%s: %s\n"</span>, __func__, filename, err->message);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  g_error_free(err);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (file_sz == 0) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  g_debug(<span class="stringliteral">"%s: Cannot work with empty file.\n"</span>, __FUNCTION__);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  g_debug(<span class="stringliteral">"%s: Distro description %s\n"</span>, __func__, distro_desc);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</span> distro_desc;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324"> 287</a></span> 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> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  gchar *lang = setlocale(LC_ALL, NULL);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  gchar *ptr;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">if</span> (!lang || lang[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  lang = <span class="stringliteral">"en_US\0"</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  ptr = strchr(lang, <span class="charliteral">'.'</span>);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (ptr != NULL)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  *ptr = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> lang;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> }</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522"> 306</a></span> <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> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <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> }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa"> 312</a></span> <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> {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <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> }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730"> 326</a></span> <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> {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <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> }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22"> 336</a></span> 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> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  gchar *lsb_id = NULL;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">"/usr/bin/lsb_release -si"</span>, &lsb_id, NULL, NULL, NULL))</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">return</span> lsb_id;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75"> 349</a></span> 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> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  gchar *lsb_description = NULL;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  GError *err = NULL;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">"/usr/bin/lsb_release -sd"</span>, &lsb_description, NULL, NULL, &err)) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> lsb_description;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  g_debug(<span class="stringliteral">"%s: could not execute lsb_release %s\n"</span>, __func__, err->message);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  g_error_free(err);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  g_debug(<span class="stringliteral">"%s: lsb_release %s\n"</span>, __func__, lsb_description);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca"> 369</a></span> 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> {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  gchar *lsb_release = NULL;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">"/usr/bin/lsb_release -sr"</span>, &lsb_release, NULL, NULL, NULL))</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">return</span> lsb_release;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c"> 382</a></span> 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> {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  gchar *lsb_codename = NULL;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">"/usr/bin/lsb_release -sc"</span>, &lsb_codename, NULL, NULL, NULL))</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">return</span> lsb_codename;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c"> 396</a></span> 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> {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  gchar *etc_release = NULL;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  gint i;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  GHashTable *r;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  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> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <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>  g_debug(<span class="stringliteral">"%s: File %s\n"</span>, __func__, distroArray[i].filename);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  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>  <span class="keywordflow">if</span> (etc_release) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">if</span> (etc_release[0] != <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  g_debug(<span class="stringliteral">"%s: Distro description %s\n"</span>, __func__, etc_release);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  g_hash_table_insert(r, distroArray[i].filename, etc_release);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  g_free(etc_release);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#af1acfeca84e3efd47ab1ef8365f94f99"> 424</a></span> <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> {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  gchar *kernel_string;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">if</span> (uname(&<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>  g_print(<span class="stringliteral">"uname:"</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  kernel_string = g_strdup_printf(<span class="stringliteral">"%s;%s;%s\n"</span>,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <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>  <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>  <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>  <span class="keywordflow">if</span> (!kernel_string || kernel_string[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">if</span> (kernel_string)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  g_free(kernel_string);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  kernel_string = g_strdup_printf(<span class="stringliteral">"%s;%s;%s\n"</span>,</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="stringliteral">"UNKNOWN"</span>,</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="stringliteral">"UNKNOWN"</span>,</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="stringliteral">"UNKNOWN"</span>);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">return</span> kernel_string;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8"> 460</a></span> 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> {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  FILE *file;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="preprocessor">#define BLOCK_SIZE 4096</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <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>  <span class="keywordtype">size_t</span> bytes_read;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  GChecksum *sha1;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">char</span> *digest = NULL;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  file = fopen(filename, <span class="stringliteral">"r"</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span> (file == NULL)</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  sha1 = g_checksum_new(G_CHECKSUM_SHA1);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">if</span> (sha1 == NULL)</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">goto</span> DONE;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  bytes_read = fread(block, 1, 4096, file);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">if</span> (bytes_read == 0) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span> (feof(file))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <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>  <span class="keywordflow">goto</span> DONE;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  g_checksum_update(sha1, block, bytes_read);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  digest = g_strdup(g_checksum_get_string(sha1));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> DONE:</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">if</span> (sha1)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  g_checksum_free(sha1);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">if</span> (file)</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  fclose(file);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">return</span> digest;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> </div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e"> 505</a></span> 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> {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  gchar *result;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keyword">static</span> <span class="keywordtype">char</span> alpha[] = <span class="stringliteral">"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"</span>;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> </div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  result = g_malloc0(15);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">for</span> (i = 0; i < 7; i++)</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  result[i] = alpha[randombytes_uniform(<span class="keyword">sizeof</span>(alpha))];</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">for</span> (i = 0; i < 7; i++)</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  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> </div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> }</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <sys/utsname.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <locale.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <glib/gi18n.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <glib/gstdio.h></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <gio/gio.h></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "<a class="code" href="remmina__sodium_8h.html">remmina_sodium.h</a>"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define EMPTY(ptr) \</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"> (!(ptr) || !*(ptr))</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c"> 54</a></span> <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> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <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> <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> <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> <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>  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>  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> } <a class="code" href="remmina__utils_8c.html#a376b0273338fd875054d93b329e85fba">LSBDistroInfo</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">/*</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment"> * static LSBDistroInfo lsbFields[] = {</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment"> * { "DISTRIB_ID=", "DISTRIB_ID=%s" },</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"> * { "DISTRIB_RELEASE=", "DISTRIB_RELEASE=%s" },</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment"> * { "DISTRIB_CODENAME=", "DISTRIB_CODENAME=%s" },</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"> * { "DISTRIB_DESCRIPTION=", "DISTRIB_DESCRIPTION=%s" },</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"> * { NULL, NULL },</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"> * };</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"> */</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="structdistro__info.html"> 74</a></span> <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>  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>  gchar * <a class="code" href="structdistro__info.html#a1999084b11586bdb56bc2453fce7f633">filename</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> } <a class="code" href="remmina__utils_8c.html#a1371483cedecdda522244523c1bb96b1">DistroInfo</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#a819abe021d49cefa64ffc7981aacc478"> 79</a></span> <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>  { <span class="stringliteral">"RedHat"</span>, <span class="stringliteral">"/etc/redhat-release"</span> },</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  { <span class="stringliteral">"RedHat"</span>, <span class="stringliteral">"/etc/redhat_version"</span> },</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  { <span class="stringliteral">"Sun"</span>, <span class="stringliteral">"/etc/sun-release"</span> },</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  { <span class="stringliteral">"SuSE"</span>, <span class="stringliteral">"/etc/SuSE-release"</span> },</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  { <span class="stringliteral">"SuSE"</span>, <span class="stringliteral">"/etc/novell-release"</span> },</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  { <span class="stringliteral">"SuSE"</span>, <span class="stringliteral">"/etc/sles-release"</span> },</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  { <span class="stringliteral">"SuSE"</span>, <span class="stringliteral">"/etc/os-release"</span> },</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  { <span class="stringliteral">"Debian"</span>, <span class="stringliteral">"/etc/debian_version"</span> },</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  { <span class="stringliteral">"Debian"</span>, <span class="stringliteral">"/etc/debian_release"</span> },</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  { <span class="stringliteral">"Ubuntu"</span>, <span class="stringliteral">"/etc/lsb-release"</span> },</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  { <span class="stringliteral">"Mandrake"</span>, <span class="stringliteral">"/etc/mandrake-release"</span> },</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  { <span class="stringliteral">"Mandriva"</span>, <span class="stringliteral">"/etc/mandriva-release"</span> },</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  { <span class="stringliteral">"Mandrake"</span>, <span class="stringliteral">"/etc/mandrakelinux-release"</span> },</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  { <span class="stringliteral">"TurboLinux"</span>, <span class="stringliteral">"/etc/turbolinux-release"</span> },</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  { <span class="stringliteral">"Fedora Core"</span>, <span class="stringliteral">"/etc/fedora-release"</span> },</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  { <span class="stringliteral">"Gentoo"</span>, <span class="stringliteral">"/etc/gentoo-release"</span> },</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  { <span class="stringliteral">"Novell"</span>, <span class="stringliteral">"/etc/nld-release"</span> },</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  { <span class="stringliteral">"Annvix"</span>, <span class="stringliteral">"/etc/annvix-release"</span> },</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  { <span class="stringliteral">"Arch"</span>, <span class="stringliteral">"/etc/arch-release"</span> },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  { <span class="stringliteral">"Arklinux"</span>, <span class="stringliteral">"/etc/arklinux-release"</span> },</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  { <span class="stringliteral">"Aurox"</span>, <span class="stringliteral">"/etc/aurox-release"</span> },</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  { <span class="stringliteral">"BlackCat"</span>, <span class="stringliteral">"/etc/blackcat-release"</span> },</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  { <span class="stringliteral">"Cobalt"</span>, <span class="stringliteral">"/etc/cobalt-release"</span> },</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  { <span class="stringliteral">"Conectiva"</span>, <span class="stringliteral">"/etc/conectiva-release"</span> },</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  { <span class="stringliteral">"Immunix"</span>, <span class="stringliteral">"/etc/immunix-release"</span> },</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  { <span class="stringliteral">"Knoppix"</span>, <span class="stringliteral">"/etc/knoppix_version"</span> },</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  { <span class="stringliteral">"Linux-From-Scratch"</span>, <span class="stringliteral">"/etc/lfs-release"</span> },</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  { <span class="stringliteral">"Linux-PPC"</span>, <span class="stringliteral">"/etc/linuxppc-release"</span> },</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  { <span class="stringliteral">"MkLinux"</span>, <span class="stringliteral">"/etc/mklinux-release"</span> },</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  { <span class="stringliteral">"PLD"</span>, <span class="stringliteral">"/etc/pld-release"</span> },</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  { <span class="stringliteral">"Slackware"</span>, <span class="stringliteral">"/etc/slackware-version"</span> },</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  { <span class="stringliteral">"Slackware"</span>, <span class="stringliteral">"/etc/slackware-release"</span> },</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  { <span class="stringliteral">"SMEServer"</span>, <span class="stringliteral">"/etc/e-smith-release"</span> },</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  { <span class="stringliteral">"Solaris"</span>, <span class="stringliteral">"/etc/release"</span> },</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  { <span class="stringliteral">"Solus"</span>, <span class="stringliteral">"/etc/solus-release"</span> },</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  { <span class="stringliteral">"Tiny Sofa"</span>, <span class="stringliteral">"/etc/tinysofa-release"</span> },</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  { <span class="stringliteral">"UltraPenguin"</span>, <span class="stringliteral">"/etc/ultrapenguin-release"</span> },</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  { <span class="stringliteral">"UnitedLinux"</span>, <span class="stringliteral">"/etc/UnitedLinux-release"</span> },</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  { <span class="stringliteral">"VALinux"</span>, <span class="stringliteral">"/etc/va-release"</span> },</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  { <span class="stringliteral">"Yellow Dog"</span>, <span class="stringliteral">"/etc/yellowdog-release"</span> },</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  { NULL, NULL },</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3"> 123</a></span> 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> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">const</span> gchar *sub;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (!*needle)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  sub = strstr(haystack, needle);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span> (!sub)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> sub - haystack;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">/* end can be -1 for haystack->len.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment"> * returns: position of found text or -1.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <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> 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> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  gint pos;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  g_return_val_if_fail(haystack != NULL, -1);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">if</span> (haystack->len == 0)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  g_return_val_if_fail(start >= 0, -1);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span> (start >= (gint)haystack->len)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  g_return_val_if_fail(!EMPTY(needle), -1);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (end < 0)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  end = haystack->len;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  pos = <a class="code" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3">remmina_utils_strpos</a>(haystack->str + start, needle);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span> (pos == -1)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  pos += start;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (pos >= end)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="comment">/* Replaces @len characters from offset @a pos.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <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> <span class="comment"> * returns: pos + strlen(replace).</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <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> 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> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  g_string_erase(str, pos, len);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span> (replace) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  g_string_insert(str, pos, replace);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  pos += strlen(replace);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66"> 193</a></span> 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> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  guint count = 0;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  gint pos = 0;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  gsize needle_length = strlen(needle);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  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> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span> (pos == -1)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  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>  count++;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> count;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d"> 220</a></span> 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> {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  gchar *p = g_malloc(strlen(s) + 1);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (p) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  gchar *p2 = p;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">while</span> (*s != <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span> (*s != <span class="charliteral">'\t'</span> && *s != <span class="charliteral">'\n'</span> && *s != <span class="charliteral">'\"'</span>)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  *p2++ = *s++;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  ++s;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  *p2 = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa"> 251</a></span> <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> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  gsize file_sz;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">struct </span>stat st;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  gchar *distro_desc = NULL;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  GError *err = NULL;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span> (g_stat(filename, &st) == -1) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  g_debug(<span class="stringliteral">"%s: could not stat the file %s\n"</span>, __func__, filename);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  g_debug(<span class="stringliteral">"%s: File %s is %lu bytes long\n"</span>, __func__, filename, st.st_size);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span> (st.st_size > 131072)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (!g_file_get_contents(filename, &distro_desc, &file_sz, &err)) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  g_debug(<span class="stringliteral">"%s: could not get the file content%s: %s\n"</span>, __func__, filename, err->message);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  g_error_free(err);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (file_sz == 0) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  g_debug(<span class="stringliteral">"%s: Cannot work with empty file.\n"</span>, __FUNCTION__);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  g_debug(<span class="stringliteral">"%s: Distro description %s\n"</span>, __func__, distro_desc);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</span> distro_desc;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324"> 287</a></span> 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> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  gchar *lang = setlocale(LC_ALL, NULL);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  gchar *ptr;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">if</span> (!lang || lang[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  lang = <span class="stringliteral">"en_US\0"</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  ptr = strchr(lang, <span class="charliteral">'.'</span>);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (ptr != NULL)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  *ptr = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> lang;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> }</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522"> 306</a></span> <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> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <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> }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa"> 312</a></span> <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> {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <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> }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730"> 326</a></span> <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> {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <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> }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22"> 336</a></span> 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> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  gchar *lsb_id = NULL;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">"/usr/bin/lsb_release -si"</span>, &lsb_id, NULL, NULL, NULL))</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">return</span> lsb_id;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75"> 349</a></span> 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> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  gchar *lsb_description = NULL;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  GError *err = NULL;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">"/usr/bin/lsb_release -sd"</span>, &lsb_description, NULL, NULL, &err)) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> lsb_description;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  g_debug(<span class="stringliteral">"%s: could not execute lsb_release %s\n"</span>, __func__, err->message);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  g_error_free(err);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  g_debug(<span class="stringliteral">"%s: lsb_release %s\n"</span>, __func__, lsb_description);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca"> 369</a></span> 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> {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  gchar *lsb_release = NULL;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">"/usr/bin/lsb_release -sr"</span>, &lsb_release, NULL, NULL, NULL))</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">return</span> lsb_release;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c"> 382</a></span> 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> {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  gchar *lsb_codename = NULL;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">"/usr/bin/lsb_release -sc"</span>, &lsb_codename, NULL, NULL, NULL))</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">return</span> lsb_codename;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c"> 396</a></span> 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> {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  gchar *etc_release = NULL;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  gint i;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  GHashTable *r;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  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> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <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>  g_debug(<span class="stringliteral">"%s: File %s\n"</span>, __func__, distroArray[i].filename);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  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>  <span class="keywordflow">if</span> (etc_release) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">if</span> (etc_release[0] != <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  g_debug(<span class="stringliteral">"%s: Distro description %s\n"</span>, __func__, etc_release);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  g_hash_table_insert(r, distroArray[i].filename, etc_release);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  g_free(etc_release);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#af1acfeca84e3efd47ab1ef8365f94f99"> 424</a></span> <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> {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  gchar *kernel_string;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">if</span> (uname(&<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>  g_print(<span class="stringliteral">"uname:"</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  kernel_string = g_strdup_printf(<span class="stringliteral">"%s;%s;%s\n"</span>,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <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>  <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>  <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>  <span class="keywordflow">if</span> (!kernel_string || kernel_string[0] == <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">if</span> (kernel_string)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  g_free(kernel_string);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  kernel_string = g_strdup_printf(<span class="stringliteral">"%s;%s;%s\n"</span>,</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="stringliteral">"UNKNOWN"</span>,</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="stringliteral">"UNKNOWN"</span>,</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="stringliteral">"UNKNOWN"</span>);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">return</span> kernel_string;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8"> 460</a></span> 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> {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  FILE *file;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="preprocessor">#define BLOCK_SIZE 4096</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <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>  <span class="keywordtype">size_t</span> bytes_read;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  GChecksum *sha1;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">char</span> *digest = NULL;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  file = fopen(filename, <span class="stringliteral">"r"</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span> (file == NULL)</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  sha1 = g_checksum_new(G_CHECKSUM_SHA1);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">if</span> (sha1 == NULL)</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">goto</span> DONE;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  bytes_read = fread(block, 1, 4096, file);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">if</span> (bytes_read == 0) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span> (feof(file))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <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>  <span class="keywordflow">goto</span> DONE;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  g_checksum_update(sha1, block, bytes_read);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  digest = g_strdup(g_checksum_get_string(sha1));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> DONE:</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">if</span> (sha1)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  g_checksum_free(sha1);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">if</span> (file)</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  fclose(file);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">return</span> digest;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> }</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 " 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 * </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"> </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"> </td></tr> -<tr class="memitem:a483959ec642cece17e1b79506e71b00e"><td class="memItemLeft" align="right" valign="top">gchar * </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"> </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"> </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">◆ </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">◆ </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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <glib.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> G_BEGIN_DECLS</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> 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> 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> 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> 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> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> 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> <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> <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> <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> 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> 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> 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> 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> 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> <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> 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> 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> 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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <glib.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> G_BEGIN_DECLS</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> 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> 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> 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> 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> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> 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> <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> <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> <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> 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> 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> 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> 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> 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> <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> 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> 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 " 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(): remmina_utils.c'],['../remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e',1,'remmina_gen_random_uuid(): 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): remmina_public.c'],['../remmina__public_8h.html#ad7c29f17323086e08ac56e1636fd41c3',1,'remmina_gtk_check_version(guint major, guint minor, guint micro): remmina_public.c']]], ['remmina_5fgtksocket_5favailable',['remmina_gtksocket_available',['../remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f',1,'remmina_gtksocket_available(): remmina_plugin_manager.c'],['../remmina__plugin__manager_8h.html#a1ef27b953decb0c707ec9a18da47a38f',1,'remmina_gtksocket_available(): 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): remmina_main.c'],['../remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b',1,'remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1',1,'remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229',1,'remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6',1,'remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc',1,'remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92',1,'remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a',1,'remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data): 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(): remmina_ssh.h'],['../remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53',1,'remmina_ssh_tunnel_open(RemminaSSHTunnel *tunnel, const gchar *host, gint port, gint local_port): 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): remmina_ssh.h'],['../remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459',1,'REMMINA_SSH_TUNNEL_REVERSE(): remmina_ssh.h']]], + ['remmina_5fssh_5ftunnel_5freverse',['REMMINA_SSH_TUNNEL_REVERSE',['../remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459',1,'REMMINA_SSH_TUNNEL_REVERSE(): remmina_ssh.h'],['../remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2',1,'remmina_ssh_tunnel_reverse(RemminaSSHTunnel *tunnel, gint port, gint local_port): 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): remmina_ssh.h'],['../remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326',1,'REMMINA_SSH_TUNNEL_XPORT(): remmina_ssh.h']]], + ['remmina_5fssh_5ftunnel_5fxport',['REMMINA_SSH_TUNNEL_XPORT',['../remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326',1,'REMMINA_SSH_TUNNEL_XPORT(): remmina_ssh.h'],['../remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4',1,'remmina_ssh_tunnel_xport(RemminaSSHTunnel *tunnel, gboolean bindlocalhost): 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(): remmina_main.c'],['../remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1',1,'RemminaMain(): remmina_main.h']]], + ['remminamain',['RemminaMain',['../remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1',1,'RemminaMain(): remmina_main.h'],['../remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89',1,'remminamain(): 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): rmnews.c'],['../rmnews_8h.html#a341ebc424e040f8f8a2e5e46b1920c7e',1,'rmnews_get_url(const char *url): 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): rmnews.c'],['../rmnews_8c.html#aa360ccd2808c76aab98c1fc4bc336c38',1,'rmnews_get_url_cb(SoupSession *session, SoupMessage *msg, gpointer data): 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(): rmnews.c'],['../rmnews_8h.html#a8433da15acb3138804b4816189e8fc3a',1,'rmnews_schedule(): rmnews.c']]], - ['rmnews_5fshow_5fnews',['rmnews_show_news',['../rmnews_8c.html#af58ee02676e8c920a6e9b4676bb86abe',1,'rmnews_show_news(GtkWindow *parent): rmnews.c'],['../rmnews_8h.html#a356f4b0242f21bcbefb2ace3a15873af',1,'rmnews_show_news(): 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(): 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(): remmina_main.c'],['../rmnews_8c.html#a8ebbcba2c07af0938b3c29e316747d12',1,'supported_mime_types(): 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(): remmina.c'],['../rmnews_8h.html#a7bb52efeacff2541ada1c04f279f6e0b',1,'disablenews(): remmina.c']]], ['disabletoolbar',['disabletoolbar',['../remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1',1,'disabletoolbar(): remmina.c'],['../remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1',1,'disabletoolbar(): remmina.c']]], ['disabletrayicon',['disabletrayicon',['../remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58',1,'disabletrayicon(): remmina.c'],['../remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58',1,'disabletrayicon(): 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): remmina_ftp_client.c'],['../remmina__ftp__client_8h.html#ad96358f40ab056c91f796ddda886a1dd',1,'remmina_ftp_client_update_task(RemminaFTPClient *client, RemminaFTPTask *task): 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): remmina_ftp_client.c'],['../remmina__ftp__client_8h.html#a659de1105971e3fda3d44d089277d6a7',1,'remmina_ftp_task_free(RemminaFTPTask *task): remmina_ftp_client.c']]], - ['remmina_5fgen_5frandom_5fuuid',['remmina_gen_random_uuid',['../remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e',1,'remmina_gen_random_uuid(): remmina_utils.c'],['../remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e',1,'remmina_gen_random_uuid(): 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): remmina_public.c'],['../remmina__public_8h.html#ad7c29f17323086e08ac56e1636fd41c3',1,'remmina_gtk_check_version(guint major, guint minor, guint micro): remmina_public.c']]], ['remmina_5fgtksocket_5favailable',['remmina_gtksocket_available',['../remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f',1,'remmina_gtksocket_available(): remmina_plugin_manager.c'],['../remmina__plugin__manager_8h.html#a1ef27b953decb0c707ec9a18da47a38f',1,'remmina_gtksocket_available(): 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): remmina_main.c'],['../remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b',1,'remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1',1,'remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229',1,'remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6',1,'remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc',1,'remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92',1,'remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data): 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): remmina_main.c'],['../remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a',1,'remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data): 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): rdp_graphics.c'],['../rdp__graphics_8h.html#a95732c40c35499f3440715b6526279b1',1,'rf_register_graphics(rdpGraphics *graphics): 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): rmnews.c'],['../rmnews_8h.html#a341ebc424e040f8f8a2e5e46b1920c7e',1,'rmnews_get_url(const char *url): 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): rmnews.c'],['../rmnews_8c.html#aa360ccd2808c76aab98c1fc4bc336c38',1,'rmnews_get_url_cb(SoupSession *session, SoupMessage *msg, gpointer data): 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(): rmnews.c'],['../rmnews_8h.html#a8433da15acb3138804b4816189e8fc3a',1,'rmnews_schedule(): rmnews.c']]], - ['rmnews_5fshow_5fnews',['rmnews_show_news',['../rmnews_8c.html#af58ee02676e8c920a6e9b4676bb86abe',1,'rmnews_show_news(GtkWindow *parent): rmnews.c'],['../rmnews_8h.html#a356f4b0242f21bcbefb2ace3a15873af',1,'rmnews_show_news(): 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(): 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(): remmina_main.c'],['../rmnews_8c.html#a8ebbcba2c07af0938b3c29e316747d12',1,'supported_mime_types(): 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(): remmina.c'],['../rmnews_8h.html#a7bb52efeacff2541ada1c04f279f6e0b',1,'disablenews(): remmina.c']]], ['disabletoolbar',['disabletoolbar',['../remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1',1,'disabletoolbar(): remmina.c'],['../remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1',1,'disabletoolbar(): remmina.c']]], ['disabletrayicon',['disabletrayicon',['../remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58',1,'disabletrayicon(): remmina.c'],['../remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58',1,'disabletrayicon(): 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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2016-2018 Denis Ollier</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="spice__plugin_8h.html">spice_plugin.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define XSPICE_DEFAULT_PORT 5900</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <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>  <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7"> 48</a></span> <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> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <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> <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> <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> <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> <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> <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> <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> <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> <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> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <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> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <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> <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> <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> <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> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39"> 67</a></span> 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> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  gchar *str, **arr;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  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>  g_return_val_if_fail(search != NULL, NULL);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (replacement == NULL)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  replacement = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  arr = g_strsplit(<span class="keywordtype">string</span>, search, -1);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (arr != NULL && arr[0] != NULL)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  str = g_strjoinv(replacement, arr);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  str = g_strdup(<span class="keywordtype">string</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  g_strfreev(arr);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <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> <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> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <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> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  g_return_val_if_fail(gpdata != NULL, FALSE);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Opening spice session for FD: %d"</span>, fd);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> spice_session_open_fd(gpdata-><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> }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <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> <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> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <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>  g_return_val_if_fail(gpdata != NULL, FALSE);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  gint id, type;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  g_object_get(channel, <span class="stringliteral">"channel-id"</span>, &<span class="keywordtype">id</span>, <span class="stringliteral">"channel-type"</span>, &type, NULL);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  REMMINA_PLUGIN_DEBUG (<span class="stringliteral">"Opening channel %p %s %d with FD: %d"</span>, channel, g_type_name(G_OBJECT_TYPE(channel)), <span class="keywordtype">id</span>, gpdata-><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> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> spice_channel_open_fd(channel, gpdata-><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> }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb"> 115</a></span> <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> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  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>  g_object_set_data_full(G_OBJECT(gp), <span class="stringliteral">"plugin-data"</span>, gpdata, g_free);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  gpdata-><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>  g_signal_connect(gpdata-><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>  <span class="stringliteral">"channel-new"</span>,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  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>  gp);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  g_object_set(gpdata-><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>  <span class="stringliteral">"password"</span>, g_strdup(remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"password"</span>)),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="stringliteral">"read-only"</span>, remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"viewonly"</span>, FALSE),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="stringliteral">"enable-audio"</span>, remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"enableaudio"</span>, FALSE),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="stringliteral">"enable-smartcard"</span>, remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"sharesmartcard"</span>, FALSE),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="stringliteral">"shared-dir"</span>, remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"sharefolder"</span>),</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  NULL);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69">gtk_session</a> = spice_gtk_session_get(gpdata-><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>  g_object_set(gpdata-><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>  <span class="stringliteral">"auto-clipboard"</span>,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  !remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"disableclipboard"</span>, FALSE),</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  NULL);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4"> 147</a></span> <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> {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  gint port;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">const</span> gchar *cacert;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  gchar *host, *tunnel;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">/* Setup SSH tunnel if needed */</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  tunnel = remmina_plugin_service-><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> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  remmina_plugin_service-><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>  XSPICE_DEFAULT_PORT,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  &host,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  &port);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"host"</span>, host, NULL);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  g_free(host);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  g_free(tunnel);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">/* Unencrypted connection */</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (!remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"usetls"</span>, FALSE)) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"port"</span>, g_strdup_printf(<span class="stringliteral">"%i"</span>, port), NULL);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">/* TLS encrypted connection */</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">else</span>{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"tls_port"</span>, g_strdup_printf(<span class="stringliteral">"%i"</span>, port), NULL);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">/* Server CA certificate */</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  cacert = remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"cacert"</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (cacert) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"ca-file"</span>, cacert, NULL);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  spice_session_connect(gpdata-><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>  <span class="comment">/*</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="comment"> * FIXME: Add a waiting loop until the g_signal "channel-event" occurs.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <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> <span class="comment"> * otherwise FALSE should be returned.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment"> */</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb"> 217</a></span> <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> {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <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> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (gpdata-><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>  g_signal_handlers_disconnect_by_func(gpdata-><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>  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>  gp);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  g_signal_handlers_disconnect_by_func(gpdata-><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>  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>  gp);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (gpdata-><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>  spice_session_disconnect(gpdata-><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>  g_object_unref(gpdata-><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>  gpdata-><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>  remmina_plugin_service-><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>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <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>  <span class="keywordflow">if</span> (gpdata-><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>  g_hash_table_unref(gpdata-><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>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <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> <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> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db"> 249</a></span> <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> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  g_signal_stop_emission_by_name(channel, <span class="stringliteral">"gst-video-overlay"</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe"> 255</a></span> <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> {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  gint id, type;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  g_return_if_fail(gpdata != NULL);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  g_object_get(channel, <span class="stringliteral">"channel-id"</span>, &<span class="keywordtype">id</span>, <span class="stringliteral">"channel-type"</span>, &type, NULL);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  REMMINA_PLUGIN_DEBUG (<span class="stringliteral">"New spice channel %p %s %d"</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> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span> (SPICE_IS_MAIN_CHANNEL(channel)) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  gpdata-><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>  g_signal_connect(channel,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="stringliteral">"channel-event"</span>,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  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>  gp);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  g_signal_connect(channel,</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="stringliteral">"main-agent-update"</span>,</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  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>  gp);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <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>  g_signal_connect(channel,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="stringliteral">"new-file-transfer"</span>,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  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>  gp);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <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> <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>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span> (SPICE_IS_DISPLAY_CHANNEL(channel)) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  gpdata-><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>  gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a> = spice_display_new(gpdata-><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>  g_signal_connect(gpdata-><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>  <span class="stringliteral">"notify::ready"</span>,</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  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>  gp);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>(G_OBJECT(gpdata-><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> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"disablegstvideooverlay"</span>, FALSE)) {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  g_signal_connect(channel,</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="stringliteral">"gst-video-overlay"</span>,</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  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>  gp);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span> (SPICE_IS_INPUTS_CHANNEL(channel)) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"New inputs channel"</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span> (SPICE_IS_PLAYBACK_CHANNEL(channel)) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"New audio channel"</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">if</span> (remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"enableaudio"</span>, FALSE)) {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a1c88ad311d86fb0de1dc441150a7da02">audio</a> = spice_audio_get(gpdata-><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>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (SPICE_IS_USBREDIR_CHANNEL(channel)) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"New usbredir channel"</span>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (SPICE_IS_WEBDAV_CHANNEL(channel)) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"New webdav channel"</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span> (remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"sharefolder"</span>)) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  spice_channel_connect(channel);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b"> 335</a></span> <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> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  gint ret;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  gboolean disablepasswordstoring;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  gchar *s_password;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  gboolean save;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  disablepasswordstoring = remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"disablepasswordstoring"</span>, FALSE);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  ret = remmina_plugin_service-><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>  (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>  _(<span class="stringliteral">"Enter SPICE password"</span>),</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  NULL,</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"password"</span>),</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  NULL,</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  NULL);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  s_password = remmina_plugin_service-><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>  save = remmina_plugin_service-><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>  <span class="keywordflow">if</span> (save) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>, s_password);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>, NULL);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"password"</span>, s_password, NULL);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d"> 372</a></span> <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> {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  gchar *server = NULL;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  gint port;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>),</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  XSPICE_DEFAULT_PORT,</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  &server,</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  &port);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">switch</span> (event) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_CLOSED:</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"Disconnected from the SPICE server “%s”."</span>), server);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <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>  REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">"Disconnected from %s:%d via SPICE"</span>), server, port);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_OPENED:</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">"Connected to %s:%d via SPICE"</span>), server, port);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_AUTH:</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <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>  <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>  }<span class="keywordflow">else</span>{</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <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>  <span class="comment">// remmina_plugin_service->protocol_plugin_set_error(gp, _("Invalid password."));</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <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>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_TLS:</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"TLS connection error."</span>));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_IO:</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_LINK:</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_CONNECT:</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"Connection to the SPICE server dropped."</span>));</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  g_free(server), server = NULL;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85"> 418</a></span> <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> {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  gboolean connected;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  g_object_get(channel,</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="stringliteral">"agent-connected"</span>, &connected,</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  NULL);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span> (connected) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  remmina_plugin_service-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  remmina_plugin_service-><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>  }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438"> 434</a></span> <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> {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  gboolean ready;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  g_object_get(display, <span class="stringliteral">"ready"</span>, &ready, NULL);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span> (ready) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  g_signal_handlers_disconnect_by_func(display,</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  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>  gp);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scaleMode = remmina_plugin_service-><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>  g_object_set(display,</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="stringliteral">"scaling"</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>  <span class="stringliteral">"resize-guest"</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>  NULL);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <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>  SpiceVideoCodecType videocodec = remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"videocodec"</span>, 0);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">if</span> (videocodec) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <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>  GError *err = NULL;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  guint i;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  GArray *preferred_codecs = g_array_sized_new(FALSE, FALSE,</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keyword">sizeof</span>(gint),</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  (SPICE_VIDEO_CODEC_TYPE_ENUM_END - 1));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  g_array_append_val(preferred_codecs, videocodec);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">for</span> (i = SPICE_VIDEO_CODEC_TYPE_MJPEG; i < SPICE_VIDEO_CODEC_TYPE_ENUM_END; ++i) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">if</span> (i != videocodec) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  g_array_append_val(preferred_codecs, i);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">if</span> (!spice_display_channel_change_preferred_video_codec_types(SPICE_CHANNEL(gpdata-><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>  (gint *) preferred_codecs->data,</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  preferred_codecs->len,</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  &err)) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Could not set video-codec preference. %s"</span>, err->message);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  g_error_free(err);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  g_clear_pointer(&preferred_codecs, g_array_unref);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <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>  spice_display_channel_change_preferred_video_codec_type(SPICE_CHANNEL(gpdata-><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>  videocodec);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  spice_display_change_preferred_video_codec_type(SPICE_CHANNEL(gpdata-><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>  videocodec);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <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>  SpiceImageCompression imagecompression = remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"imagecompression"</span>, 0);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">if</span> (imagecompression) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <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>  spice_display_channel_change_preferred_compression(SPICE_CHANNEL(gpdata-><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>  imagecompression);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  spice_display_change_preferred_compression(SPICE_CHANNEL(gpdata-><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>  imagecompression);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  gtk_container_add(GTK_CONTAINER(gp), GTK_WIDGET(display));</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  gtk_widget_show(GTK_WIDGET(display));</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  remmina_plugin_service-><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>  remmina_plugin_service-><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>  }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <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> <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> {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <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> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">if</span> (gpdata-><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>  spice_display_send_keys(gpdata-><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>  keystrokes,</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  keylen,</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  SPICE_DISPLAY_KEY_EVENT_CLICK);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <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> <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> {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> </div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  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> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <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> }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da"> 543</a></span> <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> {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  gint width, height;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <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>  <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scaleMode = remmina_plugin_service-><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> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  g_object_set(gpdata-><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>  <span class="stringliteral">"scaling"</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>  <span class="stringliteral">"resize-guest"</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>  NULL);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <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>  <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>  gtk_widget_set_size_request(GTK_WIDGET(gpdata-><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>  }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <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>  g_object_get(gpdata-><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>  <span class="stringliteral">"width"</span>, &width,</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="stringliteral">"height"</span>, &height,</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  NULL);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  gtk_widget_set_size_request(GTK_WIDGET(gpdata-><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>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a"> 569</a></span> <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> {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2"> 576</a></span> <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> {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">switch</span> (feature-><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>  <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>  g_object_set(gpdata-><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>  <span class="stringliteral">"read-only"</span>,</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"viewonly"</span>, FALSE),</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  NULL);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <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>  g_object_set(gpdata-><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>  <span class="stringliteral">"auto-clipboard"</span>,</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  !remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"disableclipboard"</span>, FALSE),</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  NULL);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <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>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <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> <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> <span class="comment"> * Key - SpiceVideoCodecType (spice/enums.h)</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <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> <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> {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="stringliteral">"0"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Default"</span>),</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="stringliteral">"1"</span>, <span class="stringliteral">"mjpeg"</span>,</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="stringliteral">"2"</span>, <span class="stringliteral">"vp8"</span>,</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="stringliteral">"3"</span>, <span class="stringliteral">"h264"</span>,</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="stringliteral">"4"</span>, <span class="stringliteral">"vp9"</span>,</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="stringliteral">"5"</span>, <span class="stringliteral">"h265"</span>,</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  NULL</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> };</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> </div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <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> <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> <span class="comment"> * Key - SpiceImageCompression (spice/enums.h)</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <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> <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> {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="stringliteral">"0"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Default"</span>),</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="stringliteral">"1"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Off"</span>),</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="stringliteral">"2"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Auto GLZ"</span>),</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="stringliteral">"3"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Auto LZ"</span>),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="stringliteral">"4"</span>, <span class="stringliteral">"Quic"</span>,</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="stringliteral">"5"</span>, <span class="stringliteral">"GLZ"</span>,</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="stringliteral">"6"</span>, <span class="stringliteral">"LZ"</span>,</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="stringliteral">"7"</span>, <span class="stringliteral">"LZ4"</span>,</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  NULL</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> };</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> </div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <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> <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>  <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Disable video overlay if videos are not displayed properly.\n"</span>);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> </div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="comment">/* Array of RemminaProtocolSetting for basic settings.</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="comment"> * b) Setting name</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="comment"> * c) Setting description</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <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> <span class="comment"> * f) Setting tooltip</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <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> <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> <span class="comment"> * use following prototype:</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <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> <span class="comment"> * gpointer validator_data);</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="comment"> * gpointer key is a gchar* containing the setting's name,</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <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> <span class="comment"> * gpointer validator_data contains your passed data.</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <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> <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> {</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>, <span class="stringliteral">"server"</span>, NULL, FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>, <span class="stringliteral">"password"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"User password"</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"usetls"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Use TLS encryption"</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da">REMMINA_PROTOCOL_SETTING_TYPE_FILE</a>, <span class="stringliteral">"cacert"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Server CA certificate"</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">"sharefolder"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Share folder"</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  { <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> };</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> <span class="comment">/* Array of RemminaProtocolSetting for advanced settings.</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="comment"> * b) Setting name</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> <span class="comment"> * c) Setting description</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <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> <span class="comment"> * f) Setting Tooltip</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> <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> <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> {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <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>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a>, <span class="stringliteral">"videocodec"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Preferred video codec"</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>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"disablegstvideooverlay"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Turn off GStreamer overlay"</span>), FALSE, NULL, disablegstvideooverlay_tooltip},</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <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>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a>, <span class="stringliteral">"imagecompression"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Preferred image compression"</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> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"disableclipboard"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"No clipboard sync"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"disablepasswordstoring"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Forget passwords after use"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"enableaudio"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Enable audio channel"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"sharesmartcard"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Share smart card"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"viewonly"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"View only"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  { <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> };</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> </div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="comment">/* Array for available features.</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <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> <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> {</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  { <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">"viewonly"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"View only"</span>)},</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  { <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">"disableclipboard"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"No clipboard sync"</span>)},</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  { <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">"Send Ctrl+Alt+Delete"</span>), NULL, NULL},</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  { <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">"Select USB devices for redirection"</span>), NULL, NULL},</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  { <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>  { <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>  { <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> };</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> </div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> </div><div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a394f5bc2fd2f06247702ffbf27a94998"> 725</a></span> <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> {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <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>  <span class="stringliteral">"SPICE"</span>, <span class="comment">// Name</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"SPICE - Simple Protocol for Independent Computing Environments"</span>), <span class="comment">// Description</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  GETTEXT_PACKAGE, <span class="comment">// Translation domain</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  VERSION, <span class="comment">// Version number</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="stringliteral">"org.remmina.Remmina-spice-symbolic"</span>, <span class="comment">// Icon for normal connection</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="stringliteral">"org.remmina.Remmina-spice-ssh-symbolic"</span>, <span class="comment">// Icon for SSH connection</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  NULL, <span class="comment">// No screenshot support available</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  NULL, <span class="comment">// RCW map event</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  NULL <span class="comment">// RCW unmap event</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> };</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> </div><div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875"> 749</a></span> <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>  gpointer *src, *dst;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> </div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  dst = src = option_list;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">while</span> (*src) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">if</span> (strcmp(*src, option_to_remove) != 0) {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">if</span> (dst != src) {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  *dst = *src;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  *(dst + 1) = *(src + 1);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  dst += 2;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  src += 2;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  *dst = NULL;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> }</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <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> 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>  gboolean result = FALSE;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  GOptionContext *context;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  GOptionGroup *spiceGroup;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  gchar *spiceHelp;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> </div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  spiceGroup = spice_get_option_group();</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  context = g_option_context_new(<span class="stringliteral">"- SPICE client test application"</span>);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  g_option_context_add_group(context, spiceGroup);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  spiceHelp = g_option_context_get_help(context, FALSE, spiceGroup);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keywordflow">if</span> (g_strcmp0(spiceHelp, <span class="stringliteral">""</span>) != 0) {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  gchar **spiceHelpLines, **line;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  spiceHelpLines = g_strsplit(spiceHelp, <span class="stringliteral">"\n"</span>, -1);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">for</span> (line = spiceHelpLines; *line != NULL; ++line) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">if</span> (g_strstr_len(*line, -1, <span class="stringliteral">"spice-preferred-compression"</span>)) {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">if</span> (g_strstr_len(*line, -1, <span class="stringliteral">",lz4,"</span>)) {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  result = TRUE;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> </div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  g_strfreev(spiceHelpLines);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  g_option_context_free(context);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  g_free(spiceHelp);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> </div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> </div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> 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> <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> {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  remmina_plugin_service = service;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">"UTF-8"</span>);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <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>  <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>  <span class="keywordtype">char</span> key_str[10];</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  sprintf(key_str, <span class="stringliteral">"%d"</span>, SPICE_IMAGE_COMPRESSION_LZ4);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <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>  }</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">if</span> (!service-><a class="code" href="struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2">register_plugin</a>((<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)&remmina_plugin_spice)) {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  }</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> </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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Copyright (C) 2016-2018 Denis Ollier</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="spice__plugin_8h.html">spice_plugin.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define XSPICE_DEFAULT_PORT 5900</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <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>  <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7"> 48</a></span> <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> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <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> <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> <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> <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> <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> <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> <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> <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> <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> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <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> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <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> <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> <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> <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> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39"> 67</a></span> 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> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  gchar *str, **arr;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  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>  g_return_val_if_fail(search != NULL, NULL);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (replacement == NULL)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  replacement = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  arr = g_strsplit(<span class="keywordtype">string</span>, search, -1);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (arr != NULL && arr[0] != NULL)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  str = g_strjoinv(replacement, arr);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  str = g_strdup(<span class="keywordtype">string</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  g_strfreev(arr);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <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> <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> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <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> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  g_return_val_if_fail(gpdata != NULL, FALSE);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Opening spice session for FD: %d"</span>, fd);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> spice_session_open_fd(gpdata-><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> }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <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> <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> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <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>  g_return_val_if_fail(gpdata != NULL, FALSE);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  gint id, type;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  g_object_get(channel, <span class="stringliteral">"channel-id"</span>, &<span class="keywordtype">id</span>, <span class="stringliteral">"channel-type"</span>, &type, NULL);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  REMMINA_PLUGIN_DEBUG (<span class="stringliteral">"Opening channel %p %s %d with FD: %d"</span>, channel, g_type_name(G_OBJECT_TYPE(channel)), <span class="keywordtype">id</span>, gpdata-><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> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> spice_channel_open_fd(channel, gpdata-><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> }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb"> 115</a></span> <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> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  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>  g_object_set_data_full(G_OBJECT(gp), <span class="stringliteral">"plugin-data"</span>, gpdata, g_free);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  gpdata-><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>  g_signal_connect(gpdata-><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>  <span class="stringliteral">"channel-new"</span>,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  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>  gp);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  g_object_set(gpdata-><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>  <span class="stringliteral">"password"</span>, g_strdup(remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"password"</span>)),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="stringliteral">"read-only"</span>, remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"viewonly"</span>, FALSE),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="stringliteral">"enable-audio"</span>, remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"enableaudio"</span>, FALSE),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="stringliteral">"enable-smartcard"</span>, remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"sharesmartcard"</span>, FALSE),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="stringliteral">"shared-dir"</span>, remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"sharefolder"</span>),</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  NULL);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69">gtk_session</a> = spice_gtk_session_get(gpdata-><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>  g_object_set(gpdata-><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>  <span class="stringliteral">"auto-clipboard"</span>,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  !remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"disableclipboard"</span>, FALSE),</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  NULL);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4"> 147</a></span> <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> {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  gint port;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">const</span> gchar *cacert;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  gchar *host, *tunnel;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">/* Setup SSH tunnel if needed */</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  tunnel = remmina_plugin_service-><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> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  remmina_plugin_service-><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>  XSPICE_DEFAULT_PORT,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  &host,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  &port);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"host"</span>, host, NULL);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  g_free(host);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  g_free(tunnel);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">/* Unencrypted connection */</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (!remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"usetls"</span>, FALSE)) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"port"</span>, g_strdup_printf(<span class="stringliteral">"%i"</span>, port), NULL);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">/* TLS encrypted connection */</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">else</span>{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"tls_port"</span>, g_strdup_printf(<span class="stringliteral">"%i"</span>, port), NULL);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">/* Server CA certificate */</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  cacert = remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"cacert"</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (cacert) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"ca-file"</span>, cacert, NULL);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  spice_session_connect(gpdata-><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>  <span class="comment">/*</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="comment"> * FIXME: Add a waiting loop until the g_signal "channel-event" occurs.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <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> <span class="comment"> * otherwise FALSE should be returned.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment"> */</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb"> 217</a></span> <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> {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <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> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (gpdata-><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>  g_signal_handlers_disconnect_by_func(gpdata-><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>  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>  gp);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  g_signal_handlers_disconnect_by_func(gpdata-><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>  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>  gp);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (gpdata-><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>  spice_session_disconnect(gpdata-><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>  g_object_unref(gpdata-><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>  gpdata-><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>  remmina_plugin_service-><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>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <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>  <span class="keywordflow">if</span> (gpdata-><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>  g_hash_table_unref(gpdata-><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>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <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> <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> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db"> 249</a></span> <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> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  g_signal_stop_emission_by_name(channel, <span class="stringliteral">"gst-video-overlay"</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe"> 255</a></span> <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> {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  gint id, type;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  g_return_if_fail(gpdata != NULL);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  g_object_get(channel, <span class="stringliteral">"channel-id"</span>, &<span class="keywordtype">id</span>, <span class="stringliteral">"channel-type"</span>, &type, NULL);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  REMMINA_PLUGIN_DEBUG (<span class="stringliteral">"New spice channel %p %s %d"</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> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span> (SPICE_IS_MAIN_CHANNEL(channel)) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  gpdata-><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>  g_signal_connect(channel,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="stringliteral">"channel-event"</span>,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  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>  gp);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  g_signal_connect(channel,</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="stringliteral">"main-agent-update"</span>,</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  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>  gp);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <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>  g_signal_connect(channel,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="stringliteral">"new-file-transfer"</span>,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  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>  gp);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <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> <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>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span> (SPICE_IS_DISPLAY_CHANNEL(channel)) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  gpdata-><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>  gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a> = spice_display_new(gpdata-><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>  g_signal_connect(gpdata-><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>  <span class="stringliteral">"notify::ready"</span>,</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  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>  gp);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>(G_OBJECT(gpdata-><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> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"disablegstvideooverlay"</span>, FALSE)) {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  g_signal_connect(channel,</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="stringliteral">"gst-video-overlay"</span>,</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  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>  gp);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span> (SPICE_IS_INPUTS_CHANNEL(channel)) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"New inputs channel"</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span> (SPICE_IS_PLAYBACK_CHANNEL(channel)) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"New audio channel"</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">if</span> (remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"enableaudio"</span>, FALSE)) {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a1c88ad311d86fb0de1dc441150a7da02">audio</a> = spice_audio_get(gpdata-><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>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (SPICE_IS_USBREDIR_CHANNEL(channel)) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"New usbredir channel"</span>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (SPICE_IS_WEBDAV_CHANNEL(channel)) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"New webdav channel"</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span> (remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"sharefolder"</span>)) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  spice_channel_connect(channel);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b"> 335</a></span> <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> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  gint ret;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  gboolean disablepasswordstoring;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  gchar *s_password;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  gboolean save;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  disablepasswordstoring = remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"disablepasswordstoring"</span>, FALSE);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  ret = remmina_plugin_service-><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>  (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>  _(<span class="stringliteral">"Enter SPICE password"</span>),</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  NULL,</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"password"</span>),</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  NULL,</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  NULL);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  s_password = remmina_plugin_service-><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>  save = remmina_plugin_service-><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>  <span class="keywordflow">if</span> (save) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>, s_password);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>, NULL);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  g_object_set(gpdata-><a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">"password"</span>, s_password, NULL);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d"> 372</a></span> <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> {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  gchar *server = NULL;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  gint port;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>),</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  XSPICE_DEFAULT_PORT,</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  &server,</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  &port);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">switch</span> (event) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_CLOSED:</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"Disconnected from the SPICE server “%s”."</span>), server);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <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>  REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">"Disconnected from %s:%d via SPICE"</span>), server, port);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_OPENED:</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">"Connected to %s:%d via SPICE"</span>), server, port);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_AUTH:</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <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>  <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>  }<span class="keywordflow">else</span>{</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <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>  <span class="comment">// remmina_plugin_service->protocol_plugin_set_error(gp, _("Invalid password."));</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <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>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_TLS:</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"TLS connection error."</span>));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_IO:</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_LINK:</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_CONNECT:</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"Connection to the SPICE server dropped."</span>));</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  g_free(server), server = NULL;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85"> 418</a></span> <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> {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  gboolean connected;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  g_object_get(channel,</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="stringliteral">"agent-connected"</span>, &connected,</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  NULL);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span> (connected) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  remmina_plugin_service-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  remmina_plugin_service-><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>  }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438"> 434</a></span> <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> {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  gboolean ready;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  g_object_get(display, <span class="stringliteral">"ready"</span>, &ready, NULL);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span> (ready) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  g_signal_handlers_disconnect_by_func(display,</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  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>  gp);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scaleMode = remmina_plugin_service-><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>  g_object_set(display,</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="stringliteral">"scaling"</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>  <span class="stringliteral">"resize-guest"</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>  NULL);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <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>  SpiceVideoCodecType videocodec = remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"videocodec"</span>, 0);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">if</span> (videocodec) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <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>  GError *err = NULL;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  guint i;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  GArray *preferred_codecs = g_array_sized_new(FALSE, FALSE,</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keyword">sizeof</span>(gint),</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  (SPICE_VIDEO_CODEC_TYPE_ENUM_END - 1));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  g_array_append_val(preferred_codecs, videocodec);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">for</span> (i = SPICE_VIDEO_CODEC_TYPE_MJPEG; i < SPICE_VIDEO_CODEC_TYPE_ENUM_END; ++i) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">if</span> (i != videocodec) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  g_array_append_val(preferred_codecs, i);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">if</span> (!spice_display_channel_change_preferred_video_codec_types(SPICE_CHANNEL(gpdata-><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>  (gint *) preferred_codecs->data,</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  preferred_codecs->len,</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  &err)) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Could not set video-codec preference. %s"</span>, err->message);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  g_error_free(err);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  g_clear_pointer(&preferred_codecs, g_array_unref);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <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>  spice_display_channel_change_preferred_video_codec_type(SPICE_CHANNEL(gpdata-><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>  videocodec);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  spice_display_change_preferred_video_codec_type(SPICE_CHANNEL(gpdata-><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>  videocodec);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <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>  SpiceImageCompression imagecompression = remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"imagecompression"</span>, 0);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">if</span> (imagecompression) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <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>  spice_display_channel_change_preferred_compression(SPICE_CHANNEL(gpdata-><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>  imagecompression);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  spice_display_change_preferred_compression(SPICE_CHANNEL(gpdata-><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>  imagecompression);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  gtk_container_add(GTK_CONTAINER(gp), GTK_WIDGET(display));</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  gtk_widget_show(GTK_WIDGET(display));</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  remmina_plugin_service-><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>  remmina_plugin_service-><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>  }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <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> <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> {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <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> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">if</span> (gpdata-><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>  spice_display_send_keys(gpdata-><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>  keystrokes,</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  keylen,</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  SPICE_DISPLAY_KEY_EVENT_CLICK);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <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> <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> {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> </div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  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> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <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> }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da"> 543</a></span> <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> {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  gint width, height;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <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>  <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scaleMode = remmina_plugin_service-><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> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  g_object_set(gpdata-><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>  <span class="stringliteral">"scaling"</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>  <span class="stringliteral">"resize-guest"</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>  NULL);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <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>  <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>  gtk_widget_set_size_request(GTK_WIDGET(gpdata-><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>  }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <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>  g_object_get(gpdata-><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>  <span class="stringliteral">"width"</span>, &width,</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="stringliteral">"height"</span>, &height,</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  NULL);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  gtk_widget_set_size_request(GTK_WIDGET(gpdata-><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>  }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a"> 569</a></span> <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> {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2"> 576</a></span> <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> {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-><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> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">switch</span> (feature-><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>  <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>  g_object_set(gpdata-><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>  <span class="stringliteral">"read-only"</span>,</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"viewonly"</span>, FALSE),</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  NULL);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <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>  g_object_set(gpdata-><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>  <span class="stringliteral">"auto-clipboard"</span>,</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  !remmina_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">"disableclipboard"</span>, FALSE),</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  NULL);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <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>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <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>  <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <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> <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> <span class="comment"> * Key - SpiceVideoCodecType (spice/enums.h)</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <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> <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> {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="stringliteral">"0"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Default"</span>),</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="stringliteral">"1"</span>, <span class="stringliteral">"mjpeg"</span>,</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="stringliteral">"2"</span>, <span class="stringliteral">"vp8"</span>,</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="stringliteral">"3"</span>, <span class="stringliteral">"h264"</span>,</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="stringliteral">"4"</span>, <span class="stringliteral">"vp9"</span>,</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="stringliteral">"5"</span>, <span class="stringliteral">"h265"</span>,</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  NULL</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> };</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> </div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <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> <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> <span class="comment"> * Key - SpiceImageCompression (spice/enums.h)</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <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> <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> {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="stringliteral">"0"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Default"</span>),</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="stringliteral">"1"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Off"</span>),</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="stringliteral">"2"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Auto GLZ"</span>),</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="stringliteral">"3"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Auto LZ"</span>),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="stringliteral">"4"</span>, <span class="stringliteral">"Quic"</span>,</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="stringliteral">"5"</span>, <span class="stringliteral">"GLZ"</span>,</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="stringliteral">"6"</span>, <span class="stringliteral">"LZ"</span>,</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="stringliteral">"7"</span>, <span class="stringliteral">"LZ4"</span>,</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  NULL</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> };</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> </div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <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> <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>  <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Disable video overlay if videos are not displayed properly.\n"</span>);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> </div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="comment">/* Array of RemminaProtocolSetting for basic settings.</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="comment"> * b) Setting name</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="comment"> * c) Setting description</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <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> <span class="comment"> * f) Setting tooltip</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <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> <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> <span class="comment"> * use following prototype:</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <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> <span class="comment"> * gpointer validator_data);</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="comment"> * gpointer key is a gchar* containing the setting's name,</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <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> <span class="comment"> * gpointer validator_data contains your passed data.</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <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> <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> {</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>, <span class="stringliteral">"server"</span>, NULL, FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>, <span class="stringliteral">"password"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"User password"</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"usetls"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Use TLS encryption"</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da">REMMINA_PROTOCOL_SETTING_TYPE_FILE</a>, <span class="stringliteral">"cacert"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Server CA certificate"</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">"sharefolder"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Share folder"</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  { <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> };</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> <span class="comment">/* Array of RemminaProtocolSetting for advanced settings.</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="comment"> * b) Setting name</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> <span class="comment"> * c) Setting description</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <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> <span class="comment"> * f) Setting Tooltip</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> <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> <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> {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <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>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a>, <span class="stringliteral">"videocodec"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Preferred video codec"</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>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"disablegstvideooverlay"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Turn off GStreamer overlay"</span>), FALSE, NULL, disablegstvideooverlay_tooltip},</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <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>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a>, <span class="stringliteral">"imagecompression"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Preferred image compression"</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> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"disableclipboard"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"No clipboard sync"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"disablepasswordstoring"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Forget passwords after use"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"enableaudio"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Enable audio channel"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"sharesmartcard"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Share smart card"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">"viewonly"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"View only"</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  { <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> };</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> </div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="comment">/* Array for available features.</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <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> <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> {</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  { <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">"viewonly"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"View only"</span>)},</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  { <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">"disableclipboard"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"No clipboard sync"</span>)},</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  { <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">"Send Ctrl+Alt+Delete"</span>), NULL, NULL},</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  { <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">"Select USB devices for redirection"</span>), NULL, NULL},</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  { <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>  { <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>  { <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> };</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> </div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> </div><div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a394f5bc2fd2f06247702ffbf27a94998"> 725</a></span> <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> {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <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>  <span class="stringliteral">"SPICE"</span>, <span class="comment">// Name</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"SPICE - Simple Protocol for Independent Computing Environments"</span>), <span class="comment">// Description</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  GETTEXT_PACKAGE, <span class="comment">// Translation domain</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  VERSION, <span class="comment">// Version number</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="stringliteral">"org.remmina.Remmina-spice-symbolic"</span>, <span class="comment">// Icon for normal connection</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="stringliteral">"org.remmina.Remmina-spice-ssh-symbolic"</span>, <span class="comment">// Icon for SSH connection</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  NULL, <span class="comment">// No screenshot support available</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  NULL, <span class="comment">// RCW map event</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  NULL <span class="comment">// RCW unmap event</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> };</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> </div><div class="line"><a name="l00749"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875"> 749</a></span> <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>  gpointer *src, *dst;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> </div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  dst = src = option_list;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">while</span> (*src) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">if</span> (strcmp(*src, option_to_remove) != 0) {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">if</span> (dst != src) {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  *dst = *src;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  *(dst + 1) = *(src + 1);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  dst += 2;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  src += 2;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  *dst = NULL;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> }</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <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> 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>  gboolean result = FALSE;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  GOptionContext *context;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  GOptionGroup *spiceGroup;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  gchar *spiceHelp;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> </div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  spiceGroup = spice_get_option_group();</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  context = g_option_context_new(<span class="stringliteral">"- SPICE client test application"</span>);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  g_option_context_add_group(context, spiceGroup);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  spiceHelp = g_option_context_get_help(context, FALSE, spiceGroup);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keywordflow">if</span> (g_strcmp0(spiceHelp, <span class="stringliteral">""</span>) != 0) {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  gchar **spiceHelpLines, **line;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  spiceHelpLines = g_strsplit(spiceHelp, <span class="stringliteral">"\n"</span>, -1);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> </div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">for</span> (line = spiceHelpLines; *line != NULL; ++line) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">if</span> (g_strstr_len(*line, -1, <span class="stringliteral">"spice-preferred-compression"</span>)) {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">if</span> (g_strstr_len(*line, -1, <span class="stringliteral">",lz4,"</span>)) {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  result = TRUE;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> </div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  g_strfreev(spiceHelpLines);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  g_option_context_free(context);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  g_free(spiceHelp);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> </div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> </div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> 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> <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> {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  remmina_plugin_service = service;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">"UTF-8"</span>);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <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>  <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>  <span class="keywordtype">char</span> key_str[10];</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  sprintf(key_str, <span class="stringliteral">"%d"</span>, SPICE_IMAGE_COMPRESSION_LZ4);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <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>  }</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">if</span> (!service-><a class="code" href="struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2">register_plugin</a>((<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)&remmina_plugin_spice)) {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  }</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> </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"> </td></tr> <tr class="memitem:aeb4afc1d03afffed838149645eccc9dd"><td class="memItemLeft" align="right" valign="top">gchar * </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"> </td></tr> -<tr class="memitem:ad11e485a8fdb8af1fded85f68f4ba7c4"><td class="memItemLeft" align="right" valign="top">gboolean </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"> </td></tr> -<tr class="memitem:a58fce08bda1efaeefd8b65f6463f67c6"><td class="memItemLeft" align="right" valign="top">glong </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"> </td></tr> -<tr class="memitem:a1b13dc96ccf8ebad045f02c58eb1d005"><td class="memItemLeft" align="right" valign="top">glong </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"> </td></tr> -<tr class="memitem:a87044f758cc0e9c975b02c3f94147e06"><td class="memItemLeft" align="right" valign="top">gchar * </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"> </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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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"> </td></tr> <tr class="memitem:a41f551c6f21f4a448e4c5ec1186240fd"><td class="memItemLeft" align="right" valign="top">GtkCheckButton * </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"> </td></tr> -<tr class="memitem:aa3278e52c1e387ab37a6c384f83ad03a"><td class="memItemLeft" align="right" valign="top">GtkSwitch * </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"> </td></tr> <tr class="memitem:a86e2ecb7e448ef661c2857de7b724061"><td class="memItemLeft" align="right" valign="top">GtkComboBox * </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"> </td></tr> <tr class="memitem:a917c214ab0662ebd06db3eb7f7c47bf2"><td class="memItemLeft" align="right" valign="top">GtkComboBox * </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">◆ </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">◆ </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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Project: Remmina Plugin X2Go</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> * Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Antenore Gatta <antenore@simbiosi.org></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Copyright: 2010-2011 Vic Lee</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <span class="comment"> * 2015 Antenore Gatta</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 2016-2018 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * 2019 Mike Gabriel</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * 2021 Daniel Teichmann</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * License: GPL-2+</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> *</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> *</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"> */</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "<a class="code" href="x2go__plugin_8h.html">x2go_plugin.h</a>"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin_8h.html">common/remmina_plugin.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <gtk/gtkx.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <gdk/gdkx.h></span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <gdk/gdkwayland.h></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <X11/Xlib.h></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include <X11/XKBlib.h></span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include <X11/extensions/XKBrules.h></span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include <signal.h></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include <time.h></span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include <ctype.h></span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#define FEATURE_AVAILABLE(gpdata, feature) \</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"> gpdata->available_features ? (g_list_find_custom( \</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"> gpdata->available_features, \</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"> feature, \</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"> (GCompareFunc) g_strcmp0 \</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"> ) ? TRUE : FALSE) : FALSE</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#define FEATURE_NOT_AVAIL_STR(feature) \</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"> g_strdup_printf(_("The command-line feature '%s' is not available! Attempting " \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"> "to start PyHoca-CLI without using this feature…"), feature)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#define GET_PLUGIN_DATA(gp) \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> (RemminaPluginX2GoData*) g_object_get_data(G_OBJECT(gp), "plugin-data")</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// --------- SESSIONS ------------</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#define SET_RESUME_SESSION(gp, resume_data) \</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"> g_object_set_data_full(G_OBJECT(gp), "resume-session-data", \</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"> resume_data, \</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"> g_free)</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define GET_RESUME_SESSION(gp) \</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"> (gchar*) g_object_get_data(G_OBJECT(gp), "resume-session-data")</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <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> <span class="preprocessor">#define IS_SESSION_SELECTED(gp) \</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"> g_object_get_data(G_OBJECT(gp), "session-selected") ? TRUE : FALSE</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// We don'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> <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> <span class="preprocessor"> g_object_set_data_full(G_OBJECT(gp), "session-selected", \</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor"> is_session_selected, \</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor"> NULL)</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// -------------------</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#define REMMINA_PLUGIN_INFO(fmt, ...) \</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor"> rm_plugin_service->_remmina_info("[%s] " fmt, \</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#define REMMINA_PLUGIN_MESSAGE(fmt, ...) \</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor"> rm_plugin_service->_remmina_message("[%s] " fmt, \</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define REMMINA_PLUGIN_DEBUG(fmt, ...) \</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor"> rm_plugin_service->_remmina_debug(__func__, "[%s] " fmt, \</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#define REMMINA_PLUGIN_WARNING(fmt, ...) \</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor"> rm_plugin_service->_remmina_warning(__func__, "[%s] " fmt, \</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#define REMMINA_PLUGIN_AUDIT(fmt, ...) \</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor"> rm_plugin_service->_remmina_audit(__func__, fmt, ##__VA_ARGS__)</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#define REMMINA_PLUGIN_ERROR(fmt, ...) \</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor"> rm_plugin_service->_remmina_error(__func__, "[%s] " fmt, \</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#define REMMINA_PLUGIN_CRITICAL(fmt, ...) \</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor"> rm_plugin_service->_remmina_critical(__func__, "[%s] " fmt, \</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#define GET_PLUGIN_STRING(value) \</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor"> g_strdup(rm_plugin_service->file_get_string(remminafile, value))</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#define GET_PLUGIN_PASSWORD(value) \</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor"> GET_PLUGIN_STRING(value)</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#define GET_PLUGIN_INT(value, default_value) \</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor"> rm_plugin_service->file_get_int(remminafile, value, default_value)</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define GET_PLUGIN_BOOLEAN(value) \</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor"> rm_plugin_service->file_get_int(remminafile, value, FALSE)</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b"> 136</a></span> <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> </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> <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>  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>  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> </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>  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> </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>  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>  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>  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> </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>  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> </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>  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> </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>  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> } <a class="code" href="x2go__plugin_8c.html#a37d3729bb8c4dbd3be32eeea7d04c7d5">RemminaPluginX2GoData</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </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> <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>  <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>  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>  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>  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>  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> } <a class="code" href="x2go__plugin_8c.html#ab0e7b0c28fbb5ac24d7ed481250494b4">X2GoCustomUserData</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165"> 174</a></span> <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="comment">// Following str2int code was adapted from Stackoverflow:</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <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> <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>  <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>  <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>  <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>  <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>  <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> } <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> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645"> 217</a></span> <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> {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  gchar *end;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span> (!s || !out || base <= 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> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span> (s[0] == <span class="charliteral">'\0'</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> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  errno = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  glong l = strtol(s, &end, base);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <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>  <span class="keywordflow">if</span> (l > INT_MAX || (errno == ERANGE && 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>  <span class="keywordflow">if</span> (l < INT_MIN || (errno == ERANGE && 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>  <span class="keywordflow">if</span> (*end != <span class="charliteral">'\0'</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> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  *out = l;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <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> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="struct___dialog_data.html"> 267</a></span> <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> {</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a"> 269</a></span>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <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>  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>  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> };</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa"> 290</a></span> <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> {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not initialized!"</span>)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  ));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <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-><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>  <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-><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> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (ddata) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// Can't check type, flags or buttons</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// because they are enums and '0' is a valid value</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">if</span> (!ddata->title || !ddata->message) {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Broken `DialogData`! Aborting…"</span>));</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Can't retrieve `DialogData`! Aborting…"</span>));</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"`DialogData` checks passed. Now showing dialog…"</span>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  GtkWidget* widget_gtk_dialog = NULL;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (ddata->dialog_factory_func != NULL) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Calling *custom* dialog factory function…"</span>);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  GCallback dialog_factory_func = G_CALLBACK(ddata->dialog_factory_func);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  gpointer dialog_factory_data = ddata->dialog_factory_data;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <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>  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>  dialog_factory_func)(custom_data, dialog_factory_data);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  widget_gtk_dialog = gtk_message_dialog_new(ddata->parent,</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  ddata->flags,</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  ddata->type,</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  ddata->buttons,</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="stringliteral">"%s"</span>, ddata->title);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  gtk_message_dialog_format_secondary_text(</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  GTK_MESSAGE_DIALOG(widget_gtk_dialog), <span class="stringliteral">"%s"</span>, ddata->message);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">if</span> (!widget_gtk_dialog) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"Error! Aborting."</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span> (ddata->callbackfunc) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  g_signal_connect_swapped(G_OBJECT(widget_gtk_dialog), <span class="stringliteral">"response"</span>,</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  G_CALLBACK(ddata->callbackfunc),</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  custom_data);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  g_signal_connect(G_OBJECT(widget_gtk_dialog), <span class="stringliteral">"response"</span>,</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  G_CALLBACK(gtk_widget_destroy),</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  NULL);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  gtk_widget_show_all(widget_gtk_dialog);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// Delete ddata object and reference 'dialog-data' in gp.</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  g_object_set_data(G_OBJECT(gp), <span class="stringliteral">"dialog-data"</span>, NULL);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05"> 367</a></span> <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e"> 382</a></span> <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> {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <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>  <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>  <span class="keywordflow">return</span> parent;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span> (GTK_IS_BIN(parent)) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  GtkWidget *child = gtk_bin_get_child(GTK_BIN(parent));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <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>  }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span> (GTK_IS_CONTAINER(parent)) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  GList *children = gtk_container_get_children(GTK_CONTAINER(parent));</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">while</span> (children != NULL) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  GtkWidget *widget = <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(children->data, name);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span> (widget != NULL) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> widget;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  children = g_list_next(children);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a"> 419</a></span> <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>  GtkTreePath *path,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  GtkTreeViewColumn *column,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <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> {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not initialized!"</span>)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  ));</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <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-><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>  <span class="comment">// dialog_data (unused)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">// connect_data (unused)</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  GtkWidget* dialog = GTK_WIDGET(custom_data-><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> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  gchar *session_id;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  GtkTreeIter iter;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  GtkTreeModel *model = gtk_tree_view_get_model(treeview);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span> (gtk_tree_model_get_iter(model, &iter, path)) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  gtk_tree_model_get(GTK_TREE_MODEL(model), &iter,</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>, &session_id, -1);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// Silent bail out.</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">if</span> (!session_id || strlen(session_id) <= 0) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <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>  <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>  <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>  SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  gtk_widget_hide(GTK_WIDGET(dialog));</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6"> 471</a></span> <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>  gchar* return_char = NULL;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">switch</span> (session_property) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <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>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a">SESSION_DISPLAY</a>: return_char = g_strdup(_(<span class="stringliteral">"X Display"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b">SESSION_STATUS</a>: return_char = g_strdup(_(<span class="stringliteral">"Status"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <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">"Session ID"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <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">"Create date"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <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">"Suspended since"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <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">"Agent PID"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961">SESSION_USERNAME</a>: return_char = g_strdup(_(<span class="stringliteral">"Username"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a">SESSION_HOSTNAME</a>: return_char = g_strdup(_(<span class="stringliteral">"Hostname"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817">SESSION_COOKIE</a>: return_char = g_strdup(_(<span class="stringliteral">"Cookie"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <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">"Graphic port"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <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">"SND port"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <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">"SSHFS port"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <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">"Visible"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">return</span> return_char;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1"> 509</a></span> <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>  GList *sessions_list)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><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>  !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> || !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not initialized!"</span>)</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  ));</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <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-><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> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  if (!ddata || !sessions_list || !ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>) {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Couldn't retrieve valid `DialogData` or "</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="stringliteral">"`sessions_list`! Aborting…"</span>));</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  GtkWidget *widget_gtk_dialog = NULL;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  widget_gtk_dialog = gtk_dialog_new_with_buttons(ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>, ddata-><a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a>,</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  ddata-><a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a>,</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="comment">// TRANSLATORS: Stick to x2goclient's translation for terminate.</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  _(<span class="stringliteral">"_Terminate"</span>),</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <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>  <span class="comment">// TRANSLATORS: Stick to x2goclient's translation for resume.</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  _(<span class="stringliteral">"_Resume"</span>),</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <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>  _(<span class="stringliteral">"_New"</span>),</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <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>  NULL);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  GtkWidget *button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  GTK_DIALOG(widget_gtk_dialog),</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <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>  <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>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's way of translating.</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  gtk_widget_set_tooltip_text(button, _(<span class="stringliteral">"Terminating X2Go sessions can take a moment."</span>));</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor"> #define DEFAULT_DIALOG_WIDTH 720</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <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> </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  gtk_widget_set_size_request(GTK_WIDGET(widget_gtk_dialog),</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_HEIGHT);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  gtk_window_set_default_size(GTK_WINDOW(widget_gtk_dialog),</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_HEIGHT);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  gtk_window_set_resizable(GTK_WINDOW(widget_gtk_dialog), TRUE);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="comment">//gtk_widget_show(scrolled_window);</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  GTK_DIALOG(widget_gtk_dialog))</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  ), GTK_WIDGET(scrolled_window), TRUE, TRUE, 5);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window),</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  GTK_POLICY_AUTOMATIC,</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  GTK_POLICY_AUTOMATIC);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  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> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="comment">// First to last in SESSION_PROPERTIES.</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">for</span> (gint i = 0; i < <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>  <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>  <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>  <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>  <span class="comment">// Especially in the session parser.</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <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>  types[i] = G_TYPE_BOOLEAN;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  types[i] = G_TYPE_STRING;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="comment">// create tree view</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  GtkListStore *store = gtk_list_store_newv(SESSION_NUM_PROPERTIES, types);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  GtkTreeModelFilter *filter = GTK_TREE_MODEL_FILTER(</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  gtk_tree_model_filter_new(GTK_TREE_MODEL(store),</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  NULL)</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  );</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  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> </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  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>  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>  gtk_widget_set_size_request(tree_view, -1, 300);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <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>  gtk_widget_set_name(GTK_WIDGET(tree_view), <span class="stringliteral">"session_chooser_treeview"</span>);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> </div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="comment">// create list view columns</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  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>  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>  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>  gtk_widget_show (tree_view);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  gtk_container_add (GTK_CONTAINER(scrolled_window), tree_view);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  GtkTreeViewColumn *tree_view_col = NULL;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  GtkCellRenderer *cell_renderer = NULL;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  gchar *header_title = NULL;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> </div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// First to last in SESSION_PROPERTIES.</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">for</span> (guint i = 0; i < <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>  <span class="comment">// Do not display SESSION_DIALOG_IS_VISIBLE.</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <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> </div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  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>  <span class="keywordflow">if</span> (!header_title) {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  _(<span class="stringliteral">"Internal error: %s"</span>), g_strdup_printf(</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  _(<span class="stringliteral">"Unknown property '%i'"</span>), i</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  )));</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  header_title = g_strdup_printf(_(<span class="stringliteral">"Unknown property '%i'"</span>), i);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  tree_view_col = gtk_tree_view_column_new();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  gtk_tree_view_column_set_title(tree_view_col, header_title);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  gtk_tree_view_column_set_clickable(tree_view_col, FALSE);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  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>  gtk_tree_view_column_set_resizable(tree_view_col, TRUE);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  cell_renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  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>  gtk_tree_view_column_add_attribute(tree_view_col, cell_renderer, <span class="stringliteral">"text"</span>, i);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  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>  }</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  GList *elem = NULL;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  GtkTreeIter iter;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">for</span> (elem = sessions_list; elem; elem = elem->next) {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  gchar** <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a> = (gchar**) elem->data;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  g_assert(session != NULL);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> </div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  gtk_list_store_append(store, &iter);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> </div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">for</span> (gint i = 0; i < <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>  gchar* <span class="keyword">property</span> = session[i];</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  GValue a = G_VALUE_INIT;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <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> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <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>  g_value_init(&a, G_TYPE_BOOLEAN);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  g_assert(G_VALUE_HOLDS_BOOLEAN(&a) && <span class="stringliteral">"GValue does not "</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="stringliteral">"hold a boolean!"</span>);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="comment">// Default is to show every new session.</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  g_value_set_boolean(&a, TRUE);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  g_value_init(&a, G_TYPE_STRING);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  g_assert(G_VALUE_HOLDS_STRING(&a) && <span class="stringliteral">"GValue does not "</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="stringliteral">"hold a string!"</span>);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  g_value_set_static_string (&a, property);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  }</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> </div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  gtk_list_store_set_value(store, &iter, i, &a);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> </div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="comment"> * connect_data -> connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="comment"> * opt1 -> dialog widget (GtkWidget*)</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="comment">// everything else is already initialized.</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  custom_data-><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> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  g_signal_connect(tree_view, <span class="stringliteral">"row-activated"</span>,</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  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>  custom_data);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> </div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">return</span> widget_gtk_dialog;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> </div><div class="line"><a name="l00702"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358"> 702</a></span> <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>  GtkTreeView* treeview)</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> {</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="comment">//REMMINA_PLUGIN_DEBUG("Function entry.");</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  GtkTreeModel *return_model = NULL;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">if</span> (!treeview && dialog) {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  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>  <span class="stringliteral">"session_chooser_treeview"</span>);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> </div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">if</span> (!treeview_new) {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  _(<span class="stringliteral">"Couldn't find child GtkTreeView of "</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="stringliteral">"session chooser dialog."</span>)</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  ));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> </div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (treeview) {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  return_model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  _(<span class="stringliteral">"Neither the 'dialog' nor 'treeview' parameters are initialized! "</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="stringliteral">"At least one of them must be given."</span>)</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  ));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  _(<span class="stringliteral">"Could not obtain \"GtkTreeModelFilter*\" of the session chooser dialog, "</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="stringliteral">"for unknown reason."</span>)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  ));</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> </div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">return</span> GTK_TREE_MODEL_FILTER(return_model);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div><div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3"> 753</a></span> <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> {</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> </div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  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>  <span class="stringliteral">"session_chooser_treeview"</span>);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">if</span> (!treeview) {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  _(<span class="stringliteral">"Couldn't find child GtkTreeView of session chooser dialog."</span>)</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  ));</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  }</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> </div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="keywordflow">if</span> (!selection) {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  _(<span class="stringliteral">"Couldn't get currently selected row (session)!"</span>)</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  ));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  }</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  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>  NULL, GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <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> </div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  GtkTreeModel *filter_model = GTK_TREE_MODEL(filter);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  g_assert(filter_model && <span class="stringliteral">"Could not cast 'filter' to a GtkTreeModel!"</span>);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  GList *selected_rows = gtk_tree_selection_get_selected_rows(selection, &filter_model);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> </div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="comment">// We only support single selection.</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  gint selected_rows_num = gtk_tree_selection_count_selected_rows(selection);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">if</span> (selected_rows_num != 1) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  _(<span class="stringliteral">"Internal error: %s"</span>), g_strdup_printf(</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  _(<span class="stringliteral">"Exactly one session should be selectable but '%i' rows "</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="stringliteral">"(sessions) are selected."</span>),</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  selected_rows_num</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  )));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> </div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="comment">// This would be very dangerous (we didn't check for NULL) if we hadn't just</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="comment">// checked that only one row is selected.</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  GtkTreePath *path = selected_rows->data;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> </div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <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>  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> </div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">return</span> path;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> }</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> </div><div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7"> 817</a></span> <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>  gint property_index,</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  GtkTreePath *row)</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> {</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="comment">//REMMINA_PLUGIN_DEBUG("Function entry.");</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  GValue ret_value = G_VALUE_INIT;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> </div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">if</span> (!row) {</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  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>  <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>  row = selected_row;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  }</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  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>  GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <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> </div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  GtkTreeIter iter;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  gboolean success = gtk_tree_model_get_iter(model, &iter, row);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keywordflow">if</span> (!success) {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  _(<span class="stringliteral">"Failed to fill 'GtkTreeIter'."</span>)</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  ));</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> ret_value;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> </div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  GValue <span class="keyword">property</span> = G_VALUE_INIT;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  gtk_tree_model_get_value(model, &iter, property_index, &property);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> </div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">return</span> property;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <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> <span class="comment"> GtkTreeIter *iter, GtkWidget *dialog)</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="comment">{</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> <span class="comment"> //REMMINA_PLUGIN_DEBUG("Function entry.");</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="comment"></span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="comment"> g_debug(_("Properties for session with path '%s':"), gtk_tree_path_to_string(path));</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> <span class="comment"> for (guint i = 0; i < SESSION_NUM_PROPERTIES; i++) {</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="comment"> GValue property = G_VALUE_INIT;</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> <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> <span class="comment"></span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <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> <span class="comment"> g_assert(display_name && "Couldn't get display name for a property!");</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> <span class="comment"></span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="comment"> if (i == SESSION_DIALOG_IS_VISIBLE) {</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="comment"> g_assert(G_VALUE_HOLDS_BOOLEAN(&property) && "GValue does not "</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="comment"> "hold a boolean!");</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> <span class="comment"> g_debug("\t%s: '%s'", display_name,</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="comment"> g_value_get_boolean(&property) ? "TRUE" : "FALSE");</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="comment"> } else {</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="comment"> g_assert(G_VALUE_HOLDS_STRING(&property) && "GValue does not "</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="comment"> "hold a string!");</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="comment"> g_debug("\t%s: '%s'", display_name, g_value_get_string(&property));</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="comment"> }</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="comment"> }</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="comment">}*/</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> </div><div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67"> 898</a></span> <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>  GError** error, gchar** env)</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">if</span> (!argv) {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  _(<span class="stringliteral">"parameter 'argv' is 'NULL'."</span>)</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  );</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  }</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> </div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">if</span> (!error) {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="comment">// Can't report error message back since 'error' is NULL.</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  _(<span class="stringliteral">"parameter 'error' is 'NULL'."</span>)</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  ));</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  }</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">if</span> (!env || !env[0]) {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  _(<span class="stringliteral">"parameter 'env' is either invalid or uninitialized."</span>)</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  );</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  gint exit_code = 0;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  gchar *standard_out;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="comment">// Just supresses pyhoca-cli's help message when pyhoca-cli's version is too old.</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  gchar *standard_err;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  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>  NULL, &standard_out, &standard_err,</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  &exit_code, error);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> </div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Started PyHoca-CLI with the following arguments:"</span>));</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <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>  <span class="keywordflow">for</span> (gint i = 0; i < argc - 1; i++) {</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  gchar* curr_arg = argv[i];</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> </div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keywordflow">if</span> (g_str_equal(curr_arg, <span class="stringliteral">"--password"</span>) ||</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  g_str_equal(curr_arg, <span class="stringliteral">"--ssh-passphrase"</span>)) {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  g_printf(<span class="stringliteral">"%s "</span>, curr_arg);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  g_printf(<span class="stringliteral">"XXXXXX "</span>);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  g_free(curr_arg);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  g_free(argv[++i]);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  g_printf(<span class="stringliteral">"%s "</span>, curr_arg);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  g_free(curr_arg);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  }</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  }</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  g_printf(<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> </div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="comment">/* TOO VERBOSE: */</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="comment">/*</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("%s", _("Started PyHoca-CLI with the "</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="comment"> "following environment variables:"));</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("%s", g_strjoinv("\n", env));</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <span class="comment"> */</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordflow">if</span> (standard_err && strlen(standard_err) > 0) {</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">if</span> (g_str_has_prefix(standard_err, <span class="stringliteral">"pyhoca-cli: error: a socket error "</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="stringliteral">"occured while establishing the connection:"</span>)) {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="comment">// Log error into GUI.</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  _(<span class="stringliteral">"The necessary PyHoca-CLI process has encountered a "</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="stringliteral">"internet connection problem."</span>)</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  );</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> </div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="comment">// Log error into debug window and stdout</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s:\n%s"</span>, errmsg, standard_err);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  _(<span class="stringliteral">"Could not start "</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="stringliteral">"PyHoca-CLI:\n%s"</span>),</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  standard_err</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  );</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!success_ret || (*error) || strlen(standard_out) <= 0 || exit_code) {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">if</span> (!(*error)) {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  _(<span class="stringliteral">"An unknown error occured while trying "</span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="stringliteral">"to start PyHoca-CLI. Exit code: %i"</span>),</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  exit_code);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  _(<span class="stringliteral">"An unknown error occured while trying to start "</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="stringliteral">"PyHoca-CLI. Exit code: %i. Error: '%s'"</span>),</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  exit_code, (*error)->message);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  }</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> </div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">return</span> standard_out;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> }</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div><div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="struct___connection_data.html"> 1016</a></span> <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>  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>  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>  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>  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>  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> };</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> </div><div class="line"><a name="l01036"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6"> 1036</a></span> <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>  gboolean value,</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  GtkDialog *dialog) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> </div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keywordflow">if</span> (!path || !dialog) {</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  _(<span class="stringliteral">"Neither the 'path' nor 'dialog' parameters are initialized."</span>)</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  ));</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  }</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  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>  GTK_WIDGET(dialog), NULL);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> </div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <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> </div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  GtkTreeIter iter;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">if</span> (!gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path)) {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  _(<span class="stringliteral">"GtkTreePath 'path' describes a non-existing row!"</span>)</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  ));</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  }</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> </div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <span class="comment">// Make session either visible or invisible.</span></div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  gtk_list_store_set(GTK_LIST_STORE(model), &iter,</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <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> </div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="comment">// Update row.</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  gtk_tree_model_row_changed(GTK_TREE_MODEL(model), path, &iter);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> </div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="comment">/* Get IS_VISIBLE flag of a session. */</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="comment">// GValue ret_value = G_VALUE_INIT;</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <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>  <span class="comment">// SESSION_DIALOG_IS_VISIBLE,</span></div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <span class="comment">// path);</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="comment">// g_debug("Is visible: %s", g_value_get_boolean(&ret_value) ? "TRUE" : "FALSE");</span></div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> </div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  GtkWidget *term_button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  GTK_DIALOG(dialog),</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <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>  GtkWidget *resume_button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  GTK_DIALOG(dialog),</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <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> </div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <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>  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>  <span class="keywordflow">if</span> (rows_amount <= 0) {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  gtk_widget_set_sensitive(term_button, FALSE);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  gtk_widget_set_sensitive(resume_button, FALSE);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  gtk_widget_set_sensitive(term_button, TRUE);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  gtk_widget_set_sensitive(resume_button, TRUE);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  }</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> </div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="comment">// Success, yay!</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> }</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div><div class="line"><a name="l01102"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb"> 1102</a></span> <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>  <span class="comment">/* Check connect_data. */</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keywordflow">if</span> (!connect_data ||</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  !connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> ||</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  !connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> ||</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  strlen(connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>) <= 0 ||</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  strlen(connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>) <= 0)</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  {</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  _(<span class="stringliteral">"'Invalid connection data.'"</span>)</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  ));</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> </div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordflow">if</span> (!connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> && (!connect_data-><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>  strlen(connect_data-><a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>) <= 0)) {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  _(<span class="stringliteral">"'Invalid connection data.'"</span>)</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  ));</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> </div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> }</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> </div><div class="line"><a name="l01145"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9"> 1145</a></span> <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> {</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> </div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><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>  !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> || !custom_data-><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>  !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> || !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not fully initialized!"</span>)</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  ));</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> </div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  }</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> </div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="comment">// Extract data passed by X2GoCustomUserData *custom_data.</span></div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(custom_data-><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>  <span class="comment">//struct _DialogData *ddata = (struct _DialogData*) custom_data->dialog_data;</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <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-><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>  GtkTreePath* selected_row = (GtkTreePath*) custom_data-><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>  GtkDialog *dialog = GTK_DIALOG(custom_data-><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> </div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  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>  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>  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>  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>  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>  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>  <span class="keywordflow">if</span> (valid) {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">if</span> (connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>) password = connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordflow">if</span> (connect_data-><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>  ssh_privatekey = connect_data-><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> </div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="keywordflow">if</span> (connect_data-><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>  ssh_passphrase = connect_data-><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>  }</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  }</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> </div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  host = connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  username = connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  }</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> </div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  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>  <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>  selected_row);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  <span class="comment">// error message was handled already.</span></div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keywordflow">if</span> (!G_VALUE_HOLDS_STRING(&value)) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keyword">const</span> gchar *session_id = g_value_get_string(&value);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> </div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="comment">// We will now start pyhoca-cli with only the '--terminate $SESSION_ID' option.</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="comment">// (and of course auth related stuff)</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  gchar *argv[50];</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  gint argc = 0;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  argv[argc++] = g_strdup(<span class="stringliteral">"pyhoca-cli"</span>);</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> </div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--server"</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, host);</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> </div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"USERNAME"</span>)) {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-u"</span>);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  <span class="keywordflow">if</span> (username) {</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, username);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, g_get_user_name());</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  }</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"USERNAME"</span>));</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  }</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> </div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <span class="keywordflow">if</span> (password && FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"PASSWORD"</span>)) {</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"AUTH_ATTEMPTS"</span>)) {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--auth-attempts"</span>);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%i"</span>, 0);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"AUTH_ATTEMPTS"</span>));</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  }</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <span class="keywordflow">if</span> (strlen(password) > 0) {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--force-password"</span>);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--password"</span>);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, password);</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  }</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"PASSWORD"</span>));</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  }</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> </div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"TERMINATE"</span>)) {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--terminate"</span>);</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, session_id);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"TERMINATE"</span>));</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  }</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> </div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"NON_INTERACTIVE"</span>)) {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--non-interactive"</span>);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"NON_INTERACTIVE"</span>));</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  }</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> </div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PRIVKEY"</span>)) {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keywordflow">if</span> (ssh_privatekey && !g_str_equal(ssh_privatekey, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-privkey"</span>);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_privatekey);</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> </div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="keywordflow">if</span> (ssh_passphrase && !g_str_equal(ssh_passphrase, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PASSPHRASE"</span>)) {</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-passphrase"</span>);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_passphrase);</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PASSPHRASE"</span>));</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  }</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  }</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  }</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PRIVKEY"</span>));</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  }</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> </div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  argv[argc++] = NULL;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> </div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  GError* error = NULL;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  gchar** envp = g_get_environ();</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  <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="l01272"></a><span class="lineno"> 1272</span>  g_strfreev(envp);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> </div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  gchar *err_msg = g_strdup_printf(</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  _(<span class="stringliteral">"An error occured while trying to terminate X2Go session '%s':\n%s"</span>),</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  session_id,</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  error->message</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  );</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> </div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, err_msg);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> </div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <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>  err_ddata-><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>  err_ddata-><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>  err_ddata-><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>  err_ddata-><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>  err_ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">"An error occured."</span>);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  err_ddata-><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>  <span class="comment">// We don't need the response.</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  err_ddata-><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>  <span class="comment">// We don't need a custom dialog either.</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  err_ddata-><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>  err_ddata-><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> </div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> <span class="comment"> */</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  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> </div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="comment">// Too verbose:</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <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>  <span class="comment">// GTK_TREE_MODEL_FILTER(filter));</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <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>  <span class="comment">// rmplugin_x2go_dump_session_properties, dialog);</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <span class="comment">// Set row visible again since we couldn't terminate the session.</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <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>  dialog)) {</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  }</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  }</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span> }</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> </div><div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479"> 1339</a></span> <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>  gint response_id,</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  GtkDialog *<span class="keyword">self</span>)</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> {</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-><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>  !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not initialized!"</span>)</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  ));</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> </div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  }</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <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-><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> </div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  <span class="comment">// Don'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>  <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>  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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"The user explicitly requested a new session. "</span></div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  <span class="stringliteral">"Creating a new session…"</span>);</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> </div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <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>  <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>  <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>  SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  gtk_widget_destroy(GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> </div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  }</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> </div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  <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>  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>  GTK_WIDGET(<span class="keyword">self</span>),</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  <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>  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>  );</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> </div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  <span class="comment">// error message was handled already.</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  <span class="keywordflow">if</span> (!G_VALUE_HOLDS_STRING(&value)) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> </div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  gchar *session_id = (gchar*) g_value_get_string(&value);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> </div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  <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>  <span class="keywordflow">if</span> (!session_id || strlen(session_id) <= 0) {</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  REMMINA_PLUGIN_DEBUG(</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  <span class="stringliteral">"%s"</span>,</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  _(<span class="stringliteral">"Couldn't get session ID from session chooser dialog."</span>)</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  );</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> </div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  _(<span class="stringliteral">"Resuming session: '%s'"</span>),</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  session_id</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  ));</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  }</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  } <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>  <span class="keywordflow">if</span> (!session_id || strlen(session_id) <= 0) {</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  REMMINA_PLUGIN_DEBUG(</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  <span class="stringliteral">"%s"</span>,</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  _(<span class="stringliteral">"Couldn't get session ID from session chooser dialog."</span>)</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  );</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  _(<span class="stringliteral">"Terminating session: '%s'"</span>),</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  session_id</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  ));</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  }</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  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>  GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  <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> </div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  <span class="comment">// Actually set row invisible.</span></div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  <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>  <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  }</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> </div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> <span class="comment"> * connect_data -> connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> <span class="comment"> * opt1 -> selected row (GtkTreePath*)</span></div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> <span class="comment"> * opt2 -> session selection dialog (GtkDialog*)</span></div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> <span class="comment"> */</span></div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  <span class="comment">// everything else is already initialized.</span></div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  <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>  g_thread_new(<span class="stringliteral">"terminate-session-thread"</span>,</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  (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>  custom_data);</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> </div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  <span class="comment">// Dialog should stay open.</span></div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"User clicked dialog away. "</span></div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  <span class="stringliteral">"Creating a new session then."</span>);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  }</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> </div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  <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>  <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>  <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>  SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> </div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  gtk_widget_destroy(GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> </div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> }</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> </div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> <span class="preprocessor">#define RMPLUGIN_X2GO_FEATURE_GTKSOCKET 1</span></div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> </div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <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> <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> </div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> <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> <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> <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> <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> <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> </div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <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> <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> {</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>  <span class="keyword">enum</span> { FUNC_GTK_SOCKET_ADD_ID } func;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> </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>  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>  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> </div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  <span class="comment">/* Mutex for thread synchronization */</span></div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  pthread_mutex_t mu;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  <span class="comment">/* Flag to catch cancellations */</span></div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  gboolean cancelled;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> };</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> </div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1"> 1486</a></span> <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> {</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <span class="keywordflow">if</span> (!d-><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>  <span class="keywordflow">switch</span> (d-><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>  <span class="keywordflow">case</span> FUNC_GTK_SOCKET_ADD_ID:</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  gtk_socket_add_id(d-><a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>, d-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  }</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  pthread_mutex_unlock(&d-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  <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>  g_free(d);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  }</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> }</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span> </div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span> </div><div class="line"><a name="l01504"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49"> 1504</a></span> <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> {</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <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>  d-><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> }</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> </div><div class="line"><a name="l01511"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53"> 1511</a></span> <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> {</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>  d-><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>  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>  pthread_mutex_init(&d-><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>  pthread_mutex_lock(&d-><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>  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> </div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  pthread_mutex_lock(&d->mu);</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span> </div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  pthread_cleanup_pop(0);</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  pthread_mutex_unlock(&d->mu);</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>  pthread_mutex_destroy(&d->mu);</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> }</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> </div><div class="line"><a name="l01527"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43"> 1527</a></span> <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> {</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> </div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>  <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> </div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>  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>  d-><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>  d-><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>  d-><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> </div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  <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>  g_free(d);</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> }</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> <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> </div><div class="line"><a name="l01543"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d"> 1543</a></span> <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> {</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  gint i;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  gboolean already_seen = FALSE;</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  pthread_mutex_lock(&<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>  <span class="keywordflow">for</span> (i = 0; i < <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>->len; i++) {</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  <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>  already_seen = TRUE;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Window of X2Go Agent with ID [0x%lx] seen already."</span>,</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  window_id);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  }</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  }</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> </div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <span class="keywordflow">if</span> (already_seen) {</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>  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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Forgetting about window of X2Go Agent with ID [0x%lx]…"</span>,</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  window_id);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  }</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span> </div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  pthread_mutex_unlock(&<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> }</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span> </div><div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a"> 1572</a></span> <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> {</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  gchar *server;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  gint port;</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span> </div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = rm_plugin_service-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>),</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  22,</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  &server,</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  &port);</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> </div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">"Disconnected from %s:%d via X2Go"</span>), server, port);</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  g_free(server), server = NULL;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> </div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <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>  <span class="keywordflow">if</span> (gpdata == NULL) {</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Exiting since gpdata is already 'NULL'…"</span>);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  }</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> </div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  <span class="keywordflow">if</span> (gpdata-><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>  pthread_cancel(gpdata-><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>  <span class="keywordflow">if</span> (gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>) pthread_join(gpdata-><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>  }</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span> </div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  <span class="keywordflow">if</span> (gpdata-><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>  <a class="code" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d">rmplugin_x2go_remove_window_id</a>(gpdata-><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>  }</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span> </div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  <span class="keywordflow">if</span> (gpdata-><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>  kill(gpdata-><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>  g_spawn_close_pid(gpdata-><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>  gpdata-><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>  }</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> </div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>  <span class="keywordflow">if</span> (gpdata-><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>  XSetErrorHandler(gpdata-><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>  XCloseDisplay(gpdata-><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>  gpdata-><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>  }</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> </div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  g_object_steal_data(G_OBJECT(gp), <span class="stringliteral">"plugin-data"</span>);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  rm_plugin_service-><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> </div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> }</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> </div><div class="line"><a name="l01621"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321"> 1621</a></span> <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> {</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  <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> </div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> </div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>  <span class="keywordflow">if</span> (gpdata-><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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Doing nothing since the plugin is already disconnected."</span>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  }</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> </div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>  <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> </div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>  <span class="comment">// Try again.</span></div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> }</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> </div><div class="line"><a name="l01639"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee"> 1639</a></span> <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>  gint status,</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  <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> {</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> </div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>  <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>  <span class="keywordflow">if</span> (!gpdata) {</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Doing nothing as the disconnection "</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>  <span class="stringliteral">"has already been handled."</span>);</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  }</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span> </div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>  <span class="keywordflow">if</span> (gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> <= 0) {</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Doing nothing since pyhoca-cli was expected to stop."</span>);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  }</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> </div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"PyHoca-CLI exited unexpectedly. "</span></div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>  <span class="stringliteral">"This connection will now be closed."</span>));</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> </div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  <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>  ddata-><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>  ddata-><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>  ddata-><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>  ddata-><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>  ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">"An error occured."</span>);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  ddata-><a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = _(<span class="stringliteral">"The necessary child process 'pyhoca-cli' stopped unexpectedly.\n"</span></div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  <span class="stringliteral">"Please check your profile settings and PyHoca-CLI's output for "</span></div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  <span class="stringliteral">"possible errors. Also ensure the remote server is "</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  <span class="stringliteral">"reachable and you're using the right credentials."</span>);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  <span class="comment">// We don't need the response.</span></div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>  ddata-><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>  <span class="comment">// We don't need a custom dialog either.</span></div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>  ddata-><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>  ddata-><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> </div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> <span class="comment"> */</span></div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  <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>  g_assert(custom_data && <span class="stringliteral">"custom_data could not be initialized."</span>);</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> </div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>  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> </div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>  <span class="comment">// 1 Second. Give `Dialog` chance to open.</span></div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>  usleep(1000 * 1000);</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span> </div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>  <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> }</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> </div><div class="line"><a name="l01700"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11"> 1700</a></span> <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>  gchar* s_username, gchar* s_password,</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>  gchar* errmsg)</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span> {</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>  <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>  <span class="comment">// into remminafile->settings. They will be saved later, on successful</span></div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  <span class="comment">// connection, by rcw.c</span></div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>  <span class="keywordflow">if</span> (s_password && s_username) {</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>  <span class="keywordflow">if</span> (g_strcmp0(s_username, <span class="stringliteral">""</span>) == 0) {</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"Can't save empty username!"</span>), 512);</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>  <span class="comment">//REMMINA_PLUGIN_CRITICAL("%s", errmsg); // No need.</span></div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>  }</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> </div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>  <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>  <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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>,</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>  s_password);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">"username"</span>,</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  s_username);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>  g_strlcpy(errmsg, g_strdup_printf(</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>  _(<span class="stringliteral">"Could not save new credentials."</span>)</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  ), 512);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> </div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"An error occured while trying to save "</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>  <span class="stringliteral">"new credentials: 's_password' or "</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>  <span class="stringliteral">"'s_username' strings were not set."</span>));</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>  }</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> </div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> }</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> </div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> </div><div class="line"><a name="l01744"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9"> 1744</a></span> <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>  gchar **passphrase)</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> {</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> </div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>  g_assert(errmsg != NULL);</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>  g_assert(gp != NULL);</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> </div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>  <span class="keywordflow">if</span> ((*passphrase) == NULL) {</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  <span class="comment">// Just setting NULL password to empty password.</span></div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>  (*passphrase) = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  }</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span> </div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>  gint ret = rm_plugin_service-><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>  gp, 0, _(<span class="stringliteral">"Enter password to unlock the SSH key:"</span>),</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  NULL, *passphrase, NULL, NULL</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>  );</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> </div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  gchar *s_passphrase = rm_plugin_service-><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>  <span class="keywordflow">if</span> (s_passphrase) {</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  (*passphrase) = g_strdup(s_passphrase);</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  g_free(s_passphrase);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>  }</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"Password input cancelled. Aborting…"</span>), 512);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>  }</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> </div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span> }</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> </div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> </div><div class="line"><a name="l01786"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4"> 1786</a></span> <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>  gchar** default_username, gchar** default_password)</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span> {</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> </div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>  g_assert(errmsg != NULL);</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>  g_assert(gp != NULL);</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>  g_assert(default_username != NULL);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>  g_assert(default_password != NULL);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span> </div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>  <span class="comment">// default_username is probably NULL because the user didn't configure any</span></div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>  <span class="comment">// username in the profile settings.</span></div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  <span class="keywordflow">if</span> ((*default_username) == NULL) {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>  gchar* l_errmsg = g_strdup_printf(</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>  _(<span class="stringliteral">"Tip: Check the 'Save password' checkbox or manually input your "</span></div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  <span class="stringliteral">"X2Go username and password in the profile settings to store "</span></div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>  <span class="stringliteral">"them for faster logins."</span>)</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>  );</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, l_errmsg);</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  (*default_username) = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>  }</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> </div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <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>  <span class="comment">// secret-plugin. For example: The user didn't input a password for keyring or</span></div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  <span class="comment">// the user simply didn't configure a password in the profile settings.</span></div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>  <span class="keywordflow">if</span> ((*default_password) == NULL) {</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  (*default_password) = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span> </div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>  gchar *s_username, *s_password;</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  gint ret;</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>  gboolean save;</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>  gboolean disable_password_storing;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> </div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  remminafile = rm_plugin_service-><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> </div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>  disable_password_storing = rm_plugin_service-><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>  remminafile, <span class="stringliteral">"disablepasswordstoring"</span>, FALSE</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>  );</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span> </div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  ret = rm_plugin_service-><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>  gp, (disable_password_storing ? 0 :</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>  <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>  <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>  _(<span class="stringliteral">"Enter X2Go credentials"</span>),</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>  (*default_username), (*default_password), NULL, NULL</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>  );</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span> </div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  s_username = rm_plugin_service-><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>  s_password = rm_plugin_service-><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>  <span class="keywordflow">if</span> (rm_plugin_service-><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>  rm_plugin_service-><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>  remminafile, <span class="stringliteral">"password"</span>, s_password</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>  );</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>  <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>  save = rm_plugin_service-><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>  <span class="keywordflow">if</span> (save) {</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  <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>  s_password, errmsg)) {</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>  }</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>  }</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  <span class="keywordflow">if</span> (s_username) {</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  (*default_username) = g_strdup(s_username);</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  g_free(s_username);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  }</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>  <span class="keywordflow">if</span> (s_password) {</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>  (*default_password) = g_strdup(s_password);</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>  g_free(s_password);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>  }</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"Authentication cancelled. Aborting…"</span>), 512);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  }</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> </div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> }</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> </div><div class="line"><a name="l01878"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850"> 1878</a></span> <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>  <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> {</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>  <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> </div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>  gchar *host = NULL;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>  gchar *username = NULL;</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>  gchar *password = NULL;</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>  gchar *ssh_privatekey = NULL;</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>  gchar *ssh_passphrase = NULL;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>  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> </div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>  <span class="keywordflow">if</span> (valid) {</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>  <span class="keywordflow">if</span> (connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>) password = connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>  <span class="keywordflow">if</span> (connect_data-><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>  ssh_privatekey = connect_data-><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> </div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>  <span class="keywordflow">if</span> (connect_data-><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>  ssh_passphrase = connect_data-><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>  }</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>  }</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span> </div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>  host = connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>  username = connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>  }</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> </div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>  <span class="comment">// We will now start pyhoca-cli with only the '--list-sessions' option.</span></div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span> </div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>  gchar *argv[50];</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>  gint argc = 0;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span> </div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>  argv[argc++] = g_strdup(<span class="stringliteral">"pyhoca-cli"</span>);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--list-sessions"</span>);</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> </div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--server"</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, host);</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span> </div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"USERNAME"</span>)) {</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-u"</span>);</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>  <span class="keywordflow">if</span> (username) {</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, username);</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, g_get_user_name());</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>  }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"USERNAME"</span>));</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"USERNAME"</span>));</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span> </div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"NON_INTERACTIVE"</span>)) {</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--non-interactive"</span>);</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"NON_INTERACTIVE"</span>));</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  }</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span> </div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>  <span class="keywordflow">if</span> (password && FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"PASSWORD"</span>)) {</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"AUTH_ATTEMPTS"</span>)) {</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--auth-attempts"</span>);</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%i"</span>, 0);</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"AUTH_ATTEMPTS"</span>));</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>  }</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>  <span class="keywordflow">if</span> (strlen(password) > 0) {</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--force-password"</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--password"</span>);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, password);</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>  }</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"PASSWORD"</span>));</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"PASSWORD"</span>));</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>  }</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span> </div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  <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>  <span class="comment">// `--quiet` is not that important.</span></div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"QUIET"</span>)) {</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--quiet"</span>);</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  }</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span> </div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PRIVKEY"</span>)) {</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>  <span class="keywordflow">if</span> (ssh_privatekey && !g_str_equal(ssh_privatekey, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-privkey"</span>);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_privatekey);</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span> </div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>  <span class="keywordflow">if</span> (ssh_passphrase && !g_str_equal(ssh_passphrase, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PASSPHRASE"</span>)) {</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-passphrase"</span>);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_passphrase);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PASSPHRASE"</span>));</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>  }</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  }</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>  }</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PRIVKEY"</span>));</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  }</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span> </div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span> </div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>  argv[argc++] = NULL;</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span> </div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>  <span class="comment">//#ifndef GLIB_AVAILABLE_IN_2_68</span></div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>  gchar** envp = g_get_environ();</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  gchar* envp_splitted = g_strjoinv(<span class="stringliteral">";"</span>, envp);</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>  envp_splitted = g_strconcat(envp_splitted, <span class="stringliteral">";LANG=C"</span>, (<span class="keywordtype">void</span>*) NULL);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  envp = g_strsplit(envp_splitted, <span class="stringliteral">";"</span>, 0);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>  <span class="comment">/*</span></div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span> <span class="comment"> * #else</span></div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span> <span class="comment"> * // Only available after glib version 2.68.</span></div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span> <span class="comment"> * // TODO: FIXME: NOT TESTED!</span></div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span> <span class="comment"> * GStrvBuilder* builder = g_strv_builder_new();</span></div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> <span class="comment"> * g_strv_builder_add(builder, "LANG=C");</span></div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span> <span class="comment"> * GStrv envp = g_strv_builder_end(builder);</span></div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span> <span class="comment"> * #endif</span></div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span> <span class="comment"> */</span></div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span> </div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>  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>  g_strfreev(envp);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> </div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>  <span class="keywordflow">if</span> (!std_out || *error) {</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>  <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>  <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>  <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>  g_assert((*error) != NULL);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>  }</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span> </div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>  <span class="keywordflow">return</span> std_out;</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span> }</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span> </div><div class="line"><a name="l02026"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604"> 2026</a></span> <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>  GError **error,</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>  <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> {</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span> </div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>  gchar *pyhoca_output = NULL;</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span> </div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>  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>  <span class="keywordflow">if</span> (!pyhoca_output || *error) {</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>  <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>  <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>  <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>  g_assert((*error) != NULL);</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> </div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>  }</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> </div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>  gchar **lines_list = g_strsplit(pyhoca_output, <span class="stringliteral">"\n"</span>, -1);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  <span class="comment">// Assume at least two lines of output.</span></div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <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>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Couldn't parse the output of PyHoca-CLI's "</span></div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  <span class="stringliteral">"--list-sessions option. Creating a new "</span></div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>  <span class="stringliteral">"session now."</span>));</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>  }</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span> </div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>  gboolean found_session = FALSE;</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>  GList* sessions = NULL;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>  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> </div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>  <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>  gchar* current_line = lines_list[i];</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span> </div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>  <span class="comment">// TOO VERBOSE:</span></div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>  <span class="comment">//REMMINA_PLUGIN_DEBUG("pyhoca-cli: %s", current_line);</span></div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> </div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>  <span class="comment">// Hardcoded string "Session Name: " comes from python-x2go.</span></div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>  <span class="keywordflow">if</span> (!g_str_has_prefix(current_line, <span class="stringliteral">"Session Name: "</span>) && !found_session) {</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>  <span class="comment">// Doesn't begin with "Session Name: " and</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>  <span class="comment">// the current line doesn't come after that either. Skipping.</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>  }</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span> </div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"Session Name: "</span>)) {</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>  gchar* session_id = NULL;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>  gchar** line_list = g_strsplit(current_line, <span class="stringliteral">": "</span>, 0);</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> </div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>  <span class="keywordflow">if</span> (line_list == NULL ||</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>  line_list[0] == NULL ||</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  line_list[1] == NULL ||</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>  strlen(line_list[0]) <= 0 ||</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>  strlen(line_list[1]) <= 0)</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  {</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>  found_session = FALSE;</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  }</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span> </div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  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>  <span class="keywordflow">if</span> (!session) {</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Couldn't allocate "</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>  <span class="stringliteral">"enough memory!"</span>));</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>  }</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  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>  sessions = g_list_append(sessions, session);</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> </div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>  session_id = line_list[1];</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>  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> </div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>  _(<span class="stringliteral">"Found already existing X2Go session with ID: '%s'"</span>),</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>  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>  );</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span> </div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  found_session = TRUE;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  }</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> </div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  <span class="keywordflow">if</span> (!found_session) {</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  }</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span> </div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>  <span class="keywordflow">if</span> (g_strcmp0(current_line, <span class="stringliteral">"-------------"</span>) == 0) {</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>  }</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span> </div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>  gchar* value = NULL;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>  gchar** line_list = g_strsplit(current_line, <span class="stringliteral">": "</span>, 0);</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> </div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>  <span class="keywordflow">if</span> (line_list == NULL ||</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>  line_list[0] == NULL ||</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>  line_list[1] == NULL ||</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>  strlen(line_list[0]) <= 0 ||</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>  strlen(line_list[1]) <= 0)</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  {</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  <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>  found_session = FALSE;</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>  }</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>  value = line_list[1];</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span> </div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"cookie: "</span>)) {</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"cookie:\t'%s'"</span>, value);</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"agent PID: "</span>)) {</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"agent PID:\t'%s'"</span>, value);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"display: "</span>)) {</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"display:\t'%s'"</span>, value);</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"status: "</span>)) {</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>  <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">"S"</span>) == 0) {</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's translation.</span></div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>  value = _(<span class="stringliteral">"Suspended"</span>);</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">"R"</span>) == 0) {</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's translation.</span></div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>  value = _(<span class="stringliteral">"Running"</span>);</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">"T"</span>) == 0) {</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's translation.</span></div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>  value = _(<span class="stringliteral">"Terminated"</span>);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>  }</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"status:\t'%s'"</span>, value);</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"graphic port: "</span>)) {</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"graphic port:\t'%s'"</span>, value);</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"snd port: "</span>)) {</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"snd port:\t'%s'"</span>, value);</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"sshfs port: "</span>)) {</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"sshfs port:\t'%s'"</span>, value);</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"username: "</span>)) {</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"username:\t'%s'"</span>, value);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"hostname: "</span>)) {</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"hostname:\t'%s'"</span>, value);</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"create date: "</span>)) {</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"create date:\t'%s'"</span>, value);</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"suspended since: "</span>)) {</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"suspended since:\t'%s'"</span>, value);</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>  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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Not supported:\t'%s'"</span>, value);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>  found_session = FALSE;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>  }</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>  }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span> </div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>  <span class="keywordflow">if</span> (!sessions) {</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>  g_set_error(error, 1, 1,</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>  <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Could not find any sessions on remote machine. Creating a new "</span></div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  <span class="stringliteral">"session now."</span>)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>  );</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> </div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>  <span class="comment">// returning NULL with `error` set.</span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  }</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> </div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  <span class="keywordflow">return</span> sessions;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span> }</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span> </div><div class="line"><a name="l02198"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63"> 2198</a></span> <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>  <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> {</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>  <span class="keywordflow">if</span> (!connect_data ||</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>  !connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> ||</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>  !connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> ||</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>  !connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> ||</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  strlen(connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>) <= 0 ||</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>  strlen(connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>) <= 0)</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  <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>  {</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>  _(<span class="stringliteral">"'Invalid connection data.'"</span>)</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>  ));</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  }</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> </div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>  GList *sessions_list = NULL;</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  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> </div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>  <span class="keywordflow">if</span> (!sessions_list || *error) {</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  <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>  <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>  <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>  g_assert(*error != NULL);</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>  }</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span> </div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>  <span class="comment">// Prep new DialogData struct.</span></div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>  <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>  ddata-><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>  ddata-><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>  <span class="comment">//ddata->type = GTK_MESSAGE_QUESTION;</span></div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>  <span class="comment">//ddata->buttons = GTK_BUTTONS_OK; // Doesn't get used in our custom factory.</span></div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>  ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">"Choose a session to resume:"</span>);</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>  ddata-><a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = <span class="stringliteral">""</span>;</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span> </div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>  <span class="comment">// gboolean factory(X2GoCustomUserData*, gpointer)</span></div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>  <span class="comment">// X2GoCustomUserData*:</span></div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>  <span class="comment">// gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>  <span class="comment">// dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>  <span class="comment">// connect_data -> connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>  <span class="comment">// gpointer: dialog_factory_data</span></div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>  ddata-><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> </div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  <span class="comment">// gboolean factory(X2GoCustomUserData*, gpointer)</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>  <span class="comment">// X2GoCustomUserData*:</span></div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>  <span class="comment">// gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>  <span class="comment">// dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>  <span class="comment">// connect_data -> connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>  <span class="comment">// gpointer: dialog_factory_data</span></div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>  ddata-><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>  ddata-><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> </div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span> <span class="comment"> */</span></div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>  <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>  g_assert(custom_data && <span class="stringliteral">"custom_data could not be initialized."</span>);</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span> </div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>  custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  <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>  <span class="comment">// should set SET_RESUME_SESSION.</span></div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>  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> </div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>  guint counter = 0;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>  <span class="keywordflow">while</span> (!IS_SESSION_SELECTED(gp)) {</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>  <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>  usleep(500 * 1000);</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span> </div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>  <span class="comment">// Every 5 seconds</span></div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>  <span class="keywordflow">if</span> (counter % 10 == 0 || counter == 0) {</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Waiting for user to select a session…"</span>));</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>  }</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>  counter++;</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  }</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span> </div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>  gchar* chosen_resume_session = GET_RESUME_SESSION(gp);</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span> </div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>  <span class="keywordflow">if</span> (!chosen_resume_session || strlen(chosen_resume_session) <= 0) {</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"No session was selected. Creating a new one."</span>));</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>  }</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span> </div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>  <span class="keywordflow">return</span> chosen_resume_session;</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span> }</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> </div><div class="line"><a name="l02291"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085"> 2291</a></span> <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>  gint sshport,</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>  gchar *username,</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>  gchar *password,</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>  gchar *command,</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>  gchar *kbdlayout,</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>  gchar *kbdtype,</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>  gchar *audio,</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  gchar *clipboard,</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  gint dpi,</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>  gchar *resolution,</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>  gchar *ssh_privatekey,</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  <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>  gchar *errmsg)</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span> {</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>  <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> </div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>  gchar *argv[50];</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  gint argc = 0;</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span> </div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  <span class="comment">// We don't want to save any SSH passphrases on hard drive!</span></div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  <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>  gchar *ssh_passphrase = NULL;</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span> </div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  <span class="keywordflow">if</span> (!username || strlen(username) <= 0) {</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>  <span class="comment">// Sets `username` and `password`.</span></div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>  <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4">rmplugin_x2go_get_auth</a>(gp, errmsg, &username, &password)) {</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  }</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>  }</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span> </div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>  <span class="comment">// Password can be *empty* but not NULL.</span></div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>  <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>  password = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>  }</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span> </div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>  <span class="keywordflow">if</span> (ssh_privatekey && strlen(ssh_privatekey) > 0) {</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>  <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>  <span class="comment">// See: https://security.stackexchange.com/a/245767</span></div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span> </div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>  <span class="comment">// Get ssh_privatekey now via dialog.</span></div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>  <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9">rmplugin_x2go_get_ssh_passphrase</a>(gp, errmsg, &ssh_passphrase)) {</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>  }</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>  }</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span> </div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>  <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>  connect_data-><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>  connect_data-><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>  connect_data-><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>  connect_data-><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>  connect_data-><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> </div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>  GError *session_error = NULL;</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>  gchar* resume_session_id = <a class="code" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63">rmplugin_x2go_ask_session</a>(gp, &session_error,</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>  connect_data);</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span> </div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>  <span class="keywordflow">if</span> (!resume_session_id || session_error || strlen(resume_session_id) <= 0) {</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  <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>  <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>  <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>  g_assert(session_error != NULL);</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span> </div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>  _(<span class="stringliteral">"A non-critical error happened: %s"</span>),</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>  session_error->message</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>  ));</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>  _(<span class="stringliteral">"User chose to resume session with ID: '%s'"</span>),</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  resume_session_id</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>  ));</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>  }</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span> </div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>  argc = 0;</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>  argv[argc++] = g_strdup(<span class="stringliteral">"pyhoca-cli"</span>);</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> </div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--server"</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, host);</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span> </div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"REMOTE_SSH_PORT"</span>)) {</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-p"</span>);</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%d"</span>, sshport);</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"REMOTE_SSH_PORT"</span>));</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>  }</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span> </div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>  <span class="keywordflow">if</span> (resume_session_id && strlen(resume_session_id) > 0) {</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's way of translating.</span></div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>  _(<span class="stringliteral">"Resuming session '%s'…"</span>),</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>  resume_session_id</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>  ));</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span> </div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"RESUME"</span>)) {</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--resume"</span>);</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, resume_session_id);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"RESUME"</span>));</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>  }</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>  }</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span> </div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>  <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>  <span class="comment">// session or just not. No inbetween.</span></div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  <span class="comment">// if (!resume_session_id) {</span></div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  <span class="comment">// if (FEATURE_AVAILABLE(gpdata, "TRY_RESUME")) {</span></div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  <span class="comment">// argv[argc++] = g_strdup("--try-resume");</span></div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  <span class="comment">// } else {</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>  <span class="comment">// REMMINA_PLUGIN_DEBUG("%s", FEATURE_NOT_AVAIL_STR("TRY_RESUME"));</span></div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  <span class="comment">// }</span></div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  <span class="comment">// }</span></div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span> </div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"USERNAME"</span>)) {</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-u"</span>);</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>  <span class="keywordflow">if</span> (username){</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, username);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, g_get_user_name());</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  }</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"USERNAME"</span>));</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  }</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span> </div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>  <span class="keywordflow">if</span> (password && FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"PASSWORD"</span>)) {</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>  <span class="keywordflow">if</span> (strlen(password) > 0) {</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--force-password"</span>);</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--password"</span>);</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, password);</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  }</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"PASSWORD"</span>));</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  }</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span> </div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"AUTH_ATTEMPTS"</span>)) {</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--auth-attempts"</span>);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%i"</span>, 0);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"AUTH_ATTEMPTS"</span>));</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  }</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span> </div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"NON_INTERACTIVE"</span>)) {</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--non-interactive"</span>);</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"NON_INTERACTIVE"</span>));</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>  }</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span> </div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"COMMAND"</span>)) {</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-c"</span>);</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  <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>  <span class="comment">// the command string...</span></div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  <span class="comment">// argv[argc++] = g_strdup_printf ("%s", g_shell_quote(command));</span></div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  argv[argc++] = g_strdup(command);</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"COMMAND"</span>));</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  }</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> </div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"KBD_LAYOUT"</span>)) {</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  <span class="keywordflow">if</span> (kbdlayout) {</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--kbd-layout"</span>);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, kbdlayout);</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--kbd-layout"</span>);</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  argv[argc++] = g_strdup(<span class="stringliteral">"auto"</span>);</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  }</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"KBD_LAYOUT"</span>));</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>  }</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> </div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"KBD_TYPE"</span>)) {</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  <span class="keywordflow">if</span> (kbdtype) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--kbd-type"</span>);</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, kbdtype);</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--kbd-type"</span>);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  argv[argc++] = g_strdup(<span class="stringliteral">"auto"</span>);</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"KBD_TYPE"</span>));</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  }</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span> </div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"GEOMETRY"</span>)) {</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  <span class="keywordflow">if</span> (!resolution)</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  resolution = <span class="stringliteral">"800x600"</span>;</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-g"</span>);</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, resolution);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"GEOMETRY"</span>));</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  }</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span> </div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"TERMINATE_ON_CTRL_C"</span>)) {</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--terminate-on-ctrl-c"</span>);</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"TERMINATE_ON_CTRL_C"</span>));</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  }</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span> </div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SOUND"</span>)) {</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  <span class="keywordflow">if</span> (audio) {</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--sound"</span>);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, audio);</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--sound"</span>);</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  argv[argc++] = g_strdup(<span class="stringliteral">"none"</span>);</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  }</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SOUND"</span>));</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  }</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span> </div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"CLIPBOARD_MODE"</span>)) {</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  <span class="keywordflow">if</span> (clipboard) {</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--clipboard-mode"</span>);</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, clipboard);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  }</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"CLIPBOARD_MODE"</span>));</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>  }</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span> </div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"DPI"</span>)) {</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>  <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>  <span class="comment">// manipulating profile files is still very possible…</span></div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>  <span class="comment">// Values are extracted from pyhoca-cli.</span></div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>  <span class="keywordflow">if</span> (dpi < 20 || dpi > 400) {</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"DPI setting is out of bounds. Please adjust "</span></div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>  <span class="stringliteral">"it in profile settings."</span>), 512);</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>  <span class="comment">// No need, start_session() will handle output.</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  <span class="comment">//REMMINA_PLUGIN_CRITICAL("%s", errmsg);</span></div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  }</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--dpi"</span>);</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%i"</span>, dpi);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"DPI"</span>));</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  }</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span> </div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PRIVKEY"</span>)) {</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  <span class="keywordflow">if</span> (ssh_privatekey && !g_str_equal(ssh_privatekey, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-privkey"</span>);</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_privatekey);</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span> </div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>  <span class="keywordflow">if</span> (ssh_passphrase && !g_str_equal(ssh_passphrase, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PASSPHRASE"</span>)) {</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-passphrase"</span>);</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_passphrase);</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PASSPHRASE"</span>));</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>  }</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>  }</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>  }</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PRIVKEY"</span>));</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  }</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span> </div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>  argv[argc++] = NULL;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span> </div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  GError *error = NULL;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>  gchar **envp = g_get_environ();</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  gboolean success = g_spawn_async_with_pipes (NULL, argv, envp,</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  (G_SPAWN_DO_NOT_REAP_CHILD |</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  G_SPAWN_SEARCH_PATH), NULL,</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  NULL, &gpdata-><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>  NULL, NULL, NULL, &error);</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> </div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Started PyHoca-CLI with the following arguments:"</span>));</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  <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>  <span class="keywordflow">for</span> (gint i = 0; i < argc - 1; i++) {</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>  gchar* curr_arg = argv[i];</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span> </div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  <span class="keywordflow">if</span> (g_str_equal(curr_arg, <span class="stringliteral">"--password"</span>) ||</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>  g_str_equal(curr_arg, <span class="stringliteral">"--ssh-passphrase"</span>)) {</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>  g_printf(<span class="stringliteral">"%s "</span>, curr_arg);</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  g_printf(<span class="stringliteral">"XXXXXX "</span>);</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  g_free(curr_arg);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  g_free(argv[++i]);</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  g_printf(<span class="stringliteral">"%s "</span>, curr_arg);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  g_free(curr_arg);</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  }</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  }</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  g_printf(<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span> </div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  <span class="keywordflow">if</span> (!success || error) {</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  <span class="comment">// TRANSLATORS: Meta-error. Shouldn't be visible.</span></div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  <span class="keywordflow">if</span> (!error) error = g_error_new(0, 0, _(<span class="stringliteral">"Internal error."</span>));</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span> </div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  gchar *error_title = _(<span class="stringliteral">"An error occured while "</span></div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  <span class="stringliteral">"starting an X2Go session…"</span>);</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span> </div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  <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>  ddata-><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>  ddata-><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>  ddata-><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>  ddata-><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>  ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">"Could not start X2Go session."</span>);</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  ddata-><a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = g_strdup_printf(_(<span class="stringliteral">"Could not start PyHoca-CLI (%i): '%s'"</span>),</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  error->code,</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  error->message);</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  <span class="comment">// We don't need the response.</span></div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  ddata-><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>  <span class="comment">// We don't need a custom dialog either.</span></div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  ddata-><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>  ddata-><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> </div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span> <span class="comment"> */</span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>  <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>  g_assert(custom_data && <span class="stringliteral">"custom_data could not be initialized."</span>);</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span> </div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  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> </div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  g_strlcpy(errmsg, error_title, 512);</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span> </div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  <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> </div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  g_error_free(error);</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span> </div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  }</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span> </div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>  <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>  <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> </div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  <span class="keyword">struct </span>timespec ts;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  <span class="comment">// 0.001 seconds.</span></div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  ts.tv_nsec = 1 * 1000 * 1000;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  ts.tv_sec = 0;</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  <span class="keywordflow">while</span> (gpdata-><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>  nanosleep(&ts, NULL);</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Waiting for PyHoca-CLI to start…"</span>);</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  };</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span> </div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Watching child 'pyhoca-cli' process now…"</span>);</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  g_child_watch_add(gpdata-><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>  (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>  gp);</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span> </div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span> }</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span> </div><div class="line"><a name="l02640"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060"> 2640</a></span> <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> {</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span> </div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span> <span class="preprocessor"> #define AMOUNT_FEATURES 43</span></div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  gchar* features[AMOUNT_FEATURES] = {</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>  <span class="stringliteral">"ADD_TO_KNOWN_HOSTS"</span>, <span class="stringliteral">"AUTH_ATTEMPTS"</span>, <span class="stringliteral">"BROKER_PASSWORD"</span>, <span class="stringliteral">"BROKER_URL"</span>,</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>  <span class="stringliteral">"CLEAN_SESSIONS"</span>, <span class="stringliteral">"COMMAND"</span>, <span class="stringliteral">"DEBUG"</span>, <span class="stringliteral">"FORCE_PASSWORD"</span>, <span class="stringliteral">"FORWARD_SSHAGENT"</span>,</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>  <span class="stringliteral">"GEOMETRY"</span>, <span class="stringliteral">"KBD_LAYOUT"</span>, <span class="stringliteral">"KBD_TYPE"</span>, <span class="stringliteral">"LIBDEBUG"</span>, <span class="stringliteral">"LIBDEBUG_SFTPXFER"</span>, <span class="stringliteral">"LINK"</span>,</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>  <span class="stringliteral">"LIST_CLIENT_FEATURES"</span>, <span class="stringliteral">"LIST_DESKTOPS"</span>, <span class="stringliteral">"LIST_SESSIONS"</span>, <span class="stringliteral">"NEW"</span>, <span class="stringliteral">"PACK"</span>,</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  <span class="stringliteral">"PASSWORD"</span>, <span class="stringliteral">"PDFVIEW_CMD"</span>, <span class="stringliteral">"PRINTER"</span>, <span class="stringliteral">"PRINTING"</span>, <span class="stringliteral">"PRINT_ACTION"</span>, <span class="stringliteral">"PRINT_CMD"</span>,</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>  <span class="stringliteral">"QUIET"</span>, <span class="stringliteral">"REMOTE_SSH_PORT"</span>, <span class="stringliteral">"RESUME"</span>, <span class="stringliteral">"SAVE_TO_FOLDER"</span>, <span class="stringliteral">"SESSION_PROFILE"</span>,</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>  <span class="stringliteral">"SESSION_TYPE"</span>, <span class="stringliteral">"SHARE_DESKTOP"</span>, <span class="stringliteral">"SHARE_LOCAL_FOLDERS"</span>, <span class="stringliteral">"SHARE_MODE"</span>, <span class="stringliteral">"SOUND"</span>,</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  <span class="stringliteral">"SSH_PRIVKEY"</span>, <span class="stringliteral">"SUSPEND"</span>, <span class="stringliteral">"TERMINATE"</span>, <span class="stringliteral">"TERMINATE_ON_CTRL_C"</span>, <span class="stringliteral">"TRY_RESUME"</span>,</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>  <span class="stringliteral">"USERNAME"</span>, <span class="stringliteral">"XINERAMA"</span></div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  };</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span> </div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>  GList *features_list = NULL;</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < AMOUNT_FEATURES; i++) {</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>  features_list = g_list_append(features_list, features[i]);</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>  }</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> </div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>  <span class="keywordflow">return</span> features_list;</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span> }</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span> </div><div class="line"><a name="l02668"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d"> 2668</a></span> <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> {</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span> </div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  GList* returning_glist = NULL;</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span> </div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>  <span class="comment">// We will now start pyhoca-cli with only the '--list-cmdline-features' option</span></div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>  <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>  <span class="comment">// features are available or not.</span></div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span> </div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>  gchar* argv[50];</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>  gint argc = 0;</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span> </div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>  argv[argc++] = g_strdup(<span class="stringliteral">"pyhoca-cli"</span>);</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--list-cmdline-features"</span>);</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>  argv[argc++] = NULL;</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span> </div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  GError* error = NULL; <span class="comment">// Won't be actually used.</span></div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span> </div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  <span class="comment">// Querying pyhoca-cli's command line features.</span></div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>  gchar** envp = g_get_environ();</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>  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>  &error, envp);</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>  g_strfreev(envp);</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span> </div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>  <span class="keywordflow">if</span> (!features_string || error) {</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>  <span class="comment">// We added the '--list-cmdline-features' on commit 17d1be1319ba6 of</span></div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>  <span class="comment">// pyhoca-cli. In order to protect setups which don't have the newest</span></div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>  <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>  <span class="comment">// of an old limited set of features.</span></div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span> </div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>,</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>  _(<span class="stringliteral">"Couldn't get PyHoca-CLI's command-line features. This "</span></div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>  <span class="stringliteral">"indicates it is either too old, or not installed. "</span></div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>  <span class="stringliteral">"An old limited set of features will be used for now."</span>));</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span> </div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>  gchar **features_list = g_strsplit(features_string, <span class="stringliteral">"\n"</span>, 0);</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span> </div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>  <span class="keywordflow">if</span> (features_list == NULL) {</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>  gchar *error_msg = _(<span class="stringliteral">"Could not parse PyHoca-CLI's command-line "</span></div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>  <span class="stringliteral">"features. Using a limited feature-set for now."</span>);</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>  <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>  }</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span> </div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Retrieved the following PyHoca-CLI "</span></div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>  <span class="stringliteral">"command-line features:"</span>));</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span> </div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>  <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>  <span class="comment">// Filter out empty strings</span></div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>  <span class="keywordflow">if</span> (strlen(features_list[k]) <= 0) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span> </div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>,</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>  g_strdup_printf(_(<span class="stringliteral">"Available feature[%i]: '%s'"</span>),</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>  k+1, features_list[k]));</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>  returning_glist = g_list_append(returning_glist, features_list[k]);</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>  }</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>  <span class="keywordflow">return</span> returning_glist;</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>  }</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span> }</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span> </div><div class="line"><a name="l02731"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a"> 2731</a></span> <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> {</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span> </div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>  gchar *server;</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>  gint port;</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span> </div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>  <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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Socket %d"</span>, gpdata-><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>  rm_plugin_service-><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> </div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = rm_plugin_service-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>),</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>  22,</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>  &server,</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>  &port);</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span> </div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>  REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">"Connected to %s:%d via X2Go"</span>), server, port);</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>  g_free(server), server = NULL;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span> </div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span> }</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span> </div><div class="line"><a name="l02754"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e"> 2754</a></span> <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> {</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>  <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>  <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span> }</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span> </div><div class="line"><a name="l02762"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38"> 2762</a></span> <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> {</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>, PLUGIN_NAME);</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>  <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> </div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>  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>  g_object_set_data_full(G_OBJECT(gp), <span class="stringliteral">"plugin-data"</span>, gpdata, g_free);</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span> </div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>  <span class="keywordflow">if</span> (!rm_plugin_service-><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>  <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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>  }</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span> </div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>  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> </div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>  <span class="comment">// available_features can'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>  <span class="comment">// old standard feature set.</span></div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>  gpdata-><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> </div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>  gpdata-><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>  gpdata-><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> </div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>  gpdata-><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>  gpdata-><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>  gpdata-><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>  gpdata-><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> </div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>  gpdata-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#ac3fc04c8c7b20c35122e2786d9e8fc34">protocol_plugin_register_hostkey</a>(gp, gpdata-><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>  gtk_widget_show(gpdata-><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> </div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>  g_signal_connect(G_OBJECT(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), <span class="stringliteral">"plug-added"</span>,</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>  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>  g_signal_connect(G_OBJECT(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), <span class="stringliteral">"plug-removed"</span>,</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>  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>  gtk_container_add(GTK_CONTAINER(gp), gpdata-><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> }</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span> </div><div class="line"><a name="l02801"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a"> 2801</a></span> <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> {</div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>  gint i;</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>  gboolean already_seen = FALSE;</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span> </div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Check if the window of X2Go Agent with ID [0x%lx] is already known or if "</span></div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>  <span class="stringliteral">"it needs registration"</span>, window_id);</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span> </div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>  pthread_mutex_lock(&<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>  <span class="keywordflow">for</span> (i = 0; i < <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>->len; i++) {</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>  <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>  already_seen = TRUE;</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Window of X2Go Agent with ID [0x%lx] "</span></div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>  <span class="stringliteral">"already seen."</span>, window_id);</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>  }</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>  }</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>  <span class="keywordflow">if</span> (!already_seen) {</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>  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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Registered new window for X2Go Agent with "</span></div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>  <span class="stringliteral">"ID [0x%lx]."</span>, window_id);</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>  }</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>  pthread_mutex_unlock(&<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> </div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>  <span class="keywordflow">return</span> (!already_seen);</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span> }</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span> </div><div class="line"><a name="l02829"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26"> 2829</a></span> <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> {</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span> }</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span> </div><div class="line"><a name="l02835"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119"> 2835</a></span> <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> {</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>  <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> </div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>  gpdata-><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>  <span class="keywordflow">if</span> (gpdata-><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>  g_strlcpy(errmsg, _(<span class="stringliteral">"Could not open X11 DISPLAY."</span>), 512);</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>  }</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span> </div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>  gpdata-><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> </div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>  XSelectInput(gpdata-><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>  XDefaultRootWindow(gpdata-><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>  SubstructureNotifyMask);</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span> </div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"X11 event-watcher created."</span>);</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span> </div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span> }</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span> </div><div class="line"><a name="l02857"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134"> 2857</a></span> <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>  <span class="keyword">const</span> gchar *cmd,</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>  gchar *errmsg)</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span> {</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>  <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> </div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>  gboolean agent_window_found = FALSE;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>  Atom atom;</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>  XEvent xev;</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>  Window w;</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>  Atom type;</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>  <span class="keywordtype">int</span> format;</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>  <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>  <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> </div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>  guint16 non_createnotify_count = 0;</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span> </div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>  <span class="keyword">struct </span>timespec ts;</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>  <span class="comment">// wait_amount * ts.tv_nsec = 20s</span></div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>  <span class="comment">// 100 * 0.2s = 20s</span></div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>  <span class="keywordtype">int</span> wait_amount = 100;</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span> </div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>  CANCEL_DEFER</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span> </div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Waiting for window of X2Go Agent to appear…"</span>));</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span> </div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>  gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>  atom = XInternAtom(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, <span class="stringliteral">"WM_COMMAND"</span>, True);</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>  <span class="keywordflow">if</span> (atom == None) {</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>  CANCEL_ASYNC</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>  }</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span> </div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>  ts.tv_sec = 0;</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>  <span class="comment">// 0.2s = 200000000ns</span></div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>  ts.tv_nsec = 200000000;</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span> </div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>  <span class="keywordflow">while</span> (wait_amount > 0) {</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>  pthread_testcancel();</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>  <span class="keywordflow">if</span> (!(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> > 0)) {</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>  nanosleep(&ts, NULL);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Waiting for X2Go session to start…"</span>);</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>  }</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span> </div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>  <span class="keywordflow">while</span> (!XPending(gpdata-><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>  nanosleep(&ts, NULL);</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>  wait_amount--;</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>  <span class="comment">// Don't spam the console. Print every second though.</span></div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>  <span class="keywordflow">if</span> (wait_amount % 5 == 0) {</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Waiting for PyHoca-CLI to "</span></div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>  <span class="stringliteral">"show the session's window…"</span>));</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>  }</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>  }</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span> </div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>  XNextEvent(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, &xev);</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>  <span class="comment">// Just ignore non CreatNotify events.</span></div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>  <span class="keywordflow">if</span> (xev.type != CreateNotify) {</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>  non_createnotify_count++;</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>  <span class="keywordflow">if</span> (non_createnotify_count % 5 == 0) {</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Saw '%i' X11 events, which weren't "</span></div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>  <span class="stringliteral">"CreateNotify."</span>, non_createnotify_count);</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>  }</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>  }</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span> </div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>  w = xev.xcreatewindow.window;</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>  <span class="keywordflow">if</span> (XGetWindowProperty(gpdata-><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>  AnyPropertyType, &type, &format, &nitems, &rest,</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>  &data) != Success) {</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Could not get WM_COMMAND property from X11 "</span></div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>  <span class="stringliteral">"window ID [0x%lx]."</span>, w);</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>  }</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span> </div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>  <span class="keywordflow">if</span> (data) {</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Saw '%i' X11 events, which weren't "</span></div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>  <span class="stringliteral">"CreateNotify."</span>, non_createnotify_count);</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Found X11 window with WM_COMMAND set "</span></div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>  <span class="stringliteral">"to '%s', the window ID is [0x%lx]."</span>,</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>  (<span class="keywordtype">char</span>*)data, w);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>  }</div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>  <span class="keywordflow">if</span> (data && g_strrstr((gchar*)data, cmd) &&</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>  <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>  gpdata-><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>  agent_window_found = TRUE;</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>  XFree(data);</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>  }</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>  <span class="keywordflow">if</span> (data)</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>  XFree(data);</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>  }</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span> </div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>  XSetErrorHandler(gpdata-><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>  XCloseDisplay(gpdata-><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>  gpdata-><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> </div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>  CANCEL_ASYNC</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span> </div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>  <span class="keywordflow">if</span> (!agent_window_found) {</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"No X2Go session window appeared. "</span></div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>  <span class="stringliteral">"Something went wrong…"</span>), 512);</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>  }</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span> </div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span> }</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span> </div><div class="line"><a name="l02967"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a"> 2967</a></span> <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> {</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span> </div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>  <span class="keyword">const</span> gchar errmsg[512] = {0};</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>  gboolean ret = TRUE;</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span> </div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>  gchar *servstr, *host, *username, *password, *command, *kbdlayout, *kbdtype,</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>  *audio, *clipboard, *res, *ssh_privatekey;</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>  gint sshport, dpi;</div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>  GdkDisplay *default_dsp;</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>  gint width, height;</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span> </div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>  <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>  default_dsp = gdk_display_get_default();</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>  <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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Default display is '%s'."</span>, default_dsp_name);</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span> </div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>  remminafile = rm_plugin_service-><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> </div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>  servstr = GET_PLUGIN_STRING(<span class="stringliteral">"server"</span>);</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>  <span class="keywordflow">if</span> (servstr) {</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(servstr, 22, &host, &sshport);</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>  }</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span> </div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>  <span class="keywordflow">if</span> (!sshport) sshport=22;</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span> </div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>  username = GET_PLUGIN_STRING(<span class="stringliteral">"username"</span>);</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>  password = GET_PLUGIN_PASSWORD(<span class="stringliteral">"password"</span>);</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span> </div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>  command = GET_PLUGIN_STRING(<span class="stringliteral">"command"</span>);</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>  <span class="keywordflow">if</span> (!command) command = <span class="stringliteral">"TERMINAL"</span>;</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span> </div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>  kbdlayout = GET_PLUGIN_STRING(<span class="stringliteral">"kbdlayout"</span>);</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>  kbdtype = GET_PLUGIN_STRING(<span class="stringliteral">"kbdtype"</span>);</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span> </div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>  audio = GET_PLUGIN_STRING(<span class="stringliteral">"audio"</span>);</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span> </div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>  clipboard = GET_PLUGIN_STRING(<span class="stringliteral">"clipboard"</span>);</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span> </div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>  dpi = GET_PLUGIN_INT(<span class="stringliteral">"dpi"</span>, 80);</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span> </div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>  ssh_privatekey = GET_PLUGIN_STRING(<span class="stringliteral">"ssh_privatekey"</span>);</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span> </div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>  <span class="comment">// If empty set to NULL</span></div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>  <span class="keywordflow">if</span>(ssh_privatekey && g_str_equal(ssh_privatekey, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>  ssh_privatekey = NULL;</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>  }</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span> </div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>  width = rm_plugin_service-><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>  height = rm_plugin_service-><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>  <span class="comment">/* multiple of 4 */</span></div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>  width = (width + 3) & ~0x3;</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>  height = (height + 3) & ~0x3;</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>  <span class="keywordflow">if</span> ((width > 0) && (height > 0)) {</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>  res = g_strdup_printf (<span class="stringliteral">"%dx%d"</span>, width, height);</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>  res = <span class="stringliteral">"800x600"</span>;</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>  }</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Resolution set by user: '%s'."</span>, res);</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span> </div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Attached window to socket '%d'."</span>, gpdata-><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> </div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>  <span class="comment">/* register for notifications of window creation events */</span></div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>  <span class="keywordflow">if</span> (ret) ret = <a class="code" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119">rmplugin_x2go_start_create_notify</a>(gp, (gchar*)&errmsg);</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span> </div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>  <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>  <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>  kbdlayout, kbdtype, audio, clipboard, dpi,</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>  res, ssh_privatekey, gp,</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>  (gchar*)&errmsg);</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span> </div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>  <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>  <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">"x2goagent"</span>,</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>  (gchar*)&errmsg);</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span> </div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>  <span class="keywordflow">if</span> (!ret) {</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, <span class="stringliteral">"%s"</span>, &errmsg);</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>  }</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span> </div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>  <span class="comment">/* embed it */</span></div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>  <a class="code" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43">onMainThread_gtk_socket_add_id</a>(GTK_SOCKET(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), gpdata-><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> </div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span> }</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span> </div><div class="line"><a name="l03060"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619"> 3060</a></span> <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> {</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>  <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>  gboolean ret = FALSE;</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span> </div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>  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> </div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>  gpdata-><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>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span> }</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span> </div><div class="line"><a name="l03072"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422"> 3072</a></span> <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> {</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>  <span class="keywordflow">if</span> (!gp) {</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>  _(<span class="stringliteral">"RemminaProtocolWidget* gp is 'NULL'!"</span>)</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>  ));</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>  }</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span> </div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span> </div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>  CANCEL_ASYNC</div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>  <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>  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>  }</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span> </div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span> }</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span> </div><div class="line"><a name="l03093"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637"> 3093</a></span> <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> {</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>  <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> </div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>  <span class="keywordflow">if</span> (!rm_plugin_service-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"The %s protocol is "</span></div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>  <span class="stringliteral">"unavailable because GtkSocket only works under X.org"</span>),</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>  PLUGIN_NAME);</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>  }</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span> </div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>  gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a> = gtk_socket_get_id(GTK_SOCKET(gpdata-><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>  <span class="comment">// casting to void* is allowed since return type 'gpointer' is actually void*.</span></div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>  <span class="keywordflow">if</span> (pthread_create(&gpdata-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"Could not initialize "</span></div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>  <span class="stringliteral">"pthread. Falling back to non-threaded mode…"</span>));</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>  gpdata-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>  }</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span> }</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span> </div><div class="line"><a name="l03117"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada"> 3117</a></span> <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>  <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> {</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span> }</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span> </div><div class="line"><a name="l03124"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f"> 3124</a></span> <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>  {<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>  {<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> };</div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span> </div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span> </div><div class="line"><a name="l03140"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51"> 3140</a></span> <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>  <span class="keyword">const</span> guint current_element,</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>  gchar* element_to_add,</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>  gchar* <span class="keywordtype">string</span>)</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span> {</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>  <span class="keywordflow">if</span> (max_elements > 2) {</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>  <span class="keywordflow">if</span> (current_element == max_elements - 1) {</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>  <span class="comment">// TRANSLATORS: Presumably you just want to translate 'and' into</span></div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>  <span class="comment">// your language.</span></div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>  <span class="comment">// 'value1', 'value2', 'valueN-1' and 'valueN'</span></div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%sand '%s'"</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>  } <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>  <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>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>  <span class="comment">// 'value1', 'value2', 'valueN-1' and 'valueN'</span></div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%s'%s' "</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>  <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>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  <span class="comment">// 'value1', 'value2', 'valueN-1' and 'valueN'</span></div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%s'%s', "</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>  }</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>  } <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>  <span class="keywordflow">if</span> (current_element == max_elements - 1) {</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>  <span class="comment">// TRANSLATORS: Presumably you just want to translate 'and' into</span></div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>  <span class="comment">// your language.</span></div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>  <span class="comment">// 'value1' and 'value2'</span></div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%sand '%s'"</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>  <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>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>  <span class="comment">// 'value1' and 'value2'</span></div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%s'%s' "</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>  }</div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>  <span class="keywordflow">return</span> g_strdup(element_to_add);</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>  }</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span> }</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span> </div><div class="line"><a name="l03194"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a"> 3194</a></span> <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>  gchar* data)</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span> {</div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>  GError *error = NULL;</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span> </div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>  <span class="keywordflow">if</span> (!data) {</div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>  gchar *error_msg = _(<span class="stringliteral">"Invalid validation data in ProtocolSettings array!"</span>);</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>  }</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span> </div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  gchar **elements_list = g_strsplit(data, <span class="stringliteral">","</span>, 0);</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span> </div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>  guint elements_amount = 0;</div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  elements_amount = g_strv_length(elements_list);</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span> </div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  <span class="keywordflow">if</span> (elements_list == NULL ||</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  elements_list[0] == NULL ||</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  strlen(elements_list[0]) <= 0)</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  {</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  gchar *error_msg = _(<span class="stringliteral">"Validation data in ProtocolSettings array is invalid!"</span>);</div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>  }</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span> </div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  gchar *data_str = <span class="stringliteral">""</span>;</div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span> </div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  <span class="keywordflow">if</span> (!key || !value) {</div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Parameters 'key' or 'value' are 'NULL'!"</span>));</div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Internal error."</span>));</div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>  }</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span> </div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>  <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>  <span class="comment">// Don't wanna crash if elements_list[i] is NULL.</span></div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>  gchar* element = elements_list[i] ? elements_list[i] : <span class="stringliteral">""</span>;</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>  <span class="keywordflow">if</span> (g_strcmp0(value, element) == 0) {</div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>  }</div><div class="line"><a name="l03236"></a><span class="lineno"> 3236</span> </div><div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>  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>  element, data_str);</div><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>  }</div><div class="line"><a name="l03240"></a><span class="lineno"> 3240</span> </div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>  <span class="keywordflow">if</span> (elements_amount > 1) {</div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>  g_set_error(&error, 1, 1, _(<span class="stringliteral">"Allowed values are %s."</span>), data_str);</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>  g_set_error(&error, 1, 1, _(<span class="stringliteral">"The only allowed value is '%s'."</span>), data_str);</div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>  }</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span> </div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>  g_free(data_str);</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  g_strfreev(elements_list);</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span> </div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span> }</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span> </div><div class="line"><a name="l03267"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5"> 3267</a></span> <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>  gchar* data)</div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span> {</div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>  GError *error = NULL;</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span> </div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>  gchar **integer_list = g_strsplit(data, <span class="stringliteral">";"</span>, 0);</div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span> </div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>  <span class="keywordflow">if</span> (integer_list == NULL ||</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>  integer_list[0] == NULL ||</div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>  integer_list[1] == NULL ||</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>  strlen(integer_list[0]) <= 0 ||</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>  strlen(integer_list[1]) <= 0)</div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>  {</div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>  gchar *error_msg = _(<span class="stringliteral">"Validation data in ProtocolSettings array is invalid!"</span>);</div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>  }</div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span> </div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>  gint minimum;</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>  <a class="code" href="x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b">str2int_errno</a> err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&minimum, integer_list[0], 10);</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>  <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>  _(<span class="stringliteral">"The lower limit is not a valid integer!"</span>)</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>  ));</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>  _(<span class="stringliteral">"The lower limit is too high!"</span>)</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>  ));</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>  _(<span class="stringliteral">"The lower limit is too low!"</span>)</div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>  ));</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  _(<span class="stringliteral">"Something unknown went wrong."</span>)</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  ));</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>  }</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span> </div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>  <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Please check the RemminaProtocolSetting "</span></div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>  <span class="stringliteral">"array for possible errors."</span>));</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>  }</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span> </div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>  gint maximum;</div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>  err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&maximum, integer_list[1], 10);</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>  <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>  _(<span class="stringliteral">"The upper limit is not a valid integer!"</span>)</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>  ));</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  _(<span class="stringliteral">"The upper limit is too high!"</span>)</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>  ));</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>  _(<span class="stringliteral">"The upper limit is too low!"</span>)</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>  ));</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  _(<span class="stringliteral">"Something unknown went wrong."</span>)</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>  ));</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>  }</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span> </div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>  <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Please check the RemminaProtocolSetting "</span></div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>  <span class="stringliteral">"array for possible errors."</span>));</div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>  }</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span> </div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>  gint int_value;</div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>  err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&int_value, value, 10);</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>  <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>  <span class="comment">// non-numerical characters are can't be entered but, the user can</span></div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>  <span class="comment">// input an empty string.</span></div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"The input is not a valid integer!"</span>));</div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>  } <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>  g_set_error(&error, 1, 1, _(<span class="stringliteral">"Input must be a number between %i and %i."</span>),</div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>  minimum, maximum);</div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Something unknown went wrong."</span>));</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>  }</div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span> </div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>  <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>  }</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span> </div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>  <span class="comment">/*REMMINA_PLUGIN_DEBUG("Key: \t%s", (gchar*) key);</span></div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("Value:\t%s", (gchar*) value);</span></div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("Data: \t%s", data);</span></div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("Min: %i, Max: %i", minimum, maximum);</span></div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("Value converted:\t%i", int_value);*/</span></div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span> </div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>  <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1">STR2INT_SUCCESS</a> && (minimum > int_value || int_value > maximum)) {</div><div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>  g_set_error(&error, 1, 1, _(<span class="stringliteral">"Input must be a number between %i and %i."</span>),</div><div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>  minimum, maximum);</div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>  }</div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span> </div><div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>  <span class="comment">// Should be NULL.</span></div><div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03376"></a><span class="lineno"> 3376</span> }</div><div class="line"><a name="l03377"></a><span class="lineno"> 3377</span> </div><div class="line"><a name="l03378"></a><span class="lineno"> 3378</span> <span class="comment">/* Array of RemminaProtocolSetting for basic settings.</span></div><div class="line"><a name="l03379"></a><span class="lineno"> 3379</span> <span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l03380"></a><span class="lineno"> 3380</span> <span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l03381"></a><span class="lineno"> 3381</span> <span class="comment"> * b) Setting name</span></div><div class="line"><a name="l03382"></a><span class="lineno"> 3382</span> <span class="comment"> * c) Setting description</span></div><div class="line"><a name="l03383"></a><span class="lineno"> 3383</span> <span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l03384"></a><span class="lineno"> 3384</span> <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> <span class="comment"> * f) Setting tooltip</span></div><div class="line"><a name="l03386"></a><span class="lineno"> 3386</span> <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> <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> <span class="comment"> * use following prototype:</span></div><div class="line"><a name="l03389"></a><span class="lineno"> 3389</span> <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> <span class="comment"> * gpointer validator_data);</span></div><div class="line"><a name="l03391"></a><span class="lineno"> 3391</span> <span class="comment"> * gpointer key is a gchar* containing the setting's name,</span></div><div class="line"><a name="l03392"></a><span class="lineno"> 3392</span> <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> <span class="comment"> * gpointer validator_data contains your passed data.</span></div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span> <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> <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>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>, <span class="stringliteral">"server"</span>, NULL, FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">"username"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Username"</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>, <span class="stringliteral">"password"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Password"</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">"command"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Startup program"</span>), FALSE,</div><div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>  <span class="comment">/* SELECT & COMBO Values */</span> <span class="stringliteral">"MATE,KDE,XFCE,LXDE,TERMINAL"</span>,</div><div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>  <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Which command should be executed after creating the X2Go session?"</span>), NULL, NULL},</div><div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba">REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION</a>, <span class="stringliteral">"resolution"</span>, NULL, FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">"kbdlayout"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Keyboard Layout (auto)"</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">"kbdtype"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Keyboard type (auto)"</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">"audio"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Audio support"</span>), FALSE,</div><div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>  <span class="comment">/* SELECT & COMBO Values */</span> <span class="stringliteral">"pulse,esd,none"</span>,</div><div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>  <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"The sound system of the X2Go server (default: 'pulse')."</span>),</div><div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>  <span class="comment">/* Validation data */</span> <span class="stringliteral">"pulse,esd,none"</span>,</div><div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>  <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>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">"clipboard"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Clipboard direction"</span>), FALSE,</div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>  <span class="comment">/* SELECT & COMBO Values */</span> <span class="stringliteral">"none,server,client,both"</span>,</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>  <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Which direction should clipboard content be copied? "</span></div><div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>  <span class="stringliteral">"(default: 'both')."</span>),</div><div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>  <span class="comment">/* Validation data */</span> <span class="stringliteral">"none,server,client,both"</span>,</div><div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>  <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>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ab4c68b7df42ebd08e953cc72c5b97583">REMMINA_PROTOCOL_SETTING_TYPE_INT</a>, <span class="stringliteral">"dpi"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"DPI resolution"</span>), FALSE, NULL,</div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>  <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Launch session with a specific resolution (in dots per inch). "</span></div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>  <span class="stringliteral">"Must be between 20 and 400."</span>),</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>  <span class="comment">/* Validation data */</span> <span class="stringliteral">"20;400"</span>, <span class="comment">// "<min>;<max>;"</span></div><div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>  <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>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da">REMMINA_PROTOCOL_SETTING_TYPE_FILE</a>, <span class="stringliteral">"ssh_privatekey"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"SSH identity file"</span>), FALSE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Your private key"</span>), NULL, NULL },</div><div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>  {<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> </div><div class="line"><a name="l03424"></a><span class="lineno"> 3424</span> <span class="comment">/* Protocol plugin definition and features */</span></div><div class="line"><a name="l03425"></a><span class="lineno"> 3425</span> <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>  <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>  PLUGIN_NAME, <span class="comment">// Name</span></div><div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>  PLUGIN_DESCRIPTION, <span class="comment">// Description</span></div><div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>  GETTEXT_PACKAGE, <span class="comment">// Translation domain</span></div><div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>  PLUGIN_VERSION, <span class="comment">// Version number</span></div><div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>  PLUGIN_APPICON, <span class="comment">// Icon for normal connection</span></div><div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>  PLUGIN_SSH_APPICON, <span class="comment">// Icon for SSH connection</span></div><div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>  <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>  NULL, <span class="comment">// Array for advanced settings</span></div><div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>  <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>  <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>  <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>  <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>  <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>  <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>  NULL, <span class="comment">// Call a feature</span></div><div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>  NULL, <span class="comment">// Send a keystroke</span></div><div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>  NULL, <span class="comment">// Screenshot</span></div><div class="line"><a name="l03444"></a><span class="lineno"> 3444</span> };</div><div class="line"><a name="l03445"></a><span class="lineno"> 3445</span> </div><div class="line"><a name="l03446"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a56e5020de11446dbc23f3480e313f208"> 3446</a></span> 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> {</div><div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>  TRACE_CALL(<span class="stringliteral">"remmina_plugin_entry"</span>);</div><div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>  rm_plugin_service = service;</div><div class="line"><a name="l03450"></a><span class="lineno"> 3450</span> </div><div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>  bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>  bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">"UTF-8"</span>);</div><div class="line"><a name="l03453"></a><span class="lineno"> 3453</span> </div><div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>  <span class="keywordflow">if</span> (!service-><a class="code" href="struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2">register_plugin</a>((<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *) &rmplugin_x2go)) {</div><div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>  }</div><div class="line"><a name="l03457"></a><span class="lineno"> 3457</span> </div><div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>  pthread_mutex_init(&<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>  <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> </div><div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"X2Go plugin loaded."</span>));</div><div class="line"><a name="l03462"></a><span class="lineno"> 3462</span> </div><div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03464"></a><span class="lineno"> 3464</span> }</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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Project: Remmina Plugin X2Go</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="comment"> * Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Antenore Gatta <antenore@simbiosi.org></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Copyright: 2010-2011 Vic Lee</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <span class="comment"> * 2015 Antenore Gatta</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * 2016-2018 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * 2019 Mike Gabriel</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * 2021 Daniel Teichmann</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * License: GPL-2+</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <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> <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> <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> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> *</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <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> <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> <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> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> *</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <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> <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> <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <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> <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> <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> <span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * including the two.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <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> <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> <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> <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> <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> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"> */</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "<a class="code" href="x2go__plugin_8h.html">x2go_plugin.h</a>"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="remmina__plugin_8h.html">common/remmina_plugin.h</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <gtk/gtkx.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <gdk/gdkx.h></span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <gdk/gdkwayland.h></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <X11/Xlib.h></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include <X11/XKBlib.h></span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include <X11/extensions/XKBrules.h></span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include <signal.h></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include <time.h></span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include <ctype.h></span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#define FEATURE_AVAILABLE(gpdata, feature) \</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"> gpdata->available_features ? (g_list_find_custom( \</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"> gpdata->available_features, \</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"> feature, \</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"> (GCompareFunc) g_strcmp0 \</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"> ) ? TRUE : FALSE) : FALSE</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#define FEATURE_NOT_AVAIL_STR(feature) \</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"> g_strdup_printf(_("The command-line feature '%s' is not available! Attempting " \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"> "to start PyHoca-CLI without using this feature…"), feature)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#define GET_PLUGIN_DATA(gp) \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> (RemminaPluginX2GoData*) g_object_get_data(G_OBJECT(gp), "plugin-data")</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// --------- SESSIONS ------------</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#define SET_RESUME_SESSION(gp, resume_data) \</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"> g_object_set_data_full(G_OBJECT(gp), "resume-session-data", \</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"> resume_data, \</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"> g_free)</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define GET_RESUME_SESSION(gp) \</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"> (gchar*) g_object_get_data(G_OBJECT(gp), "resume-session-data")</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <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> <span class="preprocessor">#define IS_SESSION_SELECTED(gp) \</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"> g_object_get_data(G_OBJECT(gp), "session-selected") ? TRUE : FALSE</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// We don'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> <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> <span class="preprocessor"> g_object_set_data_full(G_OBJECT(gp), "session-selected", \</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor"> is_session_selected, \</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor"> NULL)</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// -------------------</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#define REMMINA_PLUGIN_INFO(fmt, ...) \</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor"> rm_plugin_service->_remmina_info("[%s] " fmt, \</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#define REMMINA_PLUGIN_MESSAGE(fmt, ...) \</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor"> rm_plugin_service->_remmina_message("[%s] " fmt, \</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define REMMINA_PLUGIN_DEBUG(fmt, ...) \</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor"> rm_plugin_service->_remmina_debug(__func__, "[%s] " fmt, \</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#define REMMINA_PLUGIN_WARNING(fmt, ...) \</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor"> rm_plugin_service->_remmina_warning(__func__, "[%s] " fmt, \</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#define REMMINA_PLUGIN_AUDIT(fmt, ...) \</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor"> rm_plugin_service->_remmina_audit(__func__, fmt, ##__VA_ARGS__)</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#define REMMINA_PLUGIN_ERROR(fmt, ...) \</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor"> rm_plugin_service->_remmina_error(__func__, "[%s] " fmt, \</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#define REMMINA_PLUGIN_CRITICAL(fmt, ...) \</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor"> rm_plugin_service->_remmina_critical(__func__, "[%s] " fmt, \</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#define GET_PLUGIN_STRING(value) \</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor"> g_strdup(rm_plugin_service->file_get_string(remminafile, value))</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#define GET_PLUGIN_PASSWORD(value) \</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor"> GET_PLUGIN_STRING(value)</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#define GET_PLUGIN_INT(value, default_value) \</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor"> rm_plugin_service->file_get_int(remminafile, value, default_value)</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define GET_PLUGIN_BOOLEAN(value) \</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor"> rm_plugin_service->file_get_int(remminafile, value, FALSE)</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b"> 136</a></span> <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> </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> <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>  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>  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> </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>  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> </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>  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>  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>  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> </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>  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> </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>  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> </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>  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> } <a class="code" href="x2go__plugin_8c.html#a37d3729bb8c4dbd3be32eeea7d04c7d5">RemminaPluginX2GoData</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </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> <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>  <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>  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>  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>  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>  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> } <a class="code" href="x2go__plugin_8c.html#ab0e7b0c28fbb5ac24d7ed481250494b4">X2GoCustomUserData</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165"> 174</a></span> <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="comment">// Following str2int code was adapted from Stackoverflow:</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <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> <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>  <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>  <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>  <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>  <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>  <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> } <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> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645"> 217</a></span> <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> {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  gchar *end;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span> (!s || !out || base <= 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> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span> (s[0] == <span class="charliteral">'\0'</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> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  errno = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  glong l = strtol(s, &end, base);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <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>  <span class="keywordflow">if</span> (l > INT_MAX || (errno == ERANGE && 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>  <span class="keywordflow">if</span> (l < INT_MIN || (errno == ERANGE && 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>  <span class="keywordflow">if</span> (*end != <span class="charliteral">'\0'</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> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  *out = l;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <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> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="struct___dialog_data.html"> 267</a></span> <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> {</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a"> 269</a></span>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <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>  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>  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> };</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa"> 290</a></span> <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> {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not initialized!"</span>)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  ));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <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-><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>  <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-><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> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (ddata) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// Can't check type, flags or buttons</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// because they are enums and '0' is a valid value</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">if</span> (!ddata->title || !ddata->message) {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Broken `DialogData`! Aborting…"</span>));</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Can't retrieve `DialogData`! Aborting…"</span>));</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"`DialogData` checks passed. Now showing dialog…"</span>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  GtkWidget* widget_gtk_dialog = NULL;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (ddata->dialog_factory_func != NULL) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Calling *custom* dialog factory function…"</span>);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  GCallback dialog_factory_func = G_CALLBACK(ddata->dialog_factory_func);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  gpointer dialog_factory_data = ddata->dialog_factory_data;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <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>  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>  dialog_factory_func)(custom_data, dialog_factory_data);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  widget_gtk_dialog = gtk_message_dialog_new(ddata->parent,</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  ddata->flags,</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  ddata->type,</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  ddata->buttons,</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="stringliteral">"%s"</span>, ddata->title);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  gtk_message_dialog_format_secondary_text(</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  GTK_MESSAGE_DIALOG(widget_gtk_dialog), <span class="stringliteral">"%s"</span>, ddata->message);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">if</span> (!widget_gtk_dialog) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"Error! Aborting."</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span> (ddata->callbackfunc) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  g_signal_connect_swapped(G_OBJECT(widget_gtk_dialog), <span class="stringliteral">"response"</span>,</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  G_CALLBACK(ddata->callbackfunc),</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  custom_data);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  g_signal_connect(G_OBJECT(widget_gtk_dialog), <span class="stringliteral">"response"</span>,</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  G_CALLBACK(gtk_widget_destroy),</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  NULL);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  gtk_widget_show_all(widget_gtk_dialog);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// Delete ddata object and reference 'dialog-data' in gp.</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  g_object_set_data(G_OBJECT(gp), <span class="stringliteral">"dialog-data"</span>, NULL);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05"> 367</a></span> <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>  <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>  <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>  <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> };</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e"> 382</a></span> <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> {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <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>  <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>  <span class="keywordflow">return</span> parent;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span> (GTK_IS_BIN(parent)) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  GtkWidget *child = gtk_bin_get_child(GTK_BIN(parent));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <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>  }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span> (GTK_IS_CONTAINER(parent)) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  GList *children = gtk_container_get_children(GTK_CONTAINER(parent));</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">while</span> (children != NULL) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  GtkWidget *widget = <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(children->data, name);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span> (widget != NULL) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> widget;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  children = g_list_next(children);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a"> 419</a></span> <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>  GtkTreePath *path,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  GtkTreeViewColumn *column,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <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> {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not initialized!"</span>)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  ));</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <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-><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>  <span class="comment">// dialog_data (unused)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">// connect_data (unused)</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  GtkWidget* dialog = GTK_WIDGET(custom_data-><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> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  gchar *session_id;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  GtkTreeIter iter;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  GtkTreeModel *model = gtk_tree_view_get_model(treeview);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span> (gtk_tree_model_get_iter(model, &iter, path)) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  gtk_tree_model_get(GTK_TREE_MODEL(model), &iter,</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>, &session_id, -1);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// Silent bail out.</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">if</span> (!session_id || strlen(session_id) <= 0) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <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>  <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>  <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>  SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  gtk_widget_hide(GTK_WIDGET(dialog));</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6"> 471</a></span> <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>  gchar* return_char = NULL;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">switch</span> (session_property) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <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>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a">SESSION_DISPLAY</a>: return_char = g_strdup(_(<span class="stringliteral">"X Display"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b">SESSION_STATUS</a>: return_char = g_strdup(_(<span class="stringliteral">"Status"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <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">"Session ID"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <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">"Create date"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <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">"Suspended since"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <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">"Agent PID"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961">SESSION_USERNAME</a>: return_char = g_strdup(_(<span class="stringliteral">"Username"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a">SESSION_HOSTNAME</a>: return_char = g_strdup(_(<span class="stringliteral">"Hostname"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817">SESSION_COOKIE</a>: return_char = g_strdup(_(<span class="stringliteral">"Cookie"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <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">"Graphic port"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <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">"SND port"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <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">"SSHFS port"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <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">"Visible"</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">return</span> return_char;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1"> 509</a></span> <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>  GList *sessions_list)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><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>  !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> || !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not initialized!"</span>)</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  ));</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <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-><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> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  if (!ddata || !sessions_list || !ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>) {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Couldn't retrieve valid `DialogData` or "</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="stringliteral">"`sessions_list`! Aborting…"</span>));</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  GtkWidget *widget_gtk_dialog = NULL;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  widget_gtk_dialog = gtk_dialog_new_with_buttons(ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>, ddata-><a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a>,</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  ddata-><a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a>,</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="comment">// TRANSLATORS: Stick to x2goclient's translation for terminate.</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  _(<span class="stringliteral">"_Terminate"</span>),</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <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>  <span class="comment">// TRANSLATORS: Stick to x2goclient's translation for resume.</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  _(<span class="stringliteral">"_Resume"</span>),</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <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>  _(<span class="stringliteral">"_New"</span>),</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <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>  NULL);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  GtkWidget *button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  GTK_DIALOG(widget_gtk_dialog),</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <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>  <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>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's way of translating.</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  gtk_widget_set_tooltip_text(button, _(<span class="stringliteral">"Terminating X2Go sessions can take a moment."</span>));</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor"> #define DEFAULT_DIALOG_WIDTH 720</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <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> </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  gtk_widget_set_size_request(GTK_WIDGET(widget_gtk_dialog),</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_HEIGHT);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  gtk_window_set_default_size(GTK_WINDOW(widget_gtk_dialog),</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_HEIGHT);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  gtk_window_set_resizable(GTK_WINDOW(widget_gtk_dialog), TRUE);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="comment">//gtk_widget_show(scrolled_window);</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  GTK_DIALOG(widget_gtk_dialog))</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  ), GTK_WIDGET(scrolled_window), TRUE, TRUE, 5);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window),</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  GTK_POLICY_AUTOMATIC,</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  GTK_POLICY_AUTOMATIC);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  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> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="comment">// First to last in SESSION_PROPERTIES.</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">for</span> (gint i = 0; i < <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>  <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>  <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>  <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>  <span class="comment">// Especially in the session parser.</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <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>  types[i] = G_TYPE_BOOLEAN;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  types[i] = G_TYPE_STRING;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="comment">// create tree view</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  GtkListStore *store = gtk_list_store_newv(SESSION_NUM_PROPERTIES, types);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  GtkTreeModelFilter *filter = GTK_TREE_MODEL_FILTER(</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  gtk_tree_model_filter_new(GTK_TREE_MODEL(store),</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  NULL)</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  );</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  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> </div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  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>  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>  gtk_widget_set_size_request(tree_view, -1, 300);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <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>  gtk_widget_set_name(GTK_WIDGET(tree_view), <span class="stringliteral">"session_chooser_treeview"</span>);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> </div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="comment">// create list view columns</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  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>  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>  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>  gtk_widget_show (tree_view);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  gtk_container_add (GTK_CONTAINER(scrolled_window), tree_view);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  GtkTreeViewColumn *tree_view_col = NULL;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  GtkCellRenderer *cell_renderer = NULL;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  gchar *header_title = NULL;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> </div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// First to last in SESSION_PROPERTIES.</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">for</span> (guint i = 0; i < <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>  <span class="comment">// Do not display SESSION_DIALOG_IS_VISIBLE.</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <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> </div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  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>  <span class="keywordflow">if</span> (!header_title) {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  _(<span class="stringliteral">"Internal error: %s"</span>), g_strdup_printf(</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  _(<span class="stringliteral">"Unknown property '%i'"</span>), i</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  )));</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  header_title = g_strdup_printf(_(<span class="stringliteral">"Unknown property '%i'"</span>), i);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  tree_view_col = gtk_tree_view_column_new();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  gtk_tree_view_column_set_title(tree_view_col, header_title);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  gtk_tree_view_column_set_clickable(tree_view_col, FALSE);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  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>  gtk_tree_view_column_set_resizable(tree_view_col, TRUE);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  cell_renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  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>  gtk_tree_view_column_add_attribute(tree_view_col, cell_renderer, <span class="stringliteral">"text"</span>, i);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  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>  }</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  GList *elem = NULL;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  GtkTreeIter iter;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">for</span> (elem = sessions_list; elem; elem = elem->next) {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  gchar** session = (gchar**) elem->data;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  g_assert(session != NULL);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> </div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  gtk_list_store_append(store, &iter);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> </div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">for</span> (gint i = 0; i < <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>  gchar* <span class="keyword">property</span> = session[i];</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  GValue a = G_VALUE_INIT;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <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> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <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>  g_value_init(&a, G_TYPE_BOOLEAN);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  g_assert(G_VALUE_HOLDS_BOOLEAN(&a) && <span class="stringliteral">"GValue does not "</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="stringliteral">"hold a boolean!"</span>);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="comment">// Default is to show every new session.</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  g_value_set_boolean(&a, TRUE);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  g_value_init(&a, G_TYPE_STRING);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  g_assert(G_VALUE_HOLDS_STRING(&a) && <span class="stringliteral">"GValue does not "</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="stringliteral">"hold a string!"</span>);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  g_value_set_static_string (&a, property);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  }</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> </div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  gtk_list_store_set_value(store, &iter, i, &a);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> </div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="comment"> * connect_data -> connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="comment"> * opt1 -> dialog widget (GtkWidget*)</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="comment">// everything else is already initialized.</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  custom_data-><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> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  g_signal_connect(tree_view, <span class="stringliteral">"row-activated"</span>,</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  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>  custom_data);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> </div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">return</span> widget_gtk_dialog;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> </div><div class="line"><a name="l00702"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358"> 702</a></span> <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>  GtkTreeView* treeview)</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> {</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="comment">//REMMINA_PLUGIN_DEBUG("Function entry.");</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  GtkTreeModel *return_model = NULL;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">if</span> (!treeview && dialog) {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  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>  <span class="stringliteral">"session_chooser_treeview"</span>);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> </div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">if</span> (!treeview_new) {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  _(<span class="stringliteral">"Couldn't find child GtkTreeView of "</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="stringliteral">"session chooser dialog."</span>)</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  ));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> </div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (treeview) {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  return_model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  _(<span class="stringliteral">"Neither the 'dialog' nor 'treeview' parameters are initialized! "</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="stringliteral">"At least one of them must be given."</span>)</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  ));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  _(<span class="stringliteral">"Could not obtain \"GtkTreeModelFilter*\" of the session chooser dialog, "</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="stringliteral">"for unknown reason."</span>)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  ));</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> </div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">return</span> GTK_TREE_MODEL_FILTER(return_model);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div><div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3"> 753</a></span> <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> {</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> </div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  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>  <span class="stringliteral">"session_chooser_treeview"</span>);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">if</span> (!treeview) {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  _(<span class="stringliteral">"Couldn't find child GtkTreeView of session chooser dialog."</span>)</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  ));</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  }</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> </div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="keywordflow">if</span> (!selection) {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  _(<span class="stringliteral">"Couldn't get currently selected row (session)!"</span>)</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  ));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  }</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  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>  NULL, GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <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> </div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  GtkTreeModel *filter_model = GTK_TREE_MODEL(filter);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  g_assert(filter_model && <span class="stringliteral">"Could not cast 'filter' to a GtkTreeModel!"</span>);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  GList *selected_rows = gtk_tree_selection_get_selected_rows(selection, &filter_model);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> </div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="comment">// We only support single selection.</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  gint selected_rows_num = gtk_tree_selection_count_selected_rows(selection);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">if</span> (selected_rows_num != 1) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  _(<span class="stringliteral">"Internal error: %s"</span>), g_strdup_printf(</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  _(<span class="stringliteral">"Exactly one session should be selectable but '%i' rows "</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="stringliteral">"(sessions) are selected."</span>),</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  selected_rows_num</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  )));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> </div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="comment">// This would be very dangerous (we didn't check for NULL) if we hadn't just</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="comment">// checked that only one row is selected.</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  GtkTreePath *path = selected_rows->data;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> </div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <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>  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> </div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">return</span> path;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> }</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> </div><div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7"> 817</a></span> <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>  gint property_index,</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  GtkTreePath *row)</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> {</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="comment">//REMMINA_PLUGIN_DEBUG("Function entry.");</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  GValue ret_value = G_VALUE_INIT;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> </div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">if</span> (!row) {</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  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>  <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>  row = selected_row;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  }</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  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>  GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <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> </div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  GtkTreeIter iter;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  gboolean success = gtk_tree_model_get_iter(model, &iter, row);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keywordflow">if</span> (!success) {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  _(<span class="stringliteral">"Failed to fill 'GtkTreeIter'."</span>)</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  ));</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> ret_value;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> </div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  GValue <span class="keyword">property</span> = G_VALUE_INIT;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  gtk_tree_model_get_value(model, &iter, property_index, &property);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> </div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">return</span> property;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <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> <span class="comment"> GtkTreeIter *iter, GtkWidget *dialog)</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="comment">{</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> <span class="comment"> //REMMINA_PLUGIN_DEBUG("Function entry.");</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="comment"></span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="comment"> g_debug(_("Properties for session with path '%s':"), gtk_tree_path_to_string(path));</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> <span class="comment"> for (guint i = 0; i < SESSION_NUM_PROPERTIES; i++) {</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="comment"> GValue property = G_VALUE_INIT;</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> <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> <span class="comment"></span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <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> <span class="comment"> g_assert(display_name && "Couldn't get display name for a property!");</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> <span class="comment"></span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="comment"> if (i == SESSION_DIALOG_IS_VISIBLE) {</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="comment"> g_assert(G_VALUE_HOLDS_BOOLEAN(&property) && "GValue does not "</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="comment"> "hold a boolean!");</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> <span class="comment"> g_debug("\t%s: '%s'", display_name,</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="comment"> g_value_get_boolean(&property) ? "TRUE" : "FALSE");</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="comment"> } else {</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="comment"> g_assert(G_VALUE_HOLDS_STRING(&property) && "GValue does not "</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="comment"> "hold a string!");</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="comment"> g_debug("\t%s: '%s'", display_name, g_value_get_string(&property));</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="comment"> }</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="comment"> }</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="comment">}*/</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> </div><div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67"> 898</a></span> <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>  GError** error, gchar** env)</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">if</span> (!argv) {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  _(<span class="stringliteral">"parameter 'argv' is 'NULL'."</span>)</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  );</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  }</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> </div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">if</span> (!error) {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="comment">// Can't report error message back since 'error' is NULL.</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  _(<span class="stringliteral">"parameter 'error' is 'NULL'."</span>)</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  ));</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  }</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">if</span> (!env || !env[0]) {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  _(<span class="stringliteral">"parameter 'env' is either invalid or uninitialized."</span>)</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  );</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  gint exit_code = 0;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  gchar *standard_out;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="comment">// Just supresses pyhoca-cli's help message when pyhoca-cli's version is too old.</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  gchar *standard_err;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  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>  NULL, &standard_out, &standard_err,</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  &exit_code, error);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> </div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Started PyHoca-CLI with the following arguments:"</span>));</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <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>  <span class="keywordflow">for</span> (gint i = 0; i < argc - 1; i++) {</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  gchar* curr_arg = argv[i];</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> </div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keywordflow">if</span> (g_str_equal(curr_arg, <span class="stringliteral">"--password"</span>) ||</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  g_str_equal(curr_arg, <span class="stringliteral">"--ssh-passphrase"</span>)) {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  g_printf(<span class="stringliteral">"%s "</span>, curr_arg);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  g_printf(<span class="stringliteral">"XXXXXX "</span>);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  g_free(curr_arg);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  g_free(argv[++i]);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  g_printf(<span class="stringliteral">"%s "</span>, curr_arg);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  g_free(curr_arg);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  }</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  }</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  g_printf(<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> </div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="comment">/* TOO VERBOSE: */</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="comment">/*</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("%s", _("Started PyHoca-CLI with the "</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="comment"> "following environment variables:"));</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("%s", g_strjoinv("\n", env));</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <span class="comment"> */</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordflow">if</span> (standard_err && strlen(standard_err) > 0) {</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">if</span> (g_str_has_prefix(standard_err, <span class="stringliteral">"pyhoca-cli: error: a socket error "</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="stringliteral">"occured while establishing the connection:"</span>)) {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="comment">// Log error into GUI.</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  _(<span class="stringliteral">"The necessary PyHoca-CLI process has encountered a "</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="stringliteral">"internet connection problem."</span>)</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  );</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> </div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="comment">// Log error into debug window and stdout</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s:\n%s"</span>, errmsg, standard_err);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  _(<span class="stringliteral">"Could not start "</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="stringliteral">"PyHoca-CLI:\n%s"</span>),</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  standard_err</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  );</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!success_ret || (*error) || strlen(standard_out) <= 0 || exit_code) {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">if</span> (!(*error)) {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  _(<span class="stringliteral">"An unknown error occured while trying "</span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="stringliteral">"to start PyHoca-CLI. Exit code: %i"</span>),</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  exit_code);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  _(<span class="stringliteral">"An unknown error occured while trying to start "</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="stringliteral">"PyHoca-CLI. Exit code: %i. Error: '%s'"</span>),</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  exit_code, (*error)->message);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  }</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> </div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">return</span> standard_out;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> }</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div><div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="struct___connection_data.html"> 1016</a></span> <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>  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>  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>  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>  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>  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> };</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> </div><div class="line"><a name="l01036"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6"> 1036</a></span> <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>  gboolean value,</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  GtkDialog *dialog) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> </div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keywordflow">if</span> (!path || !dialog) {</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  _(<span class="stringliteral">"Neither the 'path' nor 'dialog' parameters are initialized."</span>)</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  ));</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  }</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  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>  GTK_WIDGET(dialog), NULL);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> </div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <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> </div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  GtkTreeIter iter;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">if</span> (!gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path)) {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  _(<span class="stringliteral">"GtkTreePath 'path' describes a non-existing row!"</span>)</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  ));</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  }</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> </div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <span class="comment">// Make session either visible or invisible.</span></div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  gtk_list_store_set(GTK_LIST_STORE(model), &iter,</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <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> </div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <span class="comment">// Update row.</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  gtk_tree_model_row_changed(GTK_TREE_MODEL(model), path, &iter);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> </div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="comment">/* Get IS_VISIBLE flag of a session. */</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="comment">// GValue ret_value = G_VALUE_INIT;</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <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>  <span class="comment">// SESSION_DIALOG_IS_VISIBLE,</span></div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <span class="comment">// path);</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="comment">// g_debug("Is visible: %s", g_value_get_boolean(&ret_value) ? "TRUE" : "FALSE");</span></div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> </div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  GtkWidget *term_button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  GTK_DIALOG(dialog),</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <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>  GtkWidget *resume_button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  GTK_DIALOG(dialog),</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <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> </div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <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>  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>  <span class="keywordflow">if</span> (rows_amount <= 0) {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  gtk_widget_set_sensitive(term_button, FALSE);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  gtk_widget_set_sensitive(resume_button, FALSE);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  gtk_widget_set_sensitive(term_button, TRUE);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  gtk_widget_set_sensitive(resume_button, TRUE);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  }</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> </div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="comment">// Success, yay!</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> }</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div><div class="line"><a name="l01102"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb"> 1102</a></span> <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>  <span class="comment">/* Check connect_data. */</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keywordflow">if</span> (!connect_data ||</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  !connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> ||</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  !connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> ||</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  strlen(connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>) <= 0 ||</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  strlen(connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>) <= 0)</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  {</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  _(<span class="stringliteral">"'Invalid connection data.'"</span>)</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  ));</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> </div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordflow">if</span> (!connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> && (!connect_data-><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>  strlen(connect_data-><a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>) <= 0)) {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  _(<span class="stringliteral">"'Invalid connection data.'"</span>)</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  ));</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> </div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> }</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> </div><div class="line"><a name="l01145"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9"> 1145</a></span> <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> {</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> </div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><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>  !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> || !custom_data-><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>  !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> || !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not fully initialized!"</span>)</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  ));</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> </div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  }</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> </div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="comment">// Extract data passed by X2GoCustomUserData *custom_data.</span></div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(custom_data-><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>  <span class="comment">//struct _DialogData *ddata = (struct _DialogData*) custom_data->dialog_data;</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <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-><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>  GtkTreePath* selected_row = (GtkTreePath*) custom_data-><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>  GtkDialog *dialog = GTK_DIALOG(custom_data-><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> </div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  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>  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>  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>  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>  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>  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>  <span class="keywordflow">if</span> (valid) {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">if</span> (connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>) password = connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordflow">if</span> (connect_data-><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>  ssh_privatekey = connect_data-><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> </div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="keywordflow">if</span> (connect_data-><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>  ssh_passphrase = connect_data-><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>  }</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  }</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> </div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  host = connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  username = connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  }</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> </div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  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>  <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>  selected_row);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  <span class="comment">// error message was handled already.</span></div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keywordflow">if</span> (!G_VALUE_HOLDS_STRING(&value)) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keyword">const</span> gchar *session_id = g_value_get_string(&value);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> </div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="comment">// We will now start pyhoca-cli with only the '--terminate $SESSION_ID' option.</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="comment">// (and of course auth related stuff)</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  gchar *argv[50];</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  gint argc = 0;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  argv[argc++] = g_strdup(<span class="stringliteral">"pyhoca-cli"</span>);</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> </div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--server"</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, host);</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> </div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"USERNAME"</span>)) {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-u"</span>);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  <span class="keywordflow">if</span> (username) {</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, username);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, g_get_user_name());</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  }</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"USERNAME"</span>));</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  }</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> </div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <span class="keywordflow">if</span> (password && FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"PASSWORD"</span>)) {</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"AUTH_ATTEMPTS"</span>)) {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--auth-attempts"</span>);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%i"</span>, 0);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"AUTH_ATTEMPTS"</span>));</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  }</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <span class="keywordflow">if</span> (strlen(password) > 0) {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--force-password"</span>);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--password"</span>);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, password);</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  }</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"PASSWORD"</span>));</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  }</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> </div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"TERMINATE"</span>)) {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--terminate"</span>);</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, session_id);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"TERMINATE"</span>));</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  }</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> </div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"NON_INTERACTIVE"</span>)) {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--non-interactive"</span>);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"NON_INTERACTIVE"</span>));</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  }</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> </div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PRIVKEY"</span>)) {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keywordflow">if</span> (ssh_privatekey && !g_str_equal(ssh_privatekey, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-privkey"</span>);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_privatekey);</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> </div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="keywordflow">if</span> (ssh_passphrase && !g_str_equal(ssh_passphrase, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PASSPHRASE"</span>)) {</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-passphrase"</span>);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_passphrase);</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PASSPHRASE"</span>));</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  }</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  }</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  }</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PRIVKEY"</span>));</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  }</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> </div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  argv[argc++] = NULL;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> </div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  GError* error = NULL;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  gchar** envp = g_get_environ();</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  <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="l01272"></a><span class="lineno"> 1272</span>  g_strfreev(envp);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> </div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  gchar *err_msg = g_strdup_printf(</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  _(<span class="stringliteral">"An error occured while trying to terminate X2Go session '%s':\n%s"</span>),</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  session_id,</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  error->message</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  );</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> </div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, err_msg);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> </div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <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>  err_ddata-><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>  err_ddata-><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>  err_ddata-><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>  err_ddata-><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>  err_ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">"An error occured."</span>);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  err_ddata-><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>  <span class="comment">// We don't need the response.</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  err_ddata-><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>  <span class="comment">// We don't need a custom dialog either.</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  err_ddata-><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>  err_ddata-><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> </div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> <span class="comment"> */</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  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> </div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="comment">// Too verbose:</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <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>  <span class="comment">// GTK_TREE_MODEL_FILTER(filter));</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <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>  <span class="comment">// rmplugin_x2go_dump_session_properties, dialog);</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <span class="comment">// Set row visible again since we couldn't terminate the session.</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <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>  dialog)) {</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  }</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  }</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span> }</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> </div><div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479"> 1339</a></span> <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>  gint response_id,</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  GtkDialog *<span class="keyword">self</span>)</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> {</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keywordflow">if</span> (!custom_data || !custom_data-><a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-><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>  !custom_data-><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>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  _(<span class="stringliteral">"Parameter 'custom_data' is not initialized!"</span>)</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  ));</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> </div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  }</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <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-><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> </div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  <span class="comment">// Don'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>  <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>  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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"The user explicitly requested a new session. "</span></div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  <span class="stringliteral">"Creating a new session…"</span>);</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> </div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <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>  <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>  <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>  SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  gtk_widget_destroy(GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> </div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  }</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> </div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  <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>  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>  GTK_WIDGET(<span class="keyword">self</span>),</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  <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>  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>  );</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> </div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  <span class="comment">// error message was handled already.</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  <span class="keywordflow">if</span> (!G_VALUE_HOLDS_STRING(&value)) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> </div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  gchar *session_id = (gchar*) g_value_get_string(&value);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> </div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  <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>  <span class="keywordflow">if</span> (!session_id || strlen(session_id) <= 0) {</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  REMMINA_PLUGIN_DEBUG(</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  <span class="stringliteral">"%s"</span>,</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  _(<span class="stringliteral">"Couldn't get session ID from session chooser dialog."</span>)</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  );</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> </div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  _(<span class="stringliteral">"Resuming session: '%s'"</span>),</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  session_id</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  ));</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  }</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  } <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>  <span class="keywordflow">if</span> (!session_id || strlen(session_id) <= 0) {</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  REMMINA_PLUGIN_DEBUG(</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  <span class="stringliteral">"%s"</span>,</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  _(<span class="stringliteral">"Couldn't get session ID from session chooser dialog."</span>)</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  );</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  _(<span class="stringliteral">"Terminating session: '%s'"</span>),</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  session_id</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  ));</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  }</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  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>  GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  <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> </div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  <span class="comment">// Actually set row invisible.</span></div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  <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>  <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  }</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> </div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> <span class="comment"> * connect_data -> connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> <span class="comment"> * opt1 -> selected row (GtkTreePath*)</span></div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> <span class="comment"> * opt2 -> session selection dialog (GtkDialog*)</span></div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> <span class="comment"> */</span></div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  <span class="comment">// everything else is already initialized.</span></div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  <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>  g_thread_new(<span class="stringliteral">"terminate-session-thread"</span>,</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  (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>  custom_data);</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> </div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  <span class="comment">// Dialog should stay open.</span></div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"User clicked dialog away. "</span></div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  <span class="stringliteral">"Creating a new session then."</span>);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  }</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> </div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  <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>  <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>  <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>  SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> </div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  gtk_widget_destroy(GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> </div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> }</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> </div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> <span class="preprocessor">#define RMPLUGIN_X2GO_FEATURE_GTKSOCKET 1</span></div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> </div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <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> <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> </div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> <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> <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> <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> <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> <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> </div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <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> <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> {</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>  <span class="keyword">enum</span> { FUNC_GTK_SOCKET_ADD_ID } func;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> </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>  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>  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> </div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  <span class="comment">/* Mutex for thread synchronization */</span></div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  pthread_mutex_t mu;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  <span class="comment">/* Flag to catch cancellations */</span></div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  gboolean cancelled;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> };</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> </div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1"> 1486</a></span> <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> {</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <span class="keywordflow">if</span> (!d-><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>  <span class="keywordflow">switch</span> (d-><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>  <span class="keywordflow">case</span> FUNC_GTK_SOCKET_ADD_ID:</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  gtk_socket_add_id(d-><a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>, d-><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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  }</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  pthread_mutex_unlock(&d-><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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  <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>  g_free(d);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  }</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> }</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span> </div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span> </div><div class="line"><a name="l01504"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49"> 1504</a></span> <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> {</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <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>  d-><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> }</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> </div><div class="line"><a name="l01511"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53"> 1511</a></span> <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> {</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>  d-><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>  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>  pthread_mutex_init(&d-><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>  pthread_mutex_lock(&d-><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>  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> </div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  pthread_mutex_lock(&d->mu);</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span> </div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  pthread_cleanup_pop(0);</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  pthread_mutex_unlock(&d->mu);</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>  pthread_mutex_destroy(&d->mu);</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> }</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> </div><div class="line"><a name="l01527"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43"> 1527</a></span> <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> {</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> </div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>  <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> </div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>  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>  d-><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>  d-><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>  d-><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> </div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  <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>  g_free(d);</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> }</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> <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> </div><div class="line"><a name="l01543"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d"> 1543</a></span> <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> {</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  gint i;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  gboolean already_seen = FALSE;</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  pthread_mutex_lock(&<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>  <span class="keywordflow">for</span> (i = 0; i < <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>->len; i++) {</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  <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>  already_seen = TRUE;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Window of X2Go Agent with ID [0x%lx] seen already."</span>,</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  window_id);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  }</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  }</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> </div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <span class="keywordflow">if</span> (already_seen) {</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>  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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Forgetting about window of X2Go Agent with ID [0x%lx]…"</span>,</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  window_id);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  }</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span> </div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  pthread_mutex_unlock(&<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> }</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span> </div><div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a"> 1572</a></span> <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> {</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  gchar *server;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  gint port;</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span> </div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = rm_plugin_service-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>),</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  22,</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  &server,</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  &port);</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> </div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">"Disconnected from %s:%d via X2Go"</span>), server, port);</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  g_free(server), server = NULL;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> </div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <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>  <span class="keywordflow">if</span> (gpdata == NULL) {</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Exiting since gpdata is already 'NULL'…"</span>);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  }</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> </div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  <span class="keywordflow">if</span> (gpdata-><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>  pthread_cancel(gpdata-><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>  <span class="keywordflow">if</span> (gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>) pthread_join(gpdata-><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>  }</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span> </div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  <span class="keywordflow">if</span> (gpdata-><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>  <a class="code" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d">rmplugin_x2go_remove_window_id</a>(gpdata-><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>  }</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span> </div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  <span class="keywordflow">if</span> (gpdata-><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>  kill(gpdata-><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>  g_spawn_close_pid(gpdata-><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>  gpdata-><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>  }</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> </div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>  <span class="keywordflow">if</span> (gpdata-><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>  XSetErrorHandler(gpdata-><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>  XCloseDisplay(gpdata-><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>  gpdata-><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>  }</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> </div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  g_object_steal_data(G_OBJECT(gp), <span class="stringliteral">"plugin-data"</span>);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  rm_plugin_service-><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> </div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> }</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> </div><div class="line"><a name="l01621"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321"> 1621</a></span> <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> {</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  <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> </div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> </div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>  <span class="keywordflow">if</span> (gpdata-><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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Doing nothing since the plugin is already disconnected."</span>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  }</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> </div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>  <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> </div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>  <span class="comment">// Try again.</span></div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> }</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> </div><div class="line"><a name="l01639"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee"> 1639</a></span> <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>  gint status,</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  <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> {</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> </div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>  <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>  <span class="keywordflow">if</span> (!gpdata) {</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Doing nothing as the disconnection "</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>  <span class="stringliteral">"has already been handled."</span>);</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  }</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span> </div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>  <span class="keywordflow">if</span> (gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> <= 0) {</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Doing nothing since pyhoca-cli was expected to stop."</span>);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  }</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> </div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"PyHoca-CLI exited unexpectedly. "</span></div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>  <span class="stringliteral">"This connection will now be closed."</span>));</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> </div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  <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>  ddata-><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>  ddata-><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>  ddata-><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>  ddata-><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>  ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">"An error occured."</span>);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  ddata-><a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = _(<span class="stringliteral">"The necessary child process 'pyhoca-cli' stopped unexpectedly.\n"</span></div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  <span class="stringliteral">"Please check your profile settings and PyHoca-CLI's output for "</span></div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  <span class="stringliteral">"possible errors. Also ensure the remote server is "</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  <span class="stringliteral">"reachable and you're using the right credentials."</span>);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  <span class="comment">// We don't need the response.</span></div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>  ddata-><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>  <span class="comment">// We don't need a custom dialog either.</span></div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>  ddata-><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>  ddata-><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> </div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> <span class="comment"> */</span></div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  <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>  g_assert(custom_data && <span class="stringliteral">"custom_data could not be initialized."</span>);</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> </div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>  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> </div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>  <span class="comment">// 1 Second. Give `Dialog` chance to open.</span></div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>  usleep(1000 * 1000);</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span> </div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>  <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> }</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> </div><div class="line"><a name="l01700"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11"> 1700</a></span> <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>  gchar* s_username, gchar* s_password,</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>  gchar* errmsg)</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span> {</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>  <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>  <span class="comment">// into remminafile->settings. They will be saved later, on successful</span></div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  <span class="comment">// connection, by rcw.c</span></div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>  <span class="keywordflow">if</span> (s_password && s_username) {</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>  <span class="keywordflow">if</span> (g_strcmp0(s_username, <span class="stringliteral">""</span>) == 0) {</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"Can't save empty username!"</span>), 512);</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>  <span class="comment">//REMMINA_PLUGIN_CRITICAL("%s", errmsg); // No need.</span></div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>  }</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> </div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>  <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>  <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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">"password"</span>,</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>  s_password);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">"username"</span>,</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  s_username);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>  g_strlcpy(errmsg, g_strdup_printf(</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>  _(<span class="stringliteral">"Could not save new credentials."</span>)</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  ), 512);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> </div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"An error occured while trying to save "</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>  <span class="stringliteral">"new credentials: 's_password' or "</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>  <span class="stringliteral">"'s_username' strings were not set."</span>));</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>  }</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> </div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> }</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> </div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> </div><div class="line"><a name="l01744"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9"> 1744</a></span> <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>  gchar **passphrase)</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> {</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> </div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>  g_assert(errmsg != NULL);</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>  g_assert(gp != NULL);</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> </div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>  <span class="keywordflow">if</span> ((*passphrase) == NULL) {</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  <span class="comment">// Just setting NULL password to empty password.</span></div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>  (*passphrase) = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  }</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span> </div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>  gint ret = rm_plugin_service-><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>  gp, 0, _(<span class="stringliteral">"Enter password to unlock the SSH key:"</span>),</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  NULL, *passphrase, NULL, NULL</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>  );</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> </div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  gchar *s_passphrase = rm_plugin_service-><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>  <span class="keywordflow">if</span> (s_passphrase) {</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  (*passphrase) = g_strdup(s_passphrase);</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  g_free(s_passphrase);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>  }</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"Password input cancelled. Aborting…"</span>), 512);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>  }</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> </div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span> }</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> </div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> </div><div class="line"><a name="l01786"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4"> 1786</a></span> <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>  gchar** default_username, gchar** default_password)</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span> {</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> </div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>  g_assert(errmsg != NULL);</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>  g_assert(gp != NULL);</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>  g_assert(default_username != NULL);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>  g_assert(default_password != NULL);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span> </div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>  <span class="comment">// default_username is probably NULL because the user didn't configure any</span></div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>  <span class="comment">// username in the profile settings.</span></div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  <span class="keywordflow">if</span> ((*default_username) == NULL) {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>  gchar* l_errmsg = g_strdup_printf(</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>  _(<span class="stringliteral">"Tip: Check the 'Save password' checkbox or manually input your "</span></div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  <span class="stringliteral">"X2Go username and password in the profile settings to store "</span></div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>  <span class="stringliteral">"them for faster logins."</span>)</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>  );</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, l_errmsg);</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  (*default_username) = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>  }</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> </div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <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>  <span class="comment">// secret-plugin. For example: The user didn't input a password for keyring or</span></div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  <span class="comment">// the user simply didn't configure a password in the profile settings.</span></div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>  <span class="keywordflow">if</span> ((*default_password) == NULL) {</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  (*default_password) = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span> </div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>  gchar *s_username, *s_password;</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  gint ret;</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>  gboolean save;</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>  gboolean disable_password_storing;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> </div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  remminafile = rm_plugin_service-><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> </div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>  disable_password_storing = rm_plugin_service-><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>  remminafile, <span class="stringliteral">"disablepasswordstoring"</span>, FALSE</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>  );</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span> </div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  ret = rm_plugin_service-><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>  gp, (disable_password_storing ? 0 :</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>  <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>  <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>  _(<span class="stringliteral">"Enter X2Go credentials"</span>),</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>  (*default_username), (*default_password), NULL, NULL</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>  );</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span> </div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>  <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  s_username = rm_plugin_service-><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>  s_password = rm_plugin_service-><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>  <span class="keywordflow">if</span> (rm_plugin_service-><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>  rm_plugin_service-><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>  remminafile, <span class="stringliteral">"password"</span>, s_password</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>  );</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>  <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>  save = rm_plugin_service-><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>  <span class="keywordflow">if</span> (save) {</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  <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>  s_password, errmsg)) {</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>  }</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>  }</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  <span class="keywordflow">if</span> (s_username) {</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  (*default_username) = g_strdup(s_username);</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  g_free(s_username);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  }</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>  <span class="keywordflow">if</span> (s_password) {</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>  (*default_password) = g_strdup(s_password);</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>  g_free(s_password);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>  }</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"Authentication cancelled. Aborting…"</span>), 512);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  }</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> </div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> }</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> </div><div class="line"><a name="l01878"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850"> 1878</a></span> <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>  <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> {</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>  <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> </div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>  gchar *host = NULL;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>  gchar *username = NULL;</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>  gchar *password = NULL;</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>  gchar *ssh_privatekey = NULL;</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>  gchar *ssh_passphrase = NULL;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>  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> </div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>  <span class="keywordflow">if</span> (valid) {</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>  <span class="keywordflow">if</span> (connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>) password = connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>  <span class="keywordflow">if</span> (connect_data-><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>  ssh_privatekey = connect_data-><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> </div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>  <span class="keywordflow">if</span> (connect_data-><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>  ssh_passphrase = connect_data-><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>  }</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>  }</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span> </div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>  host = connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>  username = connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>  <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>  }</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> </div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>  <span class="comment">// We will now start pyhoca-cli with only the '--list-sessions' option.</span></div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span> </div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>  gchar *argv[50];</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>  gint argc = 0;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span> </div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>  argv[argc++] = g_strdup(<span class="stringliteral">"pyhoca-cli"</span>);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--list-sessions"</span>);</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> </div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--server"</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, host);</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span> </div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"USERNAME"</span>)) {</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-u"</span>);</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>  <span class="keywordflow">if</span> (username) {</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, username);</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, g_get_user_name());</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>  }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"USERNAME"</span>));</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"USERNAME"</span>));</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span> </div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"NON_INTERACTIVE"</span>)) {</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--non-interactive"</span>);</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"NON_INTERACTIVE"</span>));</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  }</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span> </div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>  <span class="keywordflow">if</span> (password && FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"PASSWORD"</span>)) {</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"AUTH_ATTEMPTS"</span>)) {</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--auth-attempts"</span>);</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%i"</span>, 0);</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"AUTH_ATTEMPTS"</span>));</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>  }</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>  <span class="keywordflow">if</span> (strlen(password) > 0) {</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--force-password"</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--password"</span>);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, password);</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>  }</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"PASSWORD"</span>));</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"PASSWORD"</span>));</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>  }</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span> </div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  <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>  <span class="comment">// `--quiet` is not that important.</span></div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"QUIET"</span>)) {</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--quiet"</span>);</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  }</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span> </div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PRIVKEY"</span>)) {</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>  <span class="keywordflow">if</span> (ssh_privatekey && !g_str_equal(ssh_privatekey, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-privkey"</span>);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_privatekey);</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span> </div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>  <span class="keywordflow">if</span> (ssh_passphrase && !g_str_equal(ssh_passphrase, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PASSPHRASE"</span>)) {</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-passphrase"</span>);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_passphrase);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PASSPHRASE"</span>));</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>  }</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  }</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>  }</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PRIVKEY"</span>));</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  }</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span> </div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span> </div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>  argv[argc++] = NULL;</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span> </div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>  <span class="comment">//#ifndef GLIB_AVAILABLE_IN_2_68</span></div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>  gchar** envp = g_get_environ();</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  gchar* envp_splitted = g_strjoinv(<span class="stringliteral">";"</span>, envp);</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>  envp_splitted = g_strconcat(envp_splitted, <span class="stringliteral">";LANG=C"</span>, (<span class="keywordtype">void</span>*) NULL);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  envp = g_strsplit(envp_splitted, <span class="stringliteral">";"</span>, 0);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>  <span class="comment">/*</span></div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span> <span class="comment"> * #else</span></div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span> <span class="comment"> * // Only available after glib version 2.68.</span></div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span> <span class="comment"> * // TODO: FIXME: NOT TESTED!</span></div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span> <span class="comment"> * GStrvBuilder* builder = g_strv_builder_new();</span></div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> <span class="comment"> * g_strv_builder_add(builder, "LANG=C");</span></div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span> <span class="comment"> * GStrv envp = g_strv_builder_end(builder);</span></div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span> <span class="comment"> * #endif</span></div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span> <span class="comment"> */</span></div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span> </div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>  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>  g_strfreev(envp);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> </div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>  <span class="keywordflow">if</span> (!std_out || *error) {</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>  <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>  <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>  <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>  g_assert((*error) != NULL);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>  }</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span> </div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>  <span class="keywordflow">return</span> std_out;</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span> }</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span> </div><div class="line"><a name="l02026"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604"> 2026</a></span> <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>  GError **error,</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>  <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> {</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span> </div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>  gchar *pyhoca_output = NULL;</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span> </div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>  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>  <span class="keywordflow">if</span> (!pyhoca_output || *error) {</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>  <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>  <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>  <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>  g_assert((*error) != NULL);</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> </div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>  }</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> </div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>  gchar **lines_list = g_strsplit(pyhoca_output, <span class="stringliteral">"\n"</span>, -1);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  <span class="comment">// Assume at least two lines of output.</span></div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <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>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Couldn't parse the output of PyHoca-CLI's "</span></div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  <span class="stringliteral">"--list-sessions option. Creating a new "</span></div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>  <span class="stringliteral">"session now."</span>));</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>  }</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span> </div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>  gboolean found_session = FALSE;</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>  GList* sessions = NULL;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>  gchar** session = NULL;</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span> </div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>  <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>  gchar* current_line = lines_list[i];</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span> </div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>  <span class="comment">// TOO VERBOSE:</span></div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>  <span class="comment">//REMMINA_PLUGIN_DEBUG("pyhoca-cli: %s", current_line);</span></div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> </div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>  <span class="comment">// Hardcoded string "Session Name: " comes from python-x2go.</span></div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>  <span class="keywordflow">if</span> (!g_str_has_prefix(current_line, <span class="stringliteral">"Session Name: "</span>) && !found_session) {</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>  <span class="comment">// Doesn't begin with "Session Name: " and</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>  <span class="comment">// the current line doesn't come after that either. Skipping.</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>  }</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span> </div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"Session Name: "</span>)) {</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>  gchar* session_id = NULL;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>  gchar** line_list = g_strsplit(current_line, <span class="stringliteral">": "</span>, 0);</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> </div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>  <span class="keywordflow">if</span> (line_list == NULL ||</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>  line_list[0] == NULL ||</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  line_list[1] == NULL ||</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>  strlen(line_list[0]) <= 0 ||</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>  strlen(line_list[1]) <= 0)</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  {</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>  found_session = FALSE;</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  }</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span> </div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  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>  <span class="keywordflow">if</span> (!session) {</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Couldn't allocate "</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>  <span class="stringliteral">"enough memory!"</span>));</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>  }</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  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>  sessions = g_list_append(sessions, session);</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> </div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>  session_id = line_list[1];</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>  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> </div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>  _(<span class="stringliteral">"Found already existing X2Go session with ID: '%s'"</span>),</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>  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>  );</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span> </div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  found_session = TRUE;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  }</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> </div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  <span class="keywordflow">if</span> (!found_session) {</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  }</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span> </div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>  <span class="keywordflow">if</span> (g_strcmp0(current_line, <span class="stringliteral">"-------------"</span>) == 0) {</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>  }</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span> </div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>  gchar* value = NULL;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>  gchar** line_list = g_strsplit(current_line, <span class="stringliteral">": "</span>, 0);</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> </div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>  <span class="keywordflow">if</span> (line_list == NULL ||</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>  line_list[0] == NULL ||</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>  line_list[1] == NULL ||</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>  strlen(line_list[0]) <= 0 ||</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>  strlen(line_list[1]) <= 0)</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  {</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  <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>  found_session = FALSE;</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>  }</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>  value = line_list[1];</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span> </div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"cookie: "</span>)) {</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"cookie:\t'%s'"</span>, value);</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"agent PID: "</span>)) {</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"agent PID:\t'%s'"</span>, value);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"display: "</span>)) {</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"display:\t'%s'"</span>, value);</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"status: "</span>)) {</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>  <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">"S"</span>) == 0) {</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's translation.</span></div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>  value = _(<span class="stringliteral">"Suspended"</span>);</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">"R"</span>) == 0) {</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's translation.</span></div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>  value = _(<span class="stringliteral">"Running"</span>);</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">"T"</span>) == 0) {</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's translation.</span></div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>  value = _(<span class="stringliteral">"Terminated"</span>);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>  }</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"status:\t'%s'"</span>, value);</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"graphic port: "</span>)) {</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"graphic port:\t'%s'"</span>, value);</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"snd port: "</span>)) {</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"snd port:\t'%s'"</span>, value);</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"sshfs port: "</span>)) {</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"sshfs port:\t'%s'"</span>, value);</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"username: "</span>)) {</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"username:\t'%s'"</span>, value);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"hostname: "</span>)) {</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"hostname:\t'%s'"</span>, value);</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"create date: "</span>)) {</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"create date:\t'%s'"</span>, value);</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>  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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">"suspended since: "</span>)) {</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"suspended since:\t'%s'"</span>, value);</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>  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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Not supported:\t'%s'"</span>, value);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>  found_session = FALSE;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>  }</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>  }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span> </div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>  <span class="keywordflow">if</span> (!sessions) {</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>  g_set_error(error, 1, 1,</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>  <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Could not find any sessions on remote machine. Creating a new "</span></div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  <span class="stringliteral">"session now."</span>)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>  );</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> </div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>  <span class="comment">// returning NULL with `error` set.</span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  }</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> </div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  <span class="keywordflow">return</span> sessions;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span> }</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span> </div><div class="line"><a name="l02198"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63"> 2198</a></span> <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>  <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> {</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>  <span class="keywordflow">if</span> (!connect_data ||</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>  !connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> ||</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>  !connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> ||</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>  !connect_data-><a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> ||</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  strlen(connect_data-><a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>) <= 0 ||</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>  strlen(connect_data-><a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>) <= 0)</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  <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>  {</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>  _(<span class="stringliteral">"'Invalid connection data.'"</span>)</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>  ));</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  }</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> </div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>  GList *sessions_list = NULL;</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  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> </div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>  <span class="keywordflow">if</span> (!sessions_list || *error) {</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  <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>  <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>  <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>  g_assert(*error != NULL);</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>  }</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span> </div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>  <span class="comment">// Prep new DialogData struct.</span></div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>  <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>  ddata-><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>  ddata-><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>  <span class="comment">//ddata->type = GTK_MESSAGE_QUESTION;</span></div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>  <span class="comment">//ddata->buttons = GTK_BUTTONS_OK; // Doesn't get used in our custom factory.</span></div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>  ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">"Choose a session to resume:"</span>);</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>  ddata-><a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = <span class="stringliteral">""</span>;</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span> </div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>  <span class="comment">// gboolean factory(X2GoCustomUserData*, gpointer)</span></div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>  <span class="comment">// X2GoCustomUserData*:</span></div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>  <span class="comment">// gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>  <span class="comment">// dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>  <span class="comment">// connect_data -> connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>  <span class="comment">// gpointer: dialog_factory_data</span></div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>  ddata-><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> </div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  <span class="comment">// gboolean factory(X2GoCustomUserData*, gpointer)</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>  <span class="comment">// X2GoCustomUserData*:</span></div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>  <span class="comment">// gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>  <span class="comment">// dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>  <span class="comment">// connect_data -> connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>  <span class="comment">// gpointer: dialog_factory_data</span></div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>  ddata-><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>  ddata-><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> </div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span> <span class="comment"> */</span></div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>  <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>  g_assert(custom_data && <span class="stringliteral">"custom_data could not be initialized."</span>);</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span> </div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>  custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  <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>  <span class="comment">// should set SET_RESUME_SESSION.</span></div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>  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> </div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>  guint counter = 0;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>  <span class="keywordflow">while</span> (!IS_SESSION_SELECTED(gp)) {</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>  <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>  usleep(500 * 1000);</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span> </div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>  <span class="comment">// Every 5 seconds</span></div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>  <span class="keywordflow">if</span> (counter % 10 == 0 || counter == 0) {</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Waiting for user to select a session…"</span>));</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>  }</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>  counter++;</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  }</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span> </div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>  gchar* chosen_resume_session = GET_RESUME_SESSION(gp);</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span> </div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>  <span class="keywordflow">if</span> (!chosen_resume_session || strlen(chosen_resume_session) <= 0) {</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  g_set_error(error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"No session was selected. Creating a new one."</span>));</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>  }</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span> </div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>  <span class="keywordflow">return</span> chosen_resume_session;</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span> }</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> </div><div class="line"><a name="l02291"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085"> 2291</a></span> <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>  gint sshport,</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>  gchar *username,</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>  gchar *password,</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>  gchar *command,</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>  gchar *kbdlayout,</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>  gchar *kbdtype,</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>  gchar *audio,</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  gchar *clipboard,</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  gint dpi,</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>  gchar *resolution,</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>  gchar *ssh_privatekey,</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  <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>  gchar *errmsg)</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span> {</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>  <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> </div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>  gchar *argv[50];</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  gint argc = 0;</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span> </div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  <span class="comment">// We don't want to save any SSH passphrases on hard drive!</span></div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  <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>  gchar *ssh_passphrase = NULL;</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span> </div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  <span class="keywordflow">if</span> (!username || strlen(username) <= 0) {</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>  <span class="comment">// Sets `username` and `password`.</span></div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>  <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4">rmplugin_x2go_get_auth</a>(gp, errmsg, &username, &password)) {</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  }</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>  }</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span> </div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>  <span class="comment">// Password can be *empty* but not NULL.</span></div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>  <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>  password = g_strdup(<span class="stringliteral">""</span>);</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>  }</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span> </div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>  <span class="keywordflow">if</span> (ssh_privatekey && strlen(ssh_privatekey) > 0) {</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>  <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>  <span class="comment">// See: https://security.stackexchange.com/a/245767</span></div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span> </div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>  <span class="comment">// Get ssh_privatekey now via dialog.</span></div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>  <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9">rmplugin_x2go_get_ssh_passphrase</a>(gp, errmsg, &ssh_passphrase)) {</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>  }</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>  }</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span> </div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>  <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>  connect_data-><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>  connect_data-><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>  connect_data-><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>  connect_data-><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>  connect_data-><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> </div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>  GError *session_error = NULL;</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>  gchar* resume_session_id = <a class="code" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63">rmplugin_x2go_ask_session</a>(gp, &session_error,</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>  connect_data);</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span> </div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>  <span class="keywordflow">if</span> (!resume_session_id || session_error || strlen(resume_session_id) <= 0) {</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  <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>  <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>  <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>  g_assert(session_error != NULL);</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span> </div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>  _(<span class="stringliteral">"A non-critical error happened: %s"</span>),</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>  session_error->message</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>  ));</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>  _(<span class="stringliteral">"User chose to resume session with ID: '%s'"</span>),</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  resume_session_id</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>  ));</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>  }</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span> </div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>  argc = 0;</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>  argv[argc++] = g_strdup(<span class="stringliteral">"pyhoca-cli"</span>);</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> </div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--server"</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, host);</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span> </div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"REMOTE_SSH_PORT"</span>)) {</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-p"</span>);</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%d"</span>, sshport);</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"REMOTE_SSH_PORT"</span>));</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>  }</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span> </div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>  <span class="keywordflow">if</span> (resume_session_id && strlen(resume_session_id) > 0) {</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>  <span class="comment">// TRANSLATORS: Please stick to X2GoClient's way of translating.</span></div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>  _(<span class="stringliteral">"Resuming session '%s'…"</span>),</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>  resume_session_id</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>  ));</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span> </div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"RESUME"</span>)) {</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--resume"</span>);</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, resume_session_id);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"RESUME"</span>));</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>  }</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>  }</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span> </div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>  <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>  <span class="comment">// session or just not. No inbetween.</span></div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  <span class="comment">// if (!resume_session_id) {</span></div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  <span class="comment">// if (FEATURE_AVAILABLE(gpdata, "TRY_RESUME")) {</span></div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  <span class="comment">// argv[argc++] = g_strdup("--try-resume");</span></div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  <span class="comment">// } else {</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>  <span class="comment">// REMMINA_PLUGIN_DEBUG("%s", FEATURE_NOT_AVAIL_STR("TRY_RESUME"));</span></div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  <span class="comment">// }</span></div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  <span class="comment">// }</span></div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span> </div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"USERNAME"</span>)) {</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-u"</span>);</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>  <span class="keywordflow">if</span> (username){</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, username);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, g_get_user_name());</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  }</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"USERNAME"</span>));</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  }</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span> </div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>  <span class="keywordflow">if</span> (password && FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"PASSWORD"</span>)) {</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>  <span class="keywordflow">if</span> (strlen(password) > 0) {</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--force-password"</span>);</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--password"</span>);</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, password);</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  }</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"PASSWORD"</span>));</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  }</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span> </div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"AUTH_ATTEMPTS"</span>)) {</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--auth-attempts"</span>);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%i"</span>, 0);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"AUTH_ATTEMPTS"</span>));</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  }</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span> </div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"NON_INTERACTIVE"</span>)) {</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--non-interactive"</span>);</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"NON_INTERACTIVE"</span>));</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>  }</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span> </div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"COMMAND"</span>)) {</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-c"</span>);</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  <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>  <span class="comment">// the command string...</span></div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  <span class="comment">// argv[argc++] = g_strdup_printf ("%s", g_shell_quote(command));</span></div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  argv[argc++] = g_strdup(command);</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"COMMAND"</span>));</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  }</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> </div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"KBD_LAYOUT"</span>)) {</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  <span class="keywordflow">if</span> (kbdlayout) {</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--kbd-layout"</span>);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, kbdlayout);</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--kbd-layout"</span>);</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  argv[argc++] = g_strdup(<span class="stringliteral">"auto"</span>);</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  }</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"KBD_LAYOUT"</span>));</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>  }</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> </div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"KBD_TYPE"</span>)) {</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  <span class="keywordflow">if</span> (kbdtype) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--kbd-type"</span>);</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, kbdtype);</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--kbd-type"</span>);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  argv[argc++] = g_strdup(<span class="stringliteral">"auto"</span>);</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"KBD_TYPE"</span>));</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  }</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span> </div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"GEOMETRY"</span>)) {</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  <span class="keywordflow">if</span> (!resolution)</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  resolution = <span class="stringliteral">"800x600"</span>;</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  argv[argc++] = g_strdup(<span class="stringliteral">"-g"</span>);</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, resolution);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"GEOMETRY"</span>));</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  }</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span> </div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"TERMINATE_ON_CTRL_C"</span>)) {</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--terminate-on-ctrl-c"</span>);</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"TERMINATE_ON_CTRL_C"</span>));</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  }</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span> </div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SOUND"</span>)) {</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  <span class="keywordflow">if</span> (audio) {</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--sound"</span>);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%s"</span>, audio);</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--sound"</span>);</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  argv[argc++] = g_strdup(<span class="stringliteral">"none"</span>);</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  }</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SOUND"</span>));</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  }</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span> </div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"CLIPBOARD_MODE"</span>)) {</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  <span class="keywordflow">if</span> (clipboard) {</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--clipboard-mode"</span>);</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, clipboard);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  }</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"CLIPBOARD_MODE"</span>));</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>  }</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span> </div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"DPI"</span>)) {</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>  <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>  <span class="comment">// manipulating profile files is still very possible…</span></div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>  <span class="comment">// Values are extracted from pyhoca-cli.</span></div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>  <span class="keywordflow">if</span> (dpi < 20 || dpi > 400) {</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"DPI setting is out of bounds. Please adjust "</span></div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>  <span class="stringliteral">"it in profile settings."</span>), 512);</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>  <span class="comment">// No need, start_session() will handle output.</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  <span class="comment">//REMMINA_PLUGIN_CRITICAL("%s", errmsg);</span></div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  }</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--dpi"</span>);</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  argv[argc++] = g_strdup_printf (<span class="stringliteral">"%i"</span>, dpi);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"DPI"</span>));</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  }</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span> </div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PRIVKEY"</span>)) {</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  <span class="keywordflow">if</span> (ssh_privatekey && !g_str_equal(ssh_privatekey, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-privkey"</span>);</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_privatekey);</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span> </div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>  <span class="keywordflow">if</span> (ssh_passphrase && !g_str_equal(ssh_passphrase, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>  <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">"SSH_PASSPHRASE"</span>)) {</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--ssh-passphrase"</span>);</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>  argv[argc++] = g_strdup_printf(<span class="stringliteral">"%s"</span>, ssh_passphrase);</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PASSPHRASE"</span>));</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>  }</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>  }</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>  }</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">"SSH_PRIVKEY"</span>));</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  }</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span> </div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>  argv[argc++] = NULL;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span> </div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  GError *error = NULL;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>  gchar **envp = g_get_environ();</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  gboolean success = g_spawn_async_with_pipes (NULL, argv, envp,</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  (G_SPAWN_DO_NOT_REAP_CHILD |</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  G_SPAWN_SEARCH_PATH), NULL,</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  NULL, &gpdata-><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>  NULL, NULL, NULL, &error);</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> </div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Started PyHoca-CLI with the following arguments:"</span>));</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  <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>  <span class="keywordflow">for</span> (gint i = 0; i < argc - 1; i++) {</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>  gchar* curr_arg = argv[i];</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span> </div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  <span class="keywordflow">if</span> (g_str_equal(curr_arg, <span class="stringliteral">"--password"</span>) ||</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>  g_str_equal(curr_arg, <span class="stringliteral">"--ssh-passphrase"</span>)) {</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>  g_printf(<span class="stringliteral">"%s "</span>, curr_arg);</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  g_printf(<span class="stringliteral">"XXXXXX "</span>);</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  g_free(curr_arg);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  g_free(argv[++i]);</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  g_printf(<span class="stringliteral">"%s "</span>, curr_arg);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  g_free(curr_arg);</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  }</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  }</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  g_printf(<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span> </div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  <span class="keywordflow">if</span> (!success || error) {</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  <span class="comment">// TRANSLATORS: Meta-error. Shouldn't be visible.</span></div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  <span class="keywordflow">if</span> (!error) error = g_error_new(0, 0, _(<span class="stringliteral">"Internal error."</span>));</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span> </div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  gchar *error_title = _(<span class="stringliteral">"An error occured while "</span></div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  <span class="stringliteral">"starting an X2Go session…"</span>);</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span> </div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  <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>  ddata-><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>  ddata-><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>  ddata-><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>  ddata-><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>  ddata-><a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">"Could not start X2Go session."</span>);</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  ddata-><a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = g_strdup_printf(_(<span class="stringliteral">"Could not start PyHoca-CLI (%i): '%s'"</span>),</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  error->code,</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  error->message);</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  <span class="comment">// We don't need the response.</span></div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  ddata-><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>  <span class="comment">// We don't need a custom dialog either.</span></div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  ddata-><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>  ddata-><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> </div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>  <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span> <span class="comment"> * gp -> gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span> <span class="comment"> * dialog_data -> dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span> <span class="comment"> */</span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>  <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>  g_assert(custom_data && <span class="stringliteral">"custom_data could not be initialized."</span>);</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span> </div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  custom_data-><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>  custom_data-><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>  custom_data-><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>  custom_data-><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> </div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  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> </div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  g_strlcpy(errmsg, error_title, 512);</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span> </div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  <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> </div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  g_error_free(error);</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span> </div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  }</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span> </div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>  <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>  <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> </div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  <span class="keyword">struct </span>timespec ts;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  <span class="comment">// 0.001 seconds.</span></div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  ts.tv_nsec = 1 * 1000 * 1000;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  ts.tv_sec = 0;</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  <span class="keywordflow">while</span> (gpdata-><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>  nanosleep(&ts, NULL);</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Waiting for PyHoca-CLI to start…"</span>);</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  };</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span> </div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Watching child 'pyhoca-cli' process now…"</span>);</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  g_child_watch_add(gpdata-><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>  (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>  gp);</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span> </div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span> }</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span> </div><div class="line"><a name="l02640"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060"> 2640</a></span> <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> {</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span> </div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span> <span class="preprocessor"> #define AMOUNT_FEATURES 43</span></div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  gchar* features[AMOUNT_FEATURES] = {</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>  <span class="stringliteral">"ADD_TO_KNOWN_HOSTS"</span>, <span class="stringliteral">"AUTH_ATTEMPTS"</span>, <span class="stringliteral">"BROKER_PASSWORD"</span>, <span class="stringliteral">"BROKER_URL"</span>,</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>  <span class="stringliteral">"CLEAN_SESSIONS"</span>, <span class="stringliteral">"COMMAND"</span>, <span class="stringliteral">"DEBUG"</span>, <span class="stringliteral">"FORCE_PASSWORD"</span>, <span class="stringliteral">"FORWARD_SSHAGENT"</span>,</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>  <span class="stringliteral">"GEOMETRY"</span>, <span class="stringliteral">"KBD_LAYOUT"</span>, <span class="stringliteral">"KBD_TYPE"</span>, <span class="stringliteral">"LIBDEBUG"</span>, <span class="stringliteral">"LIBDEBUG_SFTPXFER"</span>, <span class="stringliteral">"LINK"</span>,</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>  <span class="stringliteral">"LIST_CLIENT_FEATURES"</span>, <span class="stringliteral">"LIST_DESKTOPS"</span>, <span class="stringliteral">"LIST_SESSIONS"</span>, <span class="stringliteral">"NEW"</span>, <span class="stringliteral">"PACK"</span>,</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  <span class="stringliteral">"PASSWORD"</span>, <span class="stringliteral">"PDFVIEW_CMD"</span>, <span class="stringliteral">"PRINTER"</span>, <span class="stringliteral">"PRINTING"</span>, <span class="stringliteral">"PRINT_ACTION"</span>, <span class="stringliteral">"PRINT_CMD"</span>,</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>  <span class="stringliteral">"QUIET"</span>, <span class="stringliteral">"REMOTE_SSH_PORT"</span>, <span class="stringliteral">"RESUME"</span>, <span class="stringliteral">"SAVE_TO_FOLDER"</span>, <span class="stringliteral">"SESSION_PROFILE"</span>,</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>  <span class="stringliteral">"SESSION_TYPE"</span>, <span class="stringliteral">"SHARE_DESKTOP"</span>, <span class="stringliteral">"SHARE_LOCAL_FOLDERS"</span>, <span class="stringliteral">"SHARE_MODE"</span>, <span class="stringliteral">"SOUND"</span>,</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  <span class="stringliteral">"SSH_PRIVKEY"</span>, <span class="stringliteral">"SUSPEND"</span>, <span class="stringliteral">"TERMINATE"</span>, <span class="stringliteral">"TERMINATE_ON_CTRL_C"</span>, <span class="stringliteral">"TRY_RESUME"</span>,</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>  <span class="stringliteral">"USERNAME"</span>, <span class="stringliteral">"XINERAMA"</span></div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  };</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span> </div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>  GList *features_list = NULL;</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < AMOUNT_FEATURES; i++) {</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>  features_list = g_list_append(features_list, features[i]);</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>  }</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> </div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>  <span class="keywordflow">return</span> features_list;</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span> }</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span> </div><div class="line"><a name="l02668"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d"> 2668</a></span> <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> {</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span> </div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  GList* returning_glist = NULL;</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span> </div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>  <span class="comment">// We will now start pyhoca-cli with only the '--list-cmdline-features' option</span></div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>  <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>  <span class="comment">// features are available or not.</span></div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span> </div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>  gchar* argv[50];</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>  gint argc = 0;</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span> </div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>  argv[argc++] = g_strdup(<span class="stringliteral">"pyhoca-cli"</span>);</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>  argv[argc++] = g_strdup(<span class="stringliteral">"--list-cmdline-features"</span>);</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>  argv[argc++] = NULL;</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span> </div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  GError* error = NULL; <span class="comment">// Won't be actually used.</span></div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span> </div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  <span class="comment">// Querying pyhoca-cli's command line features.</span></div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>  gchar** envp = g_get_environ();</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>  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>  &error, envp);</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>  g_strfreev(envp);</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span> </div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>  <span class="keywordflow">if</span> (!features_string || error) {</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>  <span class="comment">// We added the '--list-cmdline-features' on commit 17d1be1319ba6 of</span></div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>  <span class="comment">// pyhoca-cli. In order to protect setups which don't have the newest</span></div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>  <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>  <span class="comment">// of an old limited set of features.</span></div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span> </div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>,</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>  _(<span class="stringliteral">"Couldn't get PyHoca-CLI's command-line features. This "</span></div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>  <span class="stringliteral">"indicates it is either too old, or not installed. "</span></div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>  <span class="stringliteral">"An old limited set of features will be used for now."</span>));</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span> </div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>  gchar **features_list = g_strsplit(features_string, <span class="stringliteral">"\n"</span>, 0);</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span> </div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>  <span class="keywordflow">if</span> (features_list == NULL) {</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>  gchar *error_msg = _(<span class="stringliteral">"Could not parse PyHoca-CLI's command-line "</span></div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>  <span class="stringliteral">"features. Using a limited feature-set for now."</span>);</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  REMMINA_PLUGIN_WARNING(<span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>  <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>  }</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span> </div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Retrieved the following PyHoca-CLI "</span></div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>  <span class="stringliteral">"command-line features:"</span>));</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span> </div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>  <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>  <span class="comment">// Filter out empty strings</span></div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>  <span class="keywordflow">if</span> (strlen(features_list[k]) <= 0) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span> </div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>,</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>  g_strdup_printf(_(<span class="stringliteral">"Available feature[%i]: '%s'"</span>),</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>  k+1, features_list[k]));</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>  returning_glist = g_list_append(returning_glist, features_list[k]);</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>  }</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>  <span class="keywordflow">return</span> returning_glist;</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>  }</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span> }</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span> </div><div class="line"><a name="l02731"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a"> 2731</a></span> <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> {</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span> </div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>  gchar *server;</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>  gint port;</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span> </div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>  <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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Socket %d"</span>, gpdata-><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>  rm_plugin_service-><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> </div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = rm_plugin_service-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">"server"</span>),</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>  22,</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>  &server,</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>  &port);</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span> </div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>  REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">"Connected to %s:%d via X2Go"</span>), server, port);</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>  g_free(server), server = NULL;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span> </div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span> }</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span> </div><div class="line"><a name="l02754"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e"> 2754</a></span> <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> {</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>  <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>  <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span> }</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span> </div><div class="line"><a name="l02762"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38"> 2762</a></span> <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> {</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>, PLUGIN_NAME);</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>  <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> </div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>  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>  g_object_set_data_full(G_OBJECT(gp), <span class="stringliteral">"plugin-data"</span>, gpdata, g_free);</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span> </div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>  <span class="keywordflow">if</span> (!rm_plugin_service-><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>  <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>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>  }</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span> </div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>  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> </div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>  <span class="comment">// available_features can'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>  <span class="comment">// old standard feature set.</span></div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>  gpdata-><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> </div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>  gpdata-><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>  gpdata-><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> </div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>  gpdata-><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>  gpdata-><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>  gpdata-><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>  gpdata-><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> </div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>  gpdata-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#ac3fc04c8c7b20c35122e2786d9e8fc34">protocol_plugin_register_hostkey</a>(gp, gpdata-><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>  gtk_widget_show(gpdata-><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> </div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>  g_signal_connect(G_OBJECT(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), <span class="stringliteral">"plug-added"</span>,</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>  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>  g_signal_connect(G_OBJECT(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), <span class="stringliteral">"plug-removed"</span>,</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>  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>  gtk_container_add(GTK_CONTAINER(gp), gpdata-><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> }</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span> </div><div class="line"><a name="l02801"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a"> 2801</a></span> <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> {</div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>  gint i;</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>  gboolean already_seen = FALSE;</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span> </div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Check if the window of X2Go Agent with ID [0x%lx] is already known or if "</span></div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>  <span class="stringliteral">"it needs registration"</span>, window_id);</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span> </div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>  pthread_mutex_lock(&<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>  <span class="keywordflow">for</span> (i = 0; i < <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>->len; i++) {</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>  <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>  already_seen = TRUE;</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Window of X2Go Agent with ID [0x%lx] "</span></div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>  <span class="stringliteral">"already seen."</span>, window_id);</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>  }</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>  }</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>  <span class="keywordflow">if</span> (!already_seen) {</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>  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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Registered new window for X2Go Agent with "</span></div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>  <span class="stringliteral">"ID [0x%lx]."</span>, window_id);</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>  }</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>  pthread_mutex_unlock(&<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> </div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>  <span class="keywordflow">return</span> (!already_seen);</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span> }</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span> </div><div class="line"><a name="l02829"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26"> 2829</a></span> <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> {</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span> }</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span> </div><div class="line"><a name="l02835"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119"> 2835</a></span> <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> {</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>  <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> </div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>  gpdata-><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>  <span class="keywordflow">if</span> (gpdata-><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>  g_strlcpy(errmsg, _(<span class="stringliteral">"Could not open X11 DISPLAY."</span>), 512);</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>  }</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span> </div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>  gpdata-><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> </div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>  XSelectInput(gpdata-><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>  XDefaultRootWindow(gpdata-><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>  SubstructureNotifyMask);</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span> </div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"X11 event-watcher created."</span>);</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span> </div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span> }</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span> </div><div class="line"><a name="l02857"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134"> 2857</a></span> <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>  <span class="keyword">const</span> gchar *cmd,</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>  gchar *errmsg)</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span> {</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>  <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> </div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>  gboolean agent_window_found = FALSE;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>  Atom atom;</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>  XEvent xev;</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>  Window w;</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>  Atom type;</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>  <span class="keywordtype">int</span> format;</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>  <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>  <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> </div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>  guint16 non_createnotify_count = 0;</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span> </div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>  <span class="keyword">struct </span>timespec ts;</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>  <span class="comment">// wait_amount * ts.tv_nsec = 20s</span></div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>  <span class="comment">// 100 * 0.2s = 20s</span></div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>  <span class="keywordtype">int</span> wait_amount = 100;</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span> </div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>  CANCEL_DEFER</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span> </div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Waiting for window of X2Go Agent to appear…"</span>));</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span> </div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>  gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>  atom = XInternAtom(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, <span class="stringliteral">"WM_COMMAND"</span>, True);</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>  <span class="keywordflow">if</span> (atom == None) {</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>  CANCEL_ASYNC</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>  }</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span> </div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>  ts.tv_sec = 0;</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>  <span class="comment">// 0.2s = 200000000ns</span></div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>  ts.tv_nsec = 200000000;</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span> </div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>  <span class="keywordflow">while</span> (wait_amount > 0) {</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>  pthread_testcancel();</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>  <span class="keywordflow">if</span> (!(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> > 0)) {</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>  nanosleep(&ts, NULL);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Waiting for X2Go session to start…"</span>);</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>  }</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span> </div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>  <span class="keywordflow">while</span> (!XPending(gpdata-><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>  nanosleep(&ts, NULL);</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>  wait_amount--;</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>  <span class="comment">// Don't spam the console. Print every second though.</span></div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>  <span class="keywordflow">if</span> (wait_amount % 5 == 0) {</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>  REMMINA_PLUGIN_INFO(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Waiting for PyHoca-CLI to "</span></div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>  <span class="stringliteral">"show the session's window…"</span>));</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>  }</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>  }</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span> </div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>  XNextEvent(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, &xev);</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>  <span class="comment">// Just ignore non CreatNotify events.</span></div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>  <span class="keywordflow">if</span> (xev.type != CreateNotify) {</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>  non_createnotify_count++;</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>  <span class="keywordflow">if</span> (non_createnotify_count % 5 == 0) {</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Saw '%i' X11 events, which weren't "</span></div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>  <span class="stringliteral">"CreateNotify."</span>, non_createnotify_count);</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>  }</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>  }</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span> </div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>  w = xev.xcreatewindow.window;</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>  <span class="keywordflow">if</span> (XGetWindowProperty(gpdata-><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>  AnyPropertyType, &type, &format, &nitems, &rest,</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>  &data) != Success) {</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Could not get WM_COMMAND property from X11 "</span></div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>  <span class="stringliteral">"window ID [0x%lx]."</span>, w);</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>  }</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span> </div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>  <span class="keywordflow">if</span> (data) {</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Saw '%i' X11 events, which weren't "</span></div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>  <span class="stringliteral">"CreateNotify."</span>, non_createnotify_count);</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Found X11 window with WM_COMMAND set "</span></div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>  <span class="stringliteral">"to '%s', the window ID is [0x%lx]."</span>,</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>  (<span class="keywordtype">char</span>*)data, w);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>  }</div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>  <span class="keywordflow">if</span> (data && g_strrstr((gchar*)data, cmd) &&</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>  <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>  gpdata-><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>  agent_window_found = TRUE;</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>  XFree(data);</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>  }</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>  <span class="keywordflow">if</span> (data)</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>  XFree(data);</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>  }</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span> </div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>  XSetErrorHandler(gpdata-><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>  XCloseDisplay(gpdata-><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>  gpdata-><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> </div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>  CANCEL_ASYNC</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span> </div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>  <span class="keywordflow">if</span> (!agent_window_found) {</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>  g_strlcpy(errmsg, _(<span class="stringliteral">"No X2Go session window appeared. "</span></div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>  <span class="stringliteral">"Something went wrong…"</span>), 512);</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>  }</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span> </div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span> }</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span> </div><div class="line"><a name="l02967"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a"> 2967</a></span> <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> {</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Function entry."</span>);</div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span> </div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>  <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>  <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>  <span class="keyword">const</span> gchar errmsg[512] = {0};</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>  gboolean ret = TRUE;</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span> </div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>  gchar *servstr, *host, *username, *password, *command, *kbdlayout, *kbdtype,</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>  *audio, *clipboard, *res, *ssh_privatekey;</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>  gint sshport, dpi;</div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>  GdkDisplay *default_dsp;</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>  gint width, height;</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span> </div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>  <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>  default_dsp = gdk_display_get_default();</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>  <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>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Default display is '%s'."</span>, default_dsp_name);</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span> </div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>  remminafile = rm_plugin_service-><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> </div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>  servstr = GET_PLUGIN_STRING(<span class="stringliteral">"server"</span>);</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>  <span class="keywordflow">if</span> (servstr) {</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(servstr, 22, &host, &sshport);</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>  }</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span> </div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>  <span class="keywordflow">if</span> (!sshport) sshport=22;</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span> </div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>  username = GET_PLUGIN_STRING(<span class="stringliteral">"username"</span>);</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>  password = GET_PLUGIN_PASSWORD(<span class="stringliteral">"password"</span>);</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span> </div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>  command = GET_PLUGIN_STRING(<span class="stringliteral">"command"</span>);</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>  <span class="keywordflow">if</span> (!command) command = <span class="stringliteral">"TERMINAL"</span>;</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span> </div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>  kbdlayout = GET_PLUGIN_STRING(<span class="stringliteral">"kbdlayout"</span>);</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>  kbdtype = GET_PLUGIN_STRING(<span class="stringliteral">"kbdtype"</span>);</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span> </div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>  audio = GET_PLUGIN_STRING(<span class="stringliteral">"audio"</span>);</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span> </div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>  clipboard = GET_PLUGIN_STRING(<span class="stringliteral">"clipboard"</span>);</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span> </div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>  dpi = GET_PLUGIN_INT(<span class="stringliteral">"dpi"</span>, 80);</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span> </div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>  ssh_privatekey = GET_PLUGIN_STRING(<span class="stringliteral">"ssh_privatekey"</span>);</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span> </div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>  <span class="comment">// If empty set to NULL</span></div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>  <span class="keywordflow">if</span>(ssh_privatekey && g_str_equal(ssh_privatekey, <span class="stringliteral">""</span>)) {</div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>  ssh_privatekey = NULL;</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>  }</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span> </div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>  width = rm_plugin_service-><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>  height = rm_plugin_service-><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>  <span class="comment">/* multiple of 4 */</span></div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>  width = (width + 3) & ~0x3;</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>  height = (height + 3) & ~0x3;</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>  <span class="keywordflow">if</span> ((width > 0) && (height > 0)) {</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>  res = g_strdup_printf (<span class="stringliteral">"%dx%d"</span>, width, height);</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>  res = <span class="stringliteral">"800x600"</span>;</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>  }</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Resolution set by user: '%s'."</span>, res);</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span> </div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>  REMMINA_PLUGIN_DEBUG(<span class="stringliteral">"Attached window to socket '%d'."</span>, gpdata-><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> </div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>  <span class="comment">/* register for notifications of window creation events */</span></div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>  <span class="keywordflow">if</span> (ret) ret = <a class="code" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119">rmplugin_x2go_start_create_notify</a>(gp, (gchar*)&errmsg);</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span> </div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>  <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>  <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>  kbdlayout, kbdtype, audio, clipboard, dpi,</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>  res, ssh_privatekey, gp,</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>  (gchar*)&errmsg);</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span> </div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>  <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>  <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">"x2goagent"</span>,</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>  (gchar*)&errmsg);</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span> </div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>  <span class="keywordflow">if</span> (!ret) {</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, errmsg);</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, <span class="stringliteral">"%s"</span>, &errmsg);</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>  }</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span> </div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>  <span class="comment">/* embed it */</span></div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>  <a class="code" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43">onMainThread_gtk_socket_add_id</a>(GTK_SOCKET(gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), gpdata-><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> </div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span> }</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span> </div><div class="line"><a name="l03060"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619"> 3060</a></span> <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> {</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>  <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>  gboolean ret = FALSE;</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span> </div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>  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> </div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>  gpdata-><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>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span> }</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span> </div><div class="line"><a name="l03072"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422"> 3072</a></span> <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> {</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>  <span class="keywordflow">if</span> (!gp) {</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>  _(<span class="stringliteral">"RemminaProtocolWidget* gp is 'NULL'!"</span>)</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>  ));</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>  }</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span> </div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span> </div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>  CANCEL_ASYNC</div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>  <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>  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>  }</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span> </div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span> }</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span> </div><div class="line"><a name="l03093"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637"> 3093</a></span> <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> {</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>  <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> </div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>  <span class="keywordflow">if</span> (!rm_plugin_service-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"The %s protocol is "</span></div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>  <span class="stringliteral">"unavailable because GtkSocket only works under X.org"</span>),</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>  PLUGIN_NAME);</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>  }</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span> </div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>  gpdata-><a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a> = gtk_socket_get_id(GTK_SOCKET(gpdata-><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>  <span class="comment">// casting to void* is allowed since return type 'gpointer' is actually void*.</span></div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>  <span class="keywordflow">if</span> (pthread_create(&gpdata-><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>  rm_plugin_service-><a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">"Could not initialize "</span></div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>  <span class="stringliteral">"pthread. Falling back to non-threaded mode…"</span>));</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>  gpdata-><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>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>  }</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span> }</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span> </div><div class="line"><a name="l03117"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada"> 3117</a></span> <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>  <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> {</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>  TRACE_CALL(__func__);</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span> }</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span> </div><div class="line"><a name="l03124"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f"> 3124</a></span> <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>  {<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>  {<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> };</div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span> </div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span> </div><div class="line"><a name="l03140"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51"> 3140</a></span> <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>  <span class="keyword">const</span> guint current_element,</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>  gchar* element_to_add,</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>  gchar* <span class="keywordtype">string</span>)</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span> {</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>  <span class="keywordflow">if</span> (max_elements > 2) {</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>  <span class="keywordflow">if</span> (current_element == max_elements - 1) {</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>  <span class="comment">// TRANSLATORS: Presumably you just want to translate 'and' into</span></div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>  <span class="comment">// your language.</span></div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>  <span class="comment">// 'value1', 'value2', 'valueN-1' and 'valueN'</span></div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%sand '%s'"</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>  } <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>  <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>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>  <span class="comment">// 'value1', 'value2', 'valueN-1' and 'valueN'</span></div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%s'%s' "</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>  <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>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  <span class="comment">// 'value1', 'value2', 'valueN-1' and 'valueN'</span></div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%s'%s', "</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>  }</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>  } <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>  <span class="keywordflow">if</span> (current_element == max_elements - 1) {</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>  <span class="comment">// TRANSLATORS: Presumably you just want to translate 'and' into</span></div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>  <span class="comment">// your language.</span></div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>  <span class="comment">// 'value1' and 'value2'</span></div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%sand '%s'"</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>  <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>  <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>  <span class="comment">// 'value1' and 'value2'</span></div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>  <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">"%s'%s' "</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>  }</div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>  <span class="keywordflow">return</span> g_strdup(element_to_add);</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>  }</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span> }</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span> </div><div class="line"><a name="l03194"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a"> 3194</a></span> <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>  gchar* data)</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span> {</div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>  GError *error = NULL;</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span> </div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>  <span class="keywordflow">if</span> (!data) {</div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>  gchar *error_msg = _(<span class="stringliteral">"Invalid validation data in ProtocolSettings array!"</span>);</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>  }</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span> </div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  gchar **elements_list = g_strsplit(data, <span class="stringliteral">","</span>, 0);</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span> </div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>  guint elements_amount = 0;</div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  elements_amount = g_strv_length(elements_list);</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span> </div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  <span class="keywordflow">if</span> (elements_list == NULL ||</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  elements_list[0] == NULL ||</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  strlen(elements_list[0]) <= 0)</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  {</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  gchar *error_msg = _(<span class="stringliteral">"Validation data in ProtocolSettings array is invalid!"</span>);</div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>  }</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span> </div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  gchar *data_str = <span class="stringliteral">""</span>;</div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span> </div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  <span class="keywordflow">if</span> (!key || !value) {</div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Parameters 'key' or 'value' are 'NULL'!"</span>));</div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Internal error."</span>));</div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>  }</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span> </div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>  <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>  <span class="comment">// Don't wanna crash if elements_list[i] is NULL.</span></div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>  gchar* element = elements_list[i] ? elements_list[i] : <span class="stringliteral">""</span>;</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>  <span class="keywordflow">if</span> (g_strcmp0(value, element) == 0) {</div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>  <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>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>  }</div><div class="line"><a name="l03236"></a><span class="lineno"> 3236</span> </div><div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>  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>  element, data_str);</div><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>  }</div><div class="line"><a name="l03240"></a><span class="lineno"> 3240</span> </div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>  <span class="keywordflow">if</span> (elements_amount > 1) {</div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>  g_set_error(&error, 1, 1, _(<span class="stringliteral">"Allowed values are %s."</span>), data_str);</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>  g_set_error(&error, 1, 1, _(<span class="stringliteral">"The only allowed value is '%s'."</span>), data_str);</div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>  }</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span> </div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>  g_free(data_str);</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  g_strfreev(elements_list);</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span> </div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span> }</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span> </div><div class="line"><a name="l03267"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5"> 3267</a></span> <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>  gchar* data)</div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span> {</div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>  GError *error = NULL;</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span> </div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>  gchar **integer_list = g_strsplit(data, <span class="stringliteral">";"</span>, 0);</div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span> </div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>  <span class="keywordflow">if</span> (integer_list == NULL ||</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>  integer_list[0] == NULL ||</div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>  integer_list[1] == NULL ||</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>  strlen(integer_list[0]) <= 0 ||</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>  strlen(integer_list[1]) <= 0)</div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>  {</div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>  gchar *error_msg = _(<span class="stringliteral">"Validation data in ProtocolSettings array is invalid!"</span>);</div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, error_msg);</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>  }</div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span> </div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>  gint minimum;</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>  <a class="code" href="x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b">str2int_errno</a> err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&minimum, integer_list[0], 10);</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>  <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>  _(<span class="stringliteral">"The lower limit is not a valid integer!"</span>)</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>  ));</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>  _(<span class="stringliteral">"The lower limit is too high!"</span>)</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>  ));</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>  _(<span class="stringliteral">"The lower limit is too low!"</span>)</div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>  ));</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  _(<span class="stringliteral">"Something unknown went wrong."</span>)</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  ));</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>  }</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span> </div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>  <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Please check the RemminaProtocolSetting "</span></div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>  <span class="stringliteral">"array for possible errors."</span>));</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>  }</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span> </div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>  gint maximum;</div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>  err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&maximum, integer_list[1], 10);</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>  <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>  _(<span class="stringliteral">"The upper limit is not a valid integer!"</span>)</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>  ));</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  _(<span class="stringliteral">"The upper limit is too high!"</span>)</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>  ));</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>  _(<span class="stringliteral">"The upper limit is too low!"</span>)</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>  ));</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, g_strdup_printf(</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  _(<span class="stringliteral">"Internal error: %s"</span>),</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  _(<span class="stringliteral">"Something unknown went wrong."</span>)</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>  ));</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>  }</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span> </div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>  <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>  REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Please check the RemminaProtocolSetting "</span></div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>  <span class="stringliteral">"array for possible errors."</span>));</div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>  }</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span> </div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>  gint int_value;</div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>  err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&int_value, value, 10);</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>  <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>  <span class="comment">// non-numerical characters are can't be entered but, the user can</span></div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>  <span class="comment">// input an empty string.</span></div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"The input is not a valid integer!"</span>));</div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>  } <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>  g_set_error(&error, 1, 1, _(<span class="stringliteral">"Input must be a number between %i and %i."</span>),</div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>  minimum, maximum);</div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>  } <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>  g_set_error(&error, 1, 1, <span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"Something unknown went wrong."</span>));</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>  }</div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span> </div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>  <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>  }</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span> </div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>  <span class="comment">/*REMMINA_PLUGIN_DEBUG("Key: \t%s", (gchar*) key);</span></div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("Value:\t%s", (gchar*) value);</span></div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("Data: \t%s", data);</span></div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("Min: %i, Max: %i", minimum, maximum);</span></div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span> <span class="comment"> REMMINA_PLUGIN_DEBUG("Value converted:\t%i", int_value);*/</span></div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span> </div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>  <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1">STR2INT_SUCCESS</a> && (minimum > int_value || int_value > maximum)) {</div><div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>  g_set_error(&error, 1, 1, _(<span class="stringliteral">"Input must be a number between %i and %i."</span>),</div><div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>  minimum, maximum);</div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>  }</div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span> </div><div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>  <span class="comment">// Should be NULL.</span></div><div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03376"></a><span class="lineno"> 3376</span> }</div><div class="line"><a name="l03377"></a><span class="lineno"> 3377</span> </div><div class="line"><a name="l03378"></a><span class="lineno"> 3378</span> <span class="comment">/* Array of RemminaProtocolSetting for basic settings.</span></div><div class="line"><a name="l03379"></a><span class="lineno"> 3379</span> <span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l03380"></a><span class="lineno"> 3380</span> <span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l03381"></a><span class="lineno"> 3381</span> <span class="comment"> * b) Setting name</span></div><div class="line"><a name="l03382"></a><span class="lineno"> 3382</span> <span class="comment"> * c) Setting description</span></div><div class="line"><a name="l03383"></a><span class="lineno"> 3383</span> <span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l03384"></a><span class="lineno"> 3384</span> <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> <span class="comment"> * f) Setting tooltip</span></div><div class="line"><a name="l03386"></a><span class="lineno"> 3386</span> <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> <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> <span class="comment"> * use following prototype:</span></div><div class="line"><a name="l03389"></a><span class="lineno"> 3389</span> <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> <span class="comment"> * gpointer validator_data);</span></div><div class="line"><a name="l03391"></a><span class="lineno"> 3391</span> <span class="comment"> * gpointer key is a gchar* containing the setting's name,</span></div><div class="line"><a name="l03392"></a><span class="lineno"> 3392</span> <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> <span class="comment"> * gpointer validator_data contains your passed data.</span></div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span> <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> <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>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>, <span class="stringliteral">"server"</span>, NULL, FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">"username"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Username"</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>, <span class="stringliteral">"password"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Password"</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">"command"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Startup program"</span>), FALSE,</div><div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>  <span class="comment">/* SELECT & COMBO Values */</span> <span class="stringliteral">"MATE,KDE,XFCE,LXDE,TERMINAL"</span>,</div><div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>  <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Which command should be executed after creating the X2Go session?"</span>), NULL, NULL},</div><div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba">REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION</a>, <span class="stringliteral">"resolution"</span>, NULL, FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">"kbdlayout"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Keyboard Layout (auto)"</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">"kbdtype"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Keyboard type (auto)"</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">"audio"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Audio support"</span>), FALSE,</div><div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>  <span class="comment">/* SELECT & COMBO Values */</span> <span class="stringliteral">"pulse,esd,none"</span>,</div><div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>  <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"The sound system of the X2Go server (default: 'pulse')."</span>),</div><div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>  <span class="comment">/* Validation data */</span> <span class="stringliteral">"pulse,esd,none"</span>,</div><div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>  <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>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">"clipboard"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Clipboard direction"</span>), FALSE,</div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>  <span class="comment">/* SELECT & COMBO Values */</span> <span class="stringliteral">"none,server,client,both"</span>,</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>  <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Which direction should clipboard content be copied? "</span></div><div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>  <span class="stringliteral">"(default: 'both')."</span>),</div><div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>  <span class="comment">/* Validation data */</span> <span class="stringliteral">"none,server,client,both"</span>,</div><div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>  <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>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ab4c68b7df42ebd08e953cc72c5b97583">REMMINA_PROTOCOL_SETTING_TYPE_INT</a>, <span class="stringliteral">"dpi"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"DPI resolution"</span>), FALSE, NULL,</div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>  <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Launch session with a specific resolution (in dots per inch). "</span></div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>  <span class="stringliteral">"Must be between 20 and 400."</span>),</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>  <span class="comment">/* Validation data */</span> <span class="stringliteral">"20;400"</span>, <span class="comment">// "<min>;<max>;"</span></div><div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>  <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>  {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da">REMMINA_PROTOCOL_SETTING_TYPE_FILE</a>, <span class="stringliteral">"ssh_privatekey"</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"SSH identity file"</span>), FALSE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">"Your private key"</span>), NULL, NULL },</div><div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>  {<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> </div><div class="line"><a name="l03424"></a><span class="lineno"> 3424</span> <span class="comment">/* Protocol plugin definition and features */</span></div><div class="line"><a name="l03425"></a><span class="lineno"> 3425</span> <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>  <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>  PLUGIN_NAME, <span class="comment">// Name</span></div><div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>  PLUGIN_DESCRIPTION, <span class="comment">// Description</span></div><div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>  GETTEXT_PACKAGE, <span class="comment">// Translation domain</span></div><div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>  PLUGIN_VERSION, <span class="comment">// Version number</span></div><div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>  PLUGIN_APPICON, <span class="comment">// Icon for normal connection</span></div><div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>  PLUGIN_SSH_APPICON, <span class="comment">// Icon for SSH connection</span></div><div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>  <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>  NULL, <span class="comment">// Array for advanced settings</span></div><div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>  <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>  <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>  <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>  <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>  <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>  <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>  NULL, <span class="comment">// Call a feature</span></div><div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>  NULL, <span class="comment">// Send a keystroke</span></div><div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>  NULL, <span class="comment">// Screenshot</span></div><div class="line"><a name="l03444"></a><span class="lineno"> 3444</span> };</div><div class="line"><a name="l03445"></a><span class="lineno"> 3445</span> </div><div class="line"><a name="l03446"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a56e5020de11446dbc23f3480e313f208"> 3446</a></span> 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> {</div><div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>  TRACE_CALL(<span class="stringliteral">"remmina_plugin_entry"</span>);</div><div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>  rm_plugin_service = service;</div><div class="line"><a name="l03450"></a><span class="lineno"> 3450</span> </div><div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>  bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>  bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">"UTF-8"</span>);</div><div class="line"><a name="l03453"></a><span class="lineno"> 3453</span> </div><div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>  <span class="keywordflow">if</span> (!service-><a class="code" href="struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2">register_plugin</a>((<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *) &rmplugin_x2go)) {</div><div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>  <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>  }</div><div class="line"><a name="l03457"></a><span class="lineno"> 3457</span> </div><div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>  pthread_mutex_init(&<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>  <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> </div><div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>  REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">"%s"</span>, _(<span class="stringliteral">"X2Go plugin loaded."</span>));</div><div class="line"><a name="l03462"></a><span class="lineno"> 3462</span> </div><div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>  <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03464"></a><span class="lineno"> 3464</span> }</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&#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 &#39;dialog&#39; or &#39;treeview&#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> |