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> \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   </tt></td> <td><div align=right><tt> %6.2f / %6.2f = %.2f   </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