From f1c01ccc0ca3f82313ebff3f336d808acee225c8 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Fri, 6 Dec 2019 10:27:39 +0100 Subject: [PATCH] Fix global varibles 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(-) diff --git a/src/clients/say/options.c b/src/clients/say/options.c index f75ec7de..cb937d37 100644 --- a/src/clients/say/options.c +++ b/src/clients/say/options.c @@ -33,6 +33,30 @@ #include "options.h" #include +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); diff --git a/src/clients/say/options.h b/src/clients/say/options.h index 2fdd3b96..dede6dcc 100644 --- a/src/clients/say/options.h +++ b/src/clients/say/options.h @@ -22,29 +22,29 @@ #include #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'}, diff --git a/src/modules/festival_client.c b/src/modules/festival_client.c index bb15cb86..f8327d46 100644 --- 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 --- */ diff --git a/src/modules/festival_client.h b/src/modules/festival_client.h index 21acdda2..dfbaac15 100644 --- 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; diff --git a/src/modules/module_utils.c b/src/modules/module_utils.c index 0a3d3308..99e71fcb 100644 --- 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; diff --git a/src/modules/module_utils.h b/src/modules/module_utils.h index 12382d3b..87c5f813 100644 --- 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(configoption_t * options, #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 */ diff --git a/src/server/compare.c b/src/server/compare.c index aa08ed79..8d36c39d 100644 --- 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) diff --git a/src/server/compare.h b/src/server/compare.h index f0c730c5..380c9ed2 100644 --- a/src/server/compare.h +++ b/src/server/compare.h @@ -27,7 +27,7 @@ gint compare_message_uid(gconstpointer element, gconstpointer value, 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 */ diff --git a/src/server/configuration.c b/src/server/configuration.c index a21b60c9..ba145995 100644 --- a/src/server/configuration.c +++ b/src/server/configuration.c @@ -33,6 +33,9 @@ #include "symbols.h" #include +configoption_t *spd_options; +int spd_num_options; + static TFDSetClientSpecific *cl_spec_section; /* So that gcc doesn't comply about casts to char* */ diff --git a/src/server/configuration.h b/src/server/configuration.h index 5850c63b..bd87a0d5 100644 --- 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); diff --git a/src/server/speaking.c b/src/server/speaking.c index 2160c250..61463f3f 100644 --- 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 diff --git a/src/server/speaking.h b/src/server/speaking.h index 690db600..48752dfa 100644 --- a/src/server/speaking.h +++ b/src/server/speaking.h @@ -26,15 +26,15 @@ #include -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 diff --git a/src/server/speechd.c b/src/server/speechd.c index 8d3c1de4..6f6e51a5 100644 --- 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); diff --git a/src/server/speechd.h b/src/server/speechd.h index c0730b76..b23bbb69 100644 --- 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 *format, ...); #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);