1f08c3bdfSopenharmony_ci/*
2f08c3bdfSopenharmony_ci * Copyright 2000 by Hans Reiser, licensing governed by reiserfs/README
3f08c3bdfSopenharmony_ci */
4f08c3bdfSopenharmony_ci
5f08c3bdfSopenharmony_ci#include <stdio.h>
6f08c3bdfSopenharmony_ci#include <ctype.h>
7f08c3bdfSopenharmony_ci#include <string.h>
8f08c3bdfSopenharmony_ci
9f08c3bdfSopenharmony_cichar time_str1[50];
10f08c3bdfSopenharmony_cichar time_str2[50];
11f08c3bdfSopenharmony_cichar name_str1[50];
12f08c3bdfSopenharmony_cichar tmp_str[20][100];
13f08c3bdfSopenharmony_ci
14f08c3bdfSopenharmony_cichar out1[256];
15f08c3bdfSopenharmony_cichar out2[256];
16f08c3bdfSopenharmony_ci
17f08c3bdfSopenharmony_ciFILE *f1;
18f08c3bdfSopenharmony_ciFILE *f2;
19f08c3bdfSopenharmony_ciFILE *f3;
20f08c3bdfSopenharmony_ciFILE *f4;
21f08c3bdfSopenharmony_ci
22f08c3bdfSopenharmony_civoid write_html_head(FILE * fp);
23f08c3bdfSopenharmony_civoid write_html_end(FILE * fp);
24f08c3bdfSopenharmony_ci
25f08c3bdfSopenharmony_cichar head_str[] = "\n \
26f08c3bdfSopenharmony_ci<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">\n \
27f08c3bdfSopenharmony_ci<html>\n \
28f08c3bdfSopenharmony_ci<head>\n \
29f08c3bdfSopenharmony_ci   <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n \
30f08c3bdfSopenharmony_ci   <meta name=\"GENERATOR\" content=\"Mozilla/4.5 [en] (X11; I; Linux 2.2.7 i586) [Netscape]\">\n \
31f08c3bdfSopenharmony_ci</head>\n \
32f08c3bdfSopenharmony_ci<body>\n \
33f08c3bdfSopenharmony_ci";
34f08c3bdfSopenharmony_ci/*
35f08c3bdfSopenharmony_ci<tt></tt>&nbsp;\n \
36f08c3bdfSopenharmony_ci<table BORDER NOSAVE >\n \
37f08c3bdfSopenharmony_ci<tr BGCOLOR=\"#CCFFFF\" NOSAVE>\n \
38f08c3bdfSopenharmony_ci<td NOSAVE> \n \
39f08c3bdfSopenharmony_ci";
40f08c3bdfSopenharmony_ci*/
41f08c3bdfSopenharmony_ci
42f08c3bdfSopenharmony_cichar end_str[] = "\n \
43f08c3bdfSopenharmony_ci</table> \n \
44f08c3bdfSopenharmony_ci<tt></tt> \n \
45f08c3bdfSopenharmony_ci</body> \n \
46f08c3bdfSopenharmony_ci</html> \n \
47f08c3bdfSopenharmony_ci";
48f08c3bdfSopenharmony_ci
49f08c3bdfSopenharmony_cimain(int argc, char **argv)
50f08c3bdfSopenharmony_ci{
51f08c3bdfSopenharmony_ci	float n1, n2, ratio;
52f08c3bdfSopenharmony_ci	char *p, *p1, *p2;
53f08c3bdfSopenharmony_ci	char line0[100];
54f08c3bdfSopenharmony_ci	char line1[100];
55f08c3bdfSopenharmony_ci	char line2[100];
56f08c3bdfSopenharmony_ci	char line3[100];
57f08c3bdfSopenharmony_ci	char out_line[100];
58f08c3bdfSopenharmony_ci	char html_line[500];
59f08c3bdfSopenharmony_ci	int i, k;
60f08c3bdfSopenharmony_ci
61f08c3bdfSopenharmony_ci	if (argc < 3) {
62f08c3bdfSopenharmony_ci		printf("\nUsage: mongo_compare file1 file2 res_file\n\n");
63f08c3bdfSopenharmony_ci		printf
64f08c3bdfSopenharmony_ci		    ("\t<file1> should contain reiserfs or ext2 results of mogo benchmark\n");
65f08c3bdfSopenharmony_ci		printf
66f08c3bdfSopenharmony_ci		    ("\t<file2> should contain reiserfs or ext2 results of mogo benchmark\n");
67f08c3bdfSopenharmony_ci		printf("\tMongo results   will be compared\n");
68f08c3bdfSopenharmony_ci		printf
69f08c3bdfSopenharmony_ci		    ("\t<res_file.txt>  will be contain results in the text form\n");
70f08c3bdfSopenharmony_ci		printf
71f08c3bdfSopenharmony_ci		    ("\t<res_file.html> will be contain results in the html form\n");
72f08c3bdfSopenharmony_ci		exit(0);
73f08c3bdfSopenharmony_ci	}
74f08c3bdfSopenharmony_ci
75f08c3bdfSopenharmony_ci	strcpy(out1, argv[3]);
76f08c3bdfSopenharmony_ci	strcat(out1, ".txt");
77f08c3bdfSopenharmony_ci
78f08c3bdfSopenharmony_ci	strcpy(out2, argv[3]);
79f08c3bdfSopenharmony_ci	strcat(out2, ".html");
80f08c3bdfSopenharmony_ci
81f08c3bdfSopenharmony_ci	if ((f1 = fopen(argv[1], "r")) == NULL) {
82f08c3bdfSopenharmony_ci		fprintf(stderr, "%s: can't open %s\n", argv[0], argv[1]);
83f08c3bdfSopenharmony_ci		return 1;
84f08c3bdfSopenharmony_ci	}
85f08c3bdfSopenharmony_ci
86f08c3bdfSopenharmony_ci	if ((f2 = fopen(argv[2], "r")) == NULL) {
87f08c3bdfSopenharmony_ci		fprintf(stderr, "%s: can't open %s\n", argv[0], argv[2]);
88f08c3bdfSopenharmony_ci		return 1;
89f08c3bdfSopenharmony_ci	}
90f08c3bdfSopenharmony_ci
91f08c3bdfSopenharmony_ci	if ((f3 = fopen(out1, "wr")) == NULL) {
92f08c3bdfSopenharmony_ci		fprintf(stderr, "%s: can't open %s\n", argv[0], out1);
93f08c3bdfSopenharmony_ci		return 1;
94f08c3bdfSopenharmony_ci	}
95f08c3bdfSopenharmony_ci
96f08c3bdfSopenharmony_ci	if ((f4 = fopen(out2, "wr")) == NULL) {
97f08c3bdfSopenharmony_ci		fprintf(stderr, "%s: can't open %s\n", argv[0], out2);
98f08c3bdfSopenharmony_ci		return 1;
99f08c3bdfSopenharmony_ci	}
100f08c3bdfSopenharmony_ci
101f08c3bdfSopenharmony_ci	write_html_head(f4);
102f08c3bdfSopenharmony_ci	i = 0;
103f08c3bdfSopenharmony_ci	while (fgets(line1, 100, f1)) {
104f08c3bdfSopenharmony_ci		fgets(line2, 100, f2);
105f08c3bdfSopenharmony_ci
106f08c3bdfSopenharmony_ci		if (p = strstr(line1, "\n"))
107f08c3bdfSopenharmony_ci			*(p + 1) = 0;
108f08c3bdfSopenharmony_ci		if (p = strstr(line2, "\n"))
109f08c3bdfSopenharmony_ci			*(p + 1) = 0;
110f08c3bdfSopenharmony_ci
111f08c3bdfSopenharmony_ci		strcpy(line3, line1);
112f08c3bdfSopenharmony_ci		line3[strlen(line3) - 1] = 0;
113f08c3bdfSopenharmony_ci
114f08c3bdfSopenharmony_ci		while (strlen(line3) < 40) {
115f08c3bdfSopenharmony_ci			strcat(line3, " ");
116f08c3bdfSopenharmony_ci		}
117f08c3bdfSopenharmony_ci
118f08c3bdfSopenharmony_ci		if (strstr(line3, "MONGO_")) {
119f08c3bdfSopenharmony_ci			fprintf(f4, "</table>\n<table BORDER NOSAVE >\n");
120f08c3bdfSopenharmony_ci			fprintf(f4, "<tr BGCOLOR=\"#CCFFFF\" NOSAVE>");
121f08c3bdfSopenharmony_ci			fprintf(f4, "<td NOSAVE>\n");
122f08c3bdfSopenharmony_ci			i = 0;
123f08c3bdfSopenharmony_ci		}
124f08c3bdfSopenharmony_ci		if (i < 20)
125f08c3bdfSopenharmony_ci			strcpy(tmp_str[i], line2);
126f08c3bdfSopenharmony_ci
127f08c3bdfSopenharmony_ci		if (strstr(line3, "FSYS=")) {
128f08c3bdfSopenharmony_ci			fprintf(f4, "</td><td>\n");
129f08c3bdfSopenharmony_ci			for (k = 0; k < i; k++) {
130f08c3bdfSopenharmony_ci				fprintf(f4, "<tt>%s</tt><br>\n", tmp_str[k]);
131f08c3bdfSopenharmony_ci			}
132f08c3bdfSopenharmony_ci			fprintf(f4,
133f08c3bdfSopenharmony_ci				"</td>\n <tr BGCOLOR=\"#CCFFFF\" NOSAVE><td COLSPAN=\"2\"><tt><B> %s %s </B></tt>\n",
134f08c3bdfSopenharmony_ci				line3, line2);
135f08c3bdfSopenharmony_ci			i = 20;
136f08c3bdfSopenharmony_ci		} else if (NULL == strstr(line3, " :")) {
137f08c3bdfSopenharmony_ci
138f08c3bdfSopenharmony_ci			if (strstr(line3, "(time"))
139f08c3bdfSopenharmony_ci				fprintf(f4,
140f08c3bdfSopenharmony_ci					"<br><tt><center>%s</center></tt>\n",
141f08c3bdfSopenharmony_ci					line3);
142f08c3bdfSopenharmony_ci			else {
143f08c3bdfSopenharmony_ci				k = 0;
144f08c3bdfSopenharmony_ci				p = line3;
145f08c3bdfSopenharmony_ci				while (*p++ != 0) {
146f08c3bdfSopenharmony_ci					if (*p != ' ' && *p != '\n')
147f08c3bdfSopenharmony_ci						k++;
148f08c3bdfSopenharmony_ci				}
149f08c3bdfSopenharmony_ci				if (k > 0) {
150f08c3bdfSopenharmony_ci					fprintf(f4, "<tt>%s</tt><br>\n", line3);
151f08c3bdfSopenharmony_ci					if (i < 20)
152f08c3bdfSopenharmony_ci						i++;
153f08c3bdfSopenharmony_ci				}
154f08c3bdfSopenharmony_ci			}
155f08c3bdfSopenharmony_ci		}
156f08c3bdfSopenharmony_ci
157f08c3bdfSopenharmony_ci		else if (strstr(line3, "Create"))
158f08c3bdfSopenharmony_ci			fprintf(f4, "</td>\n");
159f08c3bdfSopenharmony_ci
160f08c3bdfSopenharmony_ci		line2[strlen(line2) - 1] = 0;
161f08c3bdfSopenharmony_ci		while (strlen(line2) < 40) {
162f08c3bdfSopenharmony_ci			strcat(line2, " ");
163f08c3bdfSopenharmony_ci		}
164f08c3bdfSopenharmony_ci
165f08c3bdfSopenharmony_ci		strcat(line3, line2);
166f08c3bdfSopenharmony_ci
167f08c3bdfSopenharmony_ci		strcpy(out_line, line3);
168f08c3bdfSopenharmony_ci		strcat(out_line, "\n");
169f08c3bdfSopenharmony_ci		name_str1[0] = 0;
170f08c3bdfSopenharmony_ci
171f08c3bdfSopenharmony_ci		if (p1 = strstr(line1, " :")) {
172f08c3bdfSopenharmony_ci			strcpy(time_str1, p1 + 2);
173f08c3bdfSopenharmony_ci			strncpy(name_str1, line1, p1 - line1);
174f08c3bdfSopenharmony_ci
175f08c3bdfSopenharmony_ci			if (p2 = strstr(line2, " :")) {
176f08c3bdfSopenharmony_ci				strcpy(time_str2, p2 + 2);
177f08c3bdfSopenharmony_ci
178f08c3bdfSopenharmony_ci				time_str1[strlen(time_str1) - 1] = 0;
179f08c3bdfSopenharmony_ci				time_str2[strlen(time_str2) - 1] = 0;
180f08c3bdfSopenharmony_ci
181f08c3bdfSopenharmony_ci				sscanf(time_str1, "%f", &n1);
182f08c3bdfSopenharmony_ci				sscanf(time_str2, "%f", &n2);
183f08c3bdfSopenharmony_ci
184f08c3bdfSopenharmony_ci				ratio = n1 / n2;
185f08c3bdfSopenharmony_ci				sprintf(out_line, "%s : %6.2f / %6.2f = %.2f\n",
186f08c3bdfSopenharmony_ci					name_str1, n1, n2, ratio);
187f08c3bdfSopenharmony_ci
188f08c3bdfSopenharmony_ci				fprintf(f4,
189f08c3bdfSopenharmony_ci					"<tr><td><tt> %s &nbsp </tt></td> <td><div align=right><tt> %6.2f / %6.2f = %.2f &nbsp </tt></div></td></tr>\n",
190f08c3bdfSopenharmony_ci					name_str1, n1, n2, ratio);
191f08c3bdfSopenharmony_ci
192f08c3bdfSopenharmony_ci			}
193f08c3bdfSopenharmony_ci		}
194f08c3bdfSopenharmony_ci
195f08c3bdfSopenharmony_ci		fprintf(f3, "%s", out_line);
196f08c3bdfSopenharmony_ci		line1[0] = 0;
197f08c3bdfSopenharmony_ci		line2[0] = 0;
198f08c3bdfSopenharmony_ci		line3[0] = 0;
199f08c3bdfSopenharmony_ci		out_line[0] = 0;
200f08c3bdfSopenharmony_ci	}
201f08c3bdfSopenharmony_ci
202f08c3bdfSopenharmony_ci	write_html_end(f4);
203f08c3bdfSopenharmony_ci
204f08c3bdfSopenharmony_ci	fclose(f1);
205f08c3bdfSopenharmony_ci	fclose(f2);
206f08c3bdfSopenharmony_ci
207f08c3bdfSopenharmony_ci	fclose(f3);
208f08c3bdfSopenharmony_ci	fclose(f4);
209f08c3bdfSopenharmony_ci
210f08c3bdfSopenharmony_ci	fflush(f3);
211f08c3bdfSopenharmony_ci	fflush(f4);
212f08c3bdfSopenharmony_ci}
213f08c3bdfSopenharmony_ci
214f08c3bdfSopenharmony_ci/*******************************************/
215f08c3bdfSopenharmony_civoid write_html_head(FILE * fp)
216f08c3bdfSopenharmony_ci{
217f08c3bdfSopenharmony_ci	fprintf(fp, "%s", head_str);
218f08c3bdfSopenharmony_ci}
219f08c3bdfSopenharmony_ci
220f08c3bdfSopenharmony_ci/*******************************************/
221f08c3bdfSopenharmony_civoid write_html_end(FILE * fp)
222f08c3bdfSopenharmony_ci{
223f08c3bdfSopenharmony_ci	fprintf(fp, "%s", end_str);
224f08c3bdfSopenharmony_ci}
225