commit f1c01ccc0ca3f82313ebff3f336d808acee225c8
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Fri Dec 6 10:27:39 2019 +0100

    Fix global variables definitions

---
 src/clients/say/options.c     |   24 ++++++++++++++++++++++
 src/clients/say/options.h     |   42 ++++++++++++++++++++--------------------
 src/modules/festival_client.c |    2 +
 src/modules/festival_client.h |    2 -
 src/modules/module_utils.c    |   20 +++++++++++++++++++
 src/modules/module_utils.h    |   24 +++++++++++-----------
 src/server/compare.c          |    1 
 src/server/compare.h          |    4 +--
 src/server/configuration.c    |    3 ++
 src/server/configuration.h    |    4 +--
 src/server/speaking.c         |   10 +++++++++
 src/server/speaking.h         |   14 ++++++-------
 src/server/speechd.c          |   33 +++++++++++++++++++++++++++++++
 src/server/speechd.h          |   44 +++++++++++++++++++++---------------------
 14 files changed, 160 insertions(+), 67 deletions(-)

--- a/src/clients/say/options.c
+++ b/src/clients/say/options.c
@@ -33,6 +33,30 @@
 #include "options.h"
 #include <i18n.h>
 
+signed int rate;
+signed int pitch;
+signed int pitch_range;
+signed int volume;
+
+int list_output_modules;
+char *output_module;
+char *sound_icon;
+char *language;
+char *voice_type;
+char *punctuation_mode;
+char *priority;
+int pipe_mode;
+SPDDataMode ssml_mode;
+int spelling;
+int wait_till_end;
+int stop_previous;
+int cancel_previous;
+int list_synthesis_voices;
+char *synthesis_voice;
+
+char *application_name;
+char *connection_name;
+
 void options_print_help(char *argv[])
 {
 	assert(argv);
--- a/src/clients/say/options.h
+++ b/src/clients/say/options.h
@@ -22,29 +22,29 @@
 #include <getopt.h>
 #include "speechd_types.h"
 
-signed int rate;
-signed int pitch;
-signed int pitch_range;
-signed int volume;
+extern signed int rate;
+extern signed int pitch;
+extern signed int pitch_range;
+extern signed int volume;
 
-int list_output_modules;
-char *output_module;
-char *sound_icon;
-char *language;
-char *voice_type;
-char *punctuation_mode;
-char *priority;
-int pipe_mode;
-SPDDataMode ssml_mode;
-int spelling;
-int wait_till_end;
-int stop_previous;
-int cancel_previous;
-int list_synthesis_voices;
-char *synthesis_voice;
+extern int list_output_modules;
+extern char *output_module;
+extern char *sound_icon;
+extern char *language;
+extern char *voice_type;
+extern char *punctuation_mode;
+extern char *priority;
+extern int pipe_mode;
+extern SPDDataMode ssml_mode;
+extern int spelling;
+extern int wait_till_end;
+extern int stop_previous;
+extern int cancel_previous;
+extern int list_synthesis_voices;
+extern char *synthesis_voice;
 
-char *application_name;
-char *connection_name;
+extern char *application_name;
+extern char *connection_name;
 
 static struct option long_options[] = {
 	{"rate", 1, 0, 'r'},
--- a/src/modules/festival_client.c
+++ b/src/modules/festival_client.c
@@ -75,6 +75,8 @@
 /* For testing endianness */
 int fapi_endian_loc = 1;
 
+int festival_connection_crashed;
+
 static char *socket_receive_file_to_buff(int fd, int *size);
 
 /* --- MANAGING FT STRUCTURES --- */
--- a/src/modules/festival_client.h
+++ b/src/modules/festival_client.h
@@ -44,7 +44,7 @@
 #define FESTIVAL_DEFAULT_SERVER_PORT 1314
 #define FESTIVAL_DEFAULT_TEXT_MODE "fundamental"
 
-int festival_connection_crashed;
+extern int festival_connection_crashed;
 
 typedef struct FT_Info {
 	int encoding;
--- a/src/modules/module_utils.c
+++ b/src/modules/module_utils.c
@@ -35,6 +35,26 @@ extern char *module_index_mark;
 
 pthread_mutex_t module_stdout_mutex = PTHREAD_MUTEX_INITIALIZER;
 
+int log_level;
+
+AudioID *module_audio_id;
+
+SPDMsgSettings msg_settings;
+SPDMsgSettings msg_settings_old;
+
+int current_index_mark;
+
+int Debug;
+FILE *CustomDebugFile;
+
+configfile_t *configfile;
+configoption_t *module_dc_options;
+int module_num_dc_options;
+
+const char *module_name;
+
+char *module_index_mark;
+
 char *do_message(SPDMessageType msgtype)
 {
 	int ret;
--- a/src/modules/module_utils.h
+++ b/src/modules/module_utils.h
@@ -49,23 +49,23 @@ typedef struct SPDMarks {
 	gboolean stop;
 } SPDMarks;
 
-int log_level;
+extern int log_level;
 
-AudioID *module_audio_id;
+extern AudioID *module_audio_id;
 
-SPDMsgSettings msg_settings;
-SPDMsgSettings msg_settings_old;
+extern SPDMsgSettings msg_settings;
+extern SPDMsgSettings msg_settings_old;
 
-int current_index_mark;
+extern int current_index_mark;
 
-int Debug;
-FILE *CustomDebugFile;
+extern int Debug;
+extern FILE *CustomDebugFile;
 
-configfile_t *configfile;
-configoption_t *module_dc_options;
-int module_num_dc_options;
+extern configfile_t *configfile;
+extern configoption_t *module_dc_options;
+extern int module_num_dc_options;
 
-const char *module_name;
+extern const char *module_name;
 
 #define CLEAN_OLD_SETTINGS_TABLE() do { \
 	msg_settings_old.rate = -101;\
@@ -395,7 +395,7 @@ configoption_t *add_config_option(config
 #define INDEX_MARK_BODY_LEN 6
 #define INDEX_MARK_BODY "__spd_"
 
-char *module_index_mark;
+extern char *module_index_mark;
 
 	/* This macro must be placed at the initialization of the module so that the
 	   later functions are possible to use */
--- a/src/server/compare.c
+++ b/src/server/compare.c
@@ -29,6 +29,7 @@
 #include "compare.h"
 
 /* Pointer to compare_message_uid */
+gint(*p_msg_lc) ();
 gint(*p_msg_uid_lc) () = compare_message_uid;
 
 gint compare_message_uid(gconstpointer element, gconstpointer value, gpointer x)
--- a/src/server/compare.h
+++ b/src/server/compare.h
@@ -27,7 +27,7 @@ gint compare_message_uid(gconstpointer e
 			 gpointer x);
 
 /* Pointer to function compare_message_uid */
-gint(*p_msg_lc) ();
-gint(*p_msg_uid_lc) ();
+extern gint(*p_msg_lc) ();
+extern gint(*p_msg_uid_lc) ();
 
 #endif /* COMPARE_H */
--- a/src/server/configuration.c
+++ b/src/server/configuration.c
@@ -32,6 +32,9 @@
 #include "configuration.h"
 #include <fdsetconv.h>
 
+configoption_t *spd_options;
+int spd_num_options;
+
 static TFDSetClientSpecific *cl_spec_section;
 
 /* So that gcc doesn't comply about casts to char* */
--- a/src/server/configuration.h
+++ b/src/server/configuration.h
@@ -29,8 +29,8 @@
 #define SPEECHD_DEFAULT_PORT 6560
 
 /* Loading options from DotConf */
-configoption_t *spd_options;
-int spd_num_options;
+extern configoption_t *spd_options;
+extern int spd_num_options;
 
 configoption_t *load_config_options(int *num_options);
 void free_config_options(configoption_t * opts, int *num);
--- a/src/server/speaking.c
+++ b/src/server/speaking.c
@@ -46,6 +46,16 @@ static SPDPriority highest_priority = 0;
 int SPEAKING = 0;
 int poll_count;
 
+OutputModule *speaking_module;
+int speaking_uid;
+int speaking_gid;
+
+/* Pause and resume handling */
+int pause_requested;
+int pause_requested_fd;
+int pause_requested_uid;
+int resume_requested;
+
 /*
   Speak() is responsible for getting right text from right
   queue in right time and saying it loud through the corresponding
--- a/src/server/speaking.h
+++ b/src/server/speaking.h
@@ -26,15 +26,15 @@
 
 #include <speechd_types.h>
 
-OutputModule *speaking_module;
-int speaking_uid;
-int speaking_gid;
+extern OutputModule *speaking_module;
+extern int speaking_uid;
+extern int speaking_gid;
 
 /* Pause and resume handling */
-int pause_requested;
-int pause_requested_fd;
-int pause_requested_uid;
-int resume_requested;
+extern int pause_requested;
+extern int pause_requested_fd;
+extern int pause_requested_uid;
+extern int resume_requested;
 
 /* Speak() is responsible for getting right text from right
  * queue in right time and saying it loud through corresponding
--- a/src/server/speechd.c
+++ b/src/server/speechd.c
@@ -65,6 +65,39 @@ gint server_timeout_source = 0;
 
 int client_count = 0;
 
+struct SpeechdOptions SpeechdOptions;
+struct SpeechdStatus SpeechdStatus;
+
+pthread_t speak_thread;
+pthread_mutex_t logging_mutex;
+pthread_mutex_t element_free_mutex;
+pthread_mutex_t output_layer_mutex;
+pthread_mutex_t socket_com_mutex;
+
+GHashTable *fd_settings;
+GHashTable *language_default_modules;
+GHashTable *fd_uid;
+
+TSpeechDQueue *MessageQueue;
+GList *MessagePausedList;
+
+GList *client_specific_settings;
+
+GList *last_p5_block;
+
+TFDSetElement GlobalFDSet;
+
+int speaking_pipe[2];
+
+GHashTable *speechd_sockets_status;
+
+FILE *logfile;
+FILE *custom_logfile;
+char *custom_log_kind;
+FILE *debug_logfile;
+
+TSpeechDMode spd_mode;
+
 static gboolean speechd_client_terminate(gpointer key, gpointer value, gpointer user);
 static gboolean speechd_reload_dead_modules(gpointer user_data);
 static gboolean speechd_load_configuration(gpointer user_data);
--- a/src/server/speechd.h
+++ b/src/server/speechd.h
@@ -123,7 +123,7 @@ typedef enum {
 	SPD_MODE_SINGLE		/*  */
 } TSpeechDMode;
 
-TSpeechDMode spd_mode;
+extern TSpeechDMode spd_mode;
 
 /*  TSpeechDQueue is a queue for messages. */
 typedef struct {
@@ -148,7 +148,7 @@ typedef struct {
 #include "alloc.h"
 #include "speaking.h"
 
-struct {
+extern struct SpeechdOptions {
 	char *communication_method;
 	int communication_method_set;
 	char *socket_path;
@@ -172,48 +172,48 @@ struct {
 	int server_timeout_set;
 } SpeechdOptions;
 
-struct {
+extern struct SpeechdStatus {
 	int max_uid;		/* The largest assigned uid + 1 */
 	int max_gid;		/* The largest assigned gid + 1 */
 	int max_fd;
 } SpeechdStatus;
 
 /* speak() thread defined in speaking.c */
-pthread_t speak_thread;
-pthread_mutex_t logging_mutex;
-pthread_mutex_t element_free_mutex;
-pthread_mutex_t output_layer_mutex;
-pthread_mutex_t socket_com_mutex;
+extern pthread_t speak_thread;
+extern pthread_mutex_t logging_mutex;
+extern pthread_mutex_t element_free_mutex;
+extern pthread_mutex_t output_layer_mutex;
+extern pthread_mutex_t socket_com_mutex;
 
 /* Table of all configured (and succesfully loaded) output modules */
 extern GList *output_modules;
 
 /* Table of settings for each active client (=each active socket)*/
-GHashTable *fd_settings;
+extern GHashTable *fd_settings;
 /* Table of default output modules for different languages */
-GHashTable *language_default_modules;
+extern GHashTable *language_default_modules;
 /* Table of relations between client file descriptors and their uids */
-GHashTable *fd_uid;
+extern GHashTable *fd_uid;
 
 /* Speech Dispatcher main priority queue for messages */
-TSpeechDQueue *MessageQueue;
+extern TSpeechDQueue *MessageQueue;
 /* List of messages from paused clients waiting for resume */
-GList *MessagePausedList;
+extern GList *MessagePausedList;
 
 /* List of different entries of client-specific configuration */
-GList *client_specific_settings;
+extern GList *client_specific_settings;
 
 /* Saves the last received priority progress message */
-GList *last_p5_block;
+extern GList *last_p5_block;
 
 /* Global default settings */
-TFDSetElement GlobalFDSet;
+extern TFDSetElement GlobalFDSet;
 
 /* Inter thread comm pipe */
-int speaking_pipe[2];
+extern int speaking_pipe[2];
 
 /* Managing sockets communication */
-GHashTable *speechd_sockets_status;
+extern GHashTable *speechd_sockets_status;
 typedef struct {
 	int awaiting_data;
 	int inside_block;
@@ -234,10 +234,10 @@ void MSG2(int level, char *kind, char *f
 #define FATAL(msg) do { fatal_error(); MSG(-1,"Fatal error [%s:%d]:"msg, __FILE__, __LINE__); exit(EXIT_FAILURE); } while (0)
 #define DIE(msg) do { MSG(0,"Error [%s:%d]:"msg, __FILE__, __LINE__); exit(EXIT_FAILURE); } while (0)
 
-FILE *logfile;
-FILE *custom_logfile;
-char *custom_log_kind;
-FILE *debug_logfile;
+extern FILE *logfile;
+extern FILE *custom_logfile;
+extern char *custom_log_kind;
+extern FILE *debug_logfile;
 
 /* For debugging purposes, does nothing */
 void fatal_error(void);
