diff options
| -rw-r--r-- | hcid/hcid.8 | 8 | ||||
| -rw-r--r-- | hcid/main.c | 73 | 
2 files changed, 44 insertions, 37 deletions
| diff --git a/hcid/hcid.8 b/hcid/hcid.8 index 767fc2ed..f9e3d7b6 100644 --- a/hcid/hcid.8 +++ b/hcid/hcid.8 @@ -26,8 +26,14 @@ can also provide a number of services via the D-BUS message bus  system.  .SH "OPTIONS"  .TP  -.B \-n +.BI \-n  Don't fork to run daemon in background. +.TP +.BI \-d +Enable debug information output. +.TP +.BI \-s +Enable internal SDP server.  .TP   .BI \-f\ config\-file  Use alternate configuration file instead of /etc/bluetooth/hcid.conf diff --git a/hcid/main.c b/hcid/main.c index 6fb84bbc..2d19c373 100644 --- a/hcid/main.c +++ b/hcid/main.c @@ -58,15 +58,6 @@ struct device_opts default_device;  struct device_opts *parser_device;  static struct device_list *device_list = NULL; -static GMainLoop *event_loop; - -static void usage(void) -{ -	printf("hcid - HCI daemon ver %s\n", VERSION); -	printf("Usage: \n"); -	printf("\thcid [-n not_daemon] [-f config file]\n"); -} -  static inline void init_device_defaults(struct device_opts *device_opts)  {  	memset(device_opts, 0, sizeof(*device_opts)); @@ -554,32 +545,6 @@ static void init_defaults(void)  	init_device_defaults(&default_device);  } -static void sig_term(int sig) -{ -	g_main_loop_quit(event_loop); -} - -static void sig_hup(int sig) -{ -	info("Reloading config file"); - -	free_device_opts(); - -	init_defaults(); - -	if (read_config(hcid.config_file) < 0) -		error("Config reload failed"); - -	init_security_data(); - -	init_all_devices(hcid.sock); -} - -static void sig_debug(int sig) -{ -	toggle_debug(); -} -  static inline void device_event(GIOChannel *chan, evt_stack_internal *si)  {  	evt_si_device *sd = (void *) &si->data; @@ -628,7 +593,6 @@ static gboolean io_stack_event(GIOChannel *chan, GIOCondition cond, gpointer dat  		error("Read from control socket failed: %s (%d)",  							strerror(errno), errno); -		g_main_loop_quit(event_loop);  		return FALSE;  	} @@ -653,6 +617,41 @@ static gboolean io_stack_event(GIOChannel *chan, GIOCondition cond, gpointer dat  	return TRUE;  } +static GMainLoop *event_loop; + +static void sig_term(int sig) +{ +	g_main_loop_quit(event_loop); +} + +static void sig_hup(int sig) +{ +	info("Reloading config file"); + +	free_device_opts(); + +	init_defaults(); + +	if (read_config(hcid.config_file) < 0) +		error("Config reload failed"); + +	init_security_data(); + +	init_all_devices(hcid.sock); +} + +static void sig_debug(int sig) +{ +	toggle_debug(); +} + +static void usage(void) +{ +	printf("hcid - HCI daemon ver %s\n", VERSION); +	printf("Usage: \n"); +	printf("\thcid [-n] [-d] [-s] [-f config file]\n"); +} +  int main(int argc, char *argv[])  {  	struct sockaddr_hci addr; @@ -782,6 +781,8 @@ int main(int argc, char *argv[])  	g_io_add_watch(ctl_io, G_IO_IN, io_stack_event, NULL); +	g_io_channel_unref(ctl_io); +  	/* Initialize already connected devices */  	init_all_devices(hcid.sock); | 
