2 * log.c Logging module.
7 "@(#)log.c 1.3 Copyright 1999 Cistron Internet Services B.V,";
19 extern char *radlog_dir;
23 * Log the message to the logfile. Include the severity and
26 static int do_log(int lvl, char *fmt, va_list ap)
29 unsigned char *s = ": ";
34 if ((lvl & L_CONS) || radlog_dir == NULL || debug_flag) {
36 if (!debug_flag) fprintf(stderr, "%s: ", progname);
37 vfprintf(stderr, fmt, ap);
38 fprintf(stderr, "\n");
40 if (radlog_dir == NULL || debug_flag) return 0;
42 if (strcmp(radlog_dir, "stdout") != 0) {
43 sprintf(buffer, "%s/%s", radlog_dir, RADIUS_LOG);
44 if((msgfd = fopen(buffer, "a")) == NULL) {
45 fprintf(stderr, "%s: Couldn't open %s for logging\n",
54 strcpy(buffer, ctime(&timeval));
72 strcpy(buffer + 24, s);
75 vsprintf(buffer + len, fmt, ap);
78 * Filter out characters not in Latin-1.
80 for (s = buffer; *s; s++) {
81 if (*s == '\r' || *s == '\n')
83 else if (*s < 32 || (*s >= 128 && *s <= 160))
89 if (msgfd != stdout) fclose(msgfd);
94 int log_debug(char *msg, ...)
100 r = do_log(L_DBG, msg, ap);
106 int log(int lvl, char *msg, ...)
112 r = do_log(lvl, msg, ap);