Did some stuff
[matches/swarm.git] / src / log.c
1 #include "log.h"
2 #include "options.h"
3 #include <unistd.h>
4
5 static int last_len = 0;
6
7 void log_print(int level, char * funct, char * fmt, ...)
8 {
9         if (level > options.verbosity)
10                 return;
11
12         
13
14         char severity[BUFSIZ];
15         switch (level)
16         {
17                 case LOGERR:
18                         sprintf(severity, "ERROR");
19                         break;
20                 case LOGWARN:
21                         sprintf(severity, "WARNING");
22                         break;
23                 case LOGNOTE:
24                         sprintf(severity, "NOTICE");
25                         break;
26                 case LOGINFO:
27                         sprintf(severity, "INFO");
28                         break;
29                 default:
30                         sprintf(severity, "DEBUG");
31                         break;
32         }
33
34         if (funct != NULL)
35                 last_len = fprintf(stderr, "%s [%d] : %s : %s - ", options.program, getpid(), severity, funct);
36         else
37         {
38                 for (int i = 0; i < last_len; ++i);
39                         fprintf(stderr, " ");
40         }
41         va_list va;
42         va_start(va, fmt);
43         vfprintf(stderr, fmt, va);
44         va_end(va);
45         fprintf(stderr, "\n");
46 }
47
48 void error(char * funct, char * fmt, ...)
49 {
50         if (funct != NULL)
51                 last_len = fprintf(stderr, "%s [%d] : Fatal error in %s - ", options.program, getpid(), funct);
52         else
53         {
54                 for (int i = 0; i < last_len; ++i)
55                         fprintf(stderr, " ");
56                 fprintf(stderr, "Fatal - ");
57         }
58         va_list va;
59         va_start(va, fmt);
60         vfprintf(stderr, fmt, va);
61         va_end(va);
62         fprintf(stderr, "\n");
63
64         exit(EXIT_FAILURE);
65 }
66
67

UCC git Repository :: git.ucc.asn.au