
void log(int type,char* file,int line,int error,char* fmt,...)

type
----

LOG_NOTICE	normale ausgaben des programms ueber den programmverlauf.
LOG_DEBUG	debugging (statusmeldungen, rueckgabewerte von funktionen,
		etc.).
LOG_WARN	warnungen (insb. bei fehlern, die nicht zum abbruch fuehren,
		z.B. in unterfunktionen mit fehlercodes).
LOG_ERROR	fehler innerhalb einer hauptfunktion, der nicht zum abbruch
		fuehrt.
LOG_FATAL	fehler, der zum abbruch fuehrt.

file und line
-------------

sind immer die macros __FILE__ und __LINE__

error
-----

ERROR_NONE oder 0 bei typ LOG_NOTICE und LOG_DEBUG, ansonsten:

ERROR_UNSPECIFIED		sonstiger fehler
ERROR_OUT_OF_MEM		speicher zuende
ERROR_VALUE_OUT_OF_RANGE	zu grosses oder kleines argument
ERROR_WRONG_ARGUMENT		fehlerhaftes argument
ERROR_SYNTAX_ERROR		syntaxfehler

fmt und ...
-----------

die fehlermeldung


zu beachten:
------------

in general.h muessen folgende funktionen deklariert werden:

int debuglevel();
void panic();

diese koennen beliebig definiert werden. meldungen des typs LOG_DEBUG werden
nur ausgegeben, wenn debuglevel() != 0. panic() sollte keinen speicher mehr
anfordern !!!

ausserdem muessen dort folgende Macros definiert werden:

MAX_LOG_SIZE			maximale groesse einer logmeldung
LOG_STDLOG_PATH			pfad des logfiles
LOG_ERRLOG_PATH			pfad des logfiles fuer fehler
LOG_MAIL_ADDRESS		mailadresse fuer fehlermeldungen
MYNAME				programmname
SENDMAIL			voller pfad des mailers

LOG_FLAGS_NOTICE		Flags fuer normale meldungen
LOG_FLAGS_DEBUG			fuer debugmeldungen
LOG_FLAGS_WARN			fuer warnungen
LOG_FLAGS_ERROR			fuer nichtkritische fehler
LOG_FLAGS_FATAL			fuer kritische fehler

als flags kommen in frage:

LOG_FLAG_STDLOG 1		ins logfile schreiben
LOG_FLAG_ERRLOG 2		ins logfile fuer fehler schreiben
LOG_FLAG_STDERR 4		auf stderr ausgeben
LOG_FLAG_STDOUT 8		auf stdout ausgeben
LOG_FLAG_MAIL 16		fehlermeldung als mail schicken
LOG_FLAG_PRINT_NAME 32		in der meldung typ der meldung angeben
LOG_FLAG_PRINT_POSITION 64	position im sourcecode angeben
LOG_FLAG_PRINT_TIME 128		zeit angeben
LOG_FLAG_PRINT_ERR 256		fehlertyp angeben

konventionen:
-------------

-kein freier hauptspeicher -> LOG_FATAL
-funktionen mit fehlercodes im rueckgabewert benutzen LOG_WARN, ansonsten
 LOG_FATAL
-Aufraeumen (schliessen von handles, etc.): funktionen sind fuer ihre
 argumente nicht zustaendig, das hauptprogramm muss in panic() fuers
 aufraeumen sorgen.
