diff options
Diffstat (limited to 'extras/mobile-action-modeswitch/utils.c')
| -rw-r--r-- | extras/mobile-action-modeswitch/utils.c | 83 | 
1 files changed, 83 insertions, 0 deletions
| diff --git a/extras/mobile-action-modeswitch/utils.c b/extras/mobile-action-modeswitch/utils.c new file mode 100644 index 0000000000..37d0df4d65 --- /dev/null +++ b/extras/mobile-action-modeswitch/utils.c @@ -0,0 +1,83 @@ +/* + * Modem mode switcher + * + * Copyright (C) 2009  Dan Williams <dcbw@redhat.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details: + */ + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <time.h> + +#include "utils.h" + +static int debug_on = 0; +static int quiet = 0; +FILE *logfile = NULL; + +void +do_log (int level, const char *fmt, ...) +{ +	va_list args; +	char buffer[1024]; +	char tag = 'L'; + +	if (level >= LOG_DBG && !debug_on) +		return; + +	va_start (args, fmt); +	vsnprintf (buffer, sizeof (buffer), fmt, args); +	va_end (args); + +	if (level == LOG_ERR) +		tag = 'E'; +	else if (level == LOG_MSG) +		tag = 'L'; +	else if (level == LOG_DBG) +		tag = 'D'; + +	if (logfile) +		fprintf (logfile, "%c: %s\n", tag, buffer); +	if (!quiet) +		fprintf ((level == LOG_ERR) ? stderr : stdout, "%c: %s\n", tag, buffer); +} + +int +log_startup (const char *path, int do_debug, int be_quiet) +{ +	time_t t; + +	quiet = be_quiet; +	debug_on = do_debug; + +	if (!path) +		return 0; + +	logfile = fopen (path, "a+"); +	if (!logfile) +		return 1; + +	t = time (NULL); +	message ("\n**** Started: %s\n", ctime (&t)); +	return 0; +} + +void +log_shutdown (void) +{ +	if (logfile) +		fclose (logfile); +} + | 
