-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdbxml.c
More file actions
84 lines (75 loc) · 2.79 KB
/
dbxml.c
File metadata and controls
84 lines (75 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include "common.h"
#include "dbxml.h"
void showxml(void)
{
dataxml = fopen(XMLBASEDIR, "w");
int i;
// fprintf(dataxml, "<?xml version=\"%s\" xmlversion=\"%d\"?>\n", MYSTATVERSION, XMLVERSION);
fprintf(dataxml, " <interface id=\"%s\">\n", data.interface);
fprintf(dataxml, " <id>%s</id>\n", data.interface);
fprintf(dataxml, " <nick>%s</nick>\n", data.nick);
fprintf(dataxml, " <created>");
xmldate(&data.created, 1);
fprintf(dataxml, "</created>\n");
fprintf(dataxml, " <updated>");
xmldate(&data.lastupdated, 2);
fprintf(dataxml, "</updated>\n");
fprintf(dataxml, " <traffic>\n");
fprintf(dataxml, " <total><rx>%llu</rx><tx>%llu</tx></total>\n", (data.totalrx*1024)+data.totalrxk, (data.totaltx*1024)+data.totaltxk);
fprintf(dataxml, " <days>\n");
for(i=0;i<=29;i++){
if(data.day[i].used){
fprintf(dataxml, " <day id=\"%d\">", i);
xmldate(&data.day[i].date, 1);
fprintf(dataxml, "<rx>%llu</rx><tx>%llu</tx></day>\n", (data.day[i].rx*1024)+data.day[i].rxk, (data.day[i].tx*1024)+data.day[i].txk);
}
}
fprintf(dataxml, " </days>\n");
fprintf(dataxml, " <months>\n");
for(i=0;i<=11;i++){
if(data.month[i].used){
fprintf(dataxml, " <month id=\"%d\">", i);
xmldate(&data.month[i].month, 3);
fprintf(dataxml, "<rx>%llu</rx><tx>%llu</tx></month>\n", (data.month[i].rx*1024)+data.month[i].rxk, (data.month[i].tx*1024)+data.month[i].txk);
}
}
fprintf(dataxml, " </months>\n");
fprintf(dataxml, " <tops>\n");
for(i=0;i<=9;i++) {
if(data.top10[i].used){
fprintf(dataxml, " <top id=\"%d\">", i);
xmldate(&data.top10[i].date, 2);
fprintf(dataxml, "<rx>%llu</rx><tx>%llu</tx></top>\n", (data.top10[i].rx*1024)+data.top10[i].rxk, (data.top10[i].tx*1024)+data.top10[i].txk);
}
}
fprintf(dataxml, " </tops>\n");
fprintf(dataxml, " </traffic>\n");
fprintf(dataxml, " </interface>\n");
// fprintf(dataxml, "</mystat>\n");
fclose(dataxml);
}
void xmldate(time_t *date, int type)
{
struct tm *d;
char *buffer;
char *type1 = "<date><year>%Y</year><month>%m</month><day>%d</day></date>";
char *type2 = "<date><year>%Y</year><month>%m</month><day>%d</day></date><time><hour>%H</hour><minute>%M</minute></time>";
char *type3 = "<date><year>%Y</year><month>%m</month></date>";
d = localtime(date);
if(type == 1){
buffer = malloc(strlen(type1)+3);
strftime(buffer, strlen(type1)+3, type1, d);
fprintf(dataxml, "%s", buffer);
free(buffer);
}else if(type == 2){
buffer = malloc(strlen(type2)+3);
strftime(buffer, strlen(type2)+3, type2, d);
fprintf(dataxml, "%s", buffer);
free(buffer);
}else if(type == 3){
buffer = malloc(strlen(type3)+3);
strftime(buffer, strlen(type3)+3, type3, d);
fprintf(dataxml, "%s", buffer);
free(buffer);
}
}