/*
 * Generic utility-functions, macros and defaults
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2002-2004 Tecnic Software productions (TNSP)
 *
 * Please read file 'COPYING' for information on license and distribution.
 */
#include "th_util.h"
#include <stdio.h>

/*
 * Default settings
 */
#define	TH_PROG_NAME		"program"
#define	TH_PROG_FULLNAME	"A Program"
#define TH_PROG_VERSION		"0.0.0"
#define TH_PROG_AUTHOR		"By Matti 'ccr' Hämäläinen (C) Copyright 2004 TNSP"
#define TH_PROG_LICENSE		"This software is licensed under GNU GPL version 2"

BOOL	th_isInitialized = FALSE;
int	th_verbosityLevel = 2;
char	*th_prog_name = NULL,
	*th_prog_fullname = NULL,
	*th_prog_version = NULL,
	*th_prog_author = NULL,
	*th_prog_license = NULL;


void th_init(
	char *progName, char *progFullName, char *progVersion,
	char *progAuthor, char *progLicense)
{
 /* Free previous values */
 if (progName)
 	th_prog_name = progName;
 	else
 	th_prog_name = TH_PROG_NAME;

 if (progFullName)
 	th_prog_fullname = progFullName;
 	else
 	th_prog_fullname = TH_PROG_FULLNAME;
 
 if (progVersion)
 	th_prog_version = progVersion;
 	else
 	th_prog_version = TH_PROG_VERSION;
 
 if (progAuthor)
 	th_prog_author = progAuthor;
 	else
 	th_prog_author = TH_PROG_AUTHOR;

 if (progLicense)
 	th_prog_license = progLicense;
 	else
 	th_prog_license = TH_PROG_LICENSE;

 th_isInitialized = TRUE;
}


void THERR(const char *pcFormat, ...)
{
 va_list ap;
 assert(th_isInitialized);
 
 va_start(ap, pcFormat);
 fprintf(stderr, "%s: ", th_prog_name);
 vfprintf(stderr, pcFormat, ap);
 va_end(ap);
}


void THMSG(int verbLevel, const char *pcFormat, ...)
{
 va_list ap;
 assert(th_isInitialized);

 /* Check if the current verbosity level is enough */
 if (th_verbosityLevel >= verbLevel)
 	{
 	/* Print message */
	va_start(ap, pcFormat);
	fprintf(stderr, "%s: ", th_prog_name);
	vfprintf(stderr, pcFormat, ap);
	va_end(ap);
	}
}


void THPRINT(int verbLevel, const char *pcFormat, ...)
{
 va_list ap;
 assert(th_isInitialized);

 /* Check if the current verbosity level is enough */
 if (th_verbosityLevel >= verbLevel)
 	{
 	/* Print message */
	va_start(ap, pcFormat);
	vfprintf(stderr, pcFormat, ap);
	va_end(ap);
	}
}




syntax highlighted by Code2HTML, v. 0.9.1