From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ismael Luceno <ismael@iodev.co.uk>
Date: Tue, 28 Jul 2020 23:20:16 +0000
Subject: [PATCH] Fix global definitions at headers

Global definitions should be declared explicitly as extern in headers and
also in some code file.

Recent versions of ld (at least 2.35) complain and fail instead of merging them
automatically unless explicitly told to do so with the
--allow-multiple-definition flag.

diff --git a/src/settings.h b/src/settings.h
index e25bdc328031..2355d78d5d56 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -52,6 +52,24 @@
 /* Dirty hack: check whether we are under LXDE or not */
 #define is_under_LXDE()     (g_getenv( "_LXSESSION_PID" ) != NULL)
 
+GList* xsets;
+XSet* evt_win_focus;
+XSet* evt_win_move;
+XSet* evt_win_click;
+XSet* evt_win_key;
+XSet* evt_win_close;
+XSet* evt_pnl_show;
+XSet* evt_pnl_focus;
+XSet* evt_pnl_sel;
+XSet* evt_tab_new;
+XSet* evt_tab_chdir;
+XSet* evt_tab_focus;
+XSet* evt_tab_close;
+XSet* evt_device;
+GList* xset_cmd_history;
+char* settings_terminal_su;
+char* settings_graphical_su;
+
 AppSettings app_settings = {0};
 /* const gboolean singleInstance_default = TRUE; */
 const gboolean show_hidden_files_default = FALSE;
--- a/src/settings.h
+++ b/src/settings.h
@@ -120,7 +120,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 //MOD extra settings below
 
-GList* xsets;
+extern GList* xsets;
 
 enum {
     XSET_B_UNSET,
@@ -311,22 +311,22 @@ typedef struct
 } XMenuItem;
 
 // cache these for speed in event handlers
-XSet* evt_win_focus;
-XSet* evt_win_move;
-XSet* evt_win_click;
-XSet* evt_win_key;
-XSet* evt_win_close;
-XSet* evt_pnl_show;
-XSet* evt_pnl_focus;
-XSet* evt_pnl_sel;
-XSet* evt_tab_new;
-XSet* evt_tab_chdir;
-XSet* evt_tab_focus;
-XSet* evt_tab_close;
-XSet* evt_device;
+extern XSet* evt_win_focus;
+extern XSet* evt_win_move;
+extern XSet* evt_win_click;
+extern XSet* evt_win_key;
+extern XSet* evt_win_close;
+extern XSet* evt_pnl_show;
+extern XSet* evt_pnl_focus;
+extern XSet* evt_pnl_sel;
+extern XSet* evt_tab_new;
+extern XSet* evt_tab_chdir;
+extern XSet* evt_tab_focus;
+extern XSet* evt_tab_close;
+extern XSet* evt_device;
 
 // instance-wide command history
-GList* xset_cmd_history;
+extern GList* xset_cmd_history;
 
 static const char* terminal_programs[] =  //for pref-dialog.c
 {
@@ -374,8 +374,8 @@ static const char* gsu_commands[] = // order and contents must match prefdlg.ui
 };
 
 // These will contain the su and gsu settings from /etc/spacefm/spacefm.conf
-char* settings_terminal_su;
-char* settings_graphical_su;
+extern char* settings_terminal_su;
+extern char* settings_graphical_su;
 
 typedef struct
 {
