diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2008-08-05 22:01:33 +0200 | 
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2008-08-05 22:01:33 +0200 | 
| commit | 5eb50e89d12e9e8f89b29145edaf9bdef7e7d597 (patch) | |
| tree | f5f90cbbd3be7d2a3fbad35e0712a136521ea882 | |
| parent | aa38f1440497880ba9f5933f83d5a8c13d162185 (diff) | |
Use GLib option parsing instead of getopt
| -rw-r--r-- | src/main.c | 54 | 
1 files changed, 28 insertions, 26 deletions
| @@ -833,21 +833,27 @@ static void sig_debug(int sig)  	toggle_debug();  } -static void usage(void) -{ -	printf("Bluetooth daemon ver %s\n\n", VERSION); -	printf("Usage:\n"); -	printf("\tbluetoothd [-n] [-d] [-m mtu]\n"); -} +static gboolean option_detach = TRUE; +static gboolean option_debug = FALSE; + +static GOptionEntry options[] = { +	{ "nodaemon", 'n', G_OPTION_FLAG_REVERSE, +				G_OPTION_ARG_NONE, &option_detach, +				"Don't fork daemon to background" }, +	{ "debug", 'd', 0, G_OPTION_ARG_NONE, &option_debug, +				"Enable debug information output" }, +	{ NULL }, +};  int main(int argc, char *argv[])  { +	GOptionContext *context; +	GError *err = NULL;  	struct sockaddr_hci addr;  	struct hci_filter flt;  	struct sigaction sa;  	GIOChannel *ctl_io, *child_io;  	uint16_t mtu = 0; -	int opt, daemonize = 1, debug = 0;  	GKeyFile *config;  	/* Default HCId settings */ @@ -865,31 +871,27 @@ int main(int argc, char *argv[])  	init_defaults(); -	while ((opt = getopt(argc, argv, "ndm:")) != EOF) { -		switch (opt) { -		case 'n': -			daemonize = 0; -			break; +	context = g_option_context_new(NULL); +	g_option_context_add_main_entries(context, options, NULL); -		case 'd': -			debug = 1; -			break; +	if (g_option_context_parse(context, &argc, &argv, &err) == FALSE) { +		if (err != NULL) { +			g_printerr("%s\n", err->message); +			g_error_free(err); +		} else +			g_printerr("An unknown error occurred\n"); +		exit(1); +	} -		case 'm': -			mtu = atoi(optarg); -			break; +	g_option_context_free(context); -		default: -			usage(); +	if (option_detach == TRUE) { +		if (daemon(0, 0)) { +			perror("Can't start daemon");  			exit(1);  		}  	} -	if (daemonize && daemon(0, 0)) { -		error("Can't daemonize: %s (%d)", strerror(errno), errno); -		exit(1); -	} -  	umask(0077);  	start_logging("bluetoothd", "Bluetooth daemon"); @@ -906,7 +908,7 @@ int main(int argc, char *argv[])  	sa.sa_handler = SIG_IGN;  	sigaction(SIGPIPE, &sa, NULL); -	if (debug) { +	if (option_debug == TRUE) {  		info("Enabling debug information");  		enable_debug();  	} | 
