/* * Copyright 2000 by Hans Reiser, licensing governed by reiserfs/README */ #include <stdio.h> #include <ctype.h> #include <string.h> char time_str1[50]; char time_str2[50]; char name_str1[50]; char tmp_str[20][100]; char out1[256]; char out2[256]; FILE *f1; FILE *f2; FILE *f3; FILE *f4; void write_html_head(FILE * fp); void write_html_end(FILE * fp); char head_str[] = "\n \ <!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">\n \ <html>\n \ <head>\n \ <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n \ <meta name=\"GENERATOR\" content=\"Mozilla/4.5 [en] (X11; I; Linux 2.2.7 i586) [Netscape]\">\n \ </head>\n \ <body>\n \ "; /* <tt></tt> \n \ <table BORDER NOSAVE >\n \ <tr BGCOLOR=\"#CCFFFF\" NOSAVE>\n \ <td NOSAVE> \n \ "; */ char end_str[] = "\n \ </table> \n \ <tt></tt> \n \ </body> \n \ </html> \n \ "; main(int argc, char **argv) { float n1, n2, ratio; char *p, *p1, *p2; char line0[100]; char line1[100]; char line2[100]; char line3[100]; char out_line[100]; char html_line[500]; int i, k; if (argc < 3) { printf("\nUsage: mongo_compare file1 file2 res_file\n\n"); printf ("\t<file1> should contain reiserfs or ext2 results of mogo benchmark\n"); printf ("\t<file2> should contain reiserfs or ext2 results of mogo benchmark\n"); printf("\tMongo results will be compared\n"); printf ("\t<res_file.txt> will be contain results in the text form\n"); printf ("\t<res_file.html> will be contain results in the html form\n"); exit(0); } strcpy(out1, argv[3]); strcat(out1, ".txt"); strcpy(out2, argv[3]); strcat(out2, ".html"); if ((f1 = fopen(argv[1], "r")) == NULL) { fprintf(stderr, "%s: can't open %s\n", argv[0], argv[1]); return 1; } if ((f2 = fopen(argv[2], "r")) == NULL) { fprintf(stderr, "%s: can't open %s\n", argv[0], argv[2]); return 1; } if ((f3 = fopen(out1, "wr")) == NULL) { fprintf(stderr, "%s: can't open %s\n", argv[0], out1); return 1; } if ((f4 = fopen(out2, "wr")) == NULL) { fprintf(stderr, "%s: can't open %s\n", argv[0], out2); return 1; } write_html_head(f4); i = 0; while (fgets(line1, 100, f1)) { fgets(line2, 100, f2); if (p = strstr(line1, "\n")) *(p + 1) = 0; if (p = strstr(line2, "\n")) *(p + 1) = 0; strcpy(line3, line1); line3[strlen(line3) - 1] = 0; while (strlen(line3) < 40) { strcat(line3, " "); } if (strstr(line3, "MONGO_")) { fprintf(f4, "</table>\n<table BORDER NOSAVE >\n"); fprintf(f4, "<tr BGCOLOR=\"#CCFFFF\" NOSAVE>"); fprintf(f4, "<td NOSAVE>\n"); i = 0; } if (i < 20) strcpy(tmp_str[i], line2); if (strstr(line3, "FSYS=")) { fprintf(f4, "</td><td>\n"); for (k = 0; k < i; k++) { fprintf(f4, "<tt>%s</tt><br>\n", tmp_str[k]); } fprintf(f4, "</td>\n <tr BGCOLOR=\"#CCFFFF\" NOSAVE><td COLSPAN=\"2\"><tt><B> %s %s </B></tt>\n", line3, line2); i = 20; } else if (NULL == strstr(line3, " :")) { if (strstr(line3, "(time")) fprintf(f4, "<br><tt><center>%s</center></tt>\n", line3); else { k = 0; p = line3; while (*p++ != 0) { if (*p != ' ' && *p != '\n') k++; } if (k > 0) { fprintf(f4, "<tt>%s</tt><br>\n", line3); if (i < 20) i++; } } } else if (strstr(line3, "Create")) fprintf(f4, "</td>\n"); line2[strlen(line2) - 1] = 0; while (strlen(line2) < 40) { strcat(line2, " "); } strcat(line3, line2); strcpy(out_line, line3); strcat(out_line, "\n"); name_str1[0] = 0; if (p1 = strstr(line1, " :")) { strcpy(time_str1, p1 + 2); strncpy(name_str1, line1, p1 - line1); if (p2 = strstr(line2, " :")) { strcpy(time_str2, p2 + 2); time_str1[strlen(time_str1) - 1] = 0; time_str2[strlen(time_str2) - 1] = 0; sscanf(time_str1, "%f", &n1); sscanf(time_str2, "%f", &n2); ratio = n1 / n2; sprintf(out_line, "%s : %6.2f / %6.2f = %.2f\n", name_str1, n1, n2, ratio); fprintf(f4, "<tr><td><tt> %s   </tt></td> <td><div align=right><tt> %6.2f / %6.2f = %.2f   </tt></div></td></tr>\n", name_str1, n1, n2, ratio); } } fprintf(f3, "%s", out_line); line1[0] = 0; line2[0] = 0; line3[0] = 0; out_line[0] = 0; } write_html_end(f4); fclose(f1); fclose(f2); fclose(f3); fclose(f4); fflush(f3); fflush(f4); } /*******************************************/ void write_html_head(FILE * fp) { fprintf(fp, "%s", head_str); } /*******************************************/ void write_html_end(FILE * fp) { fprintf(fp, "%s", end_str); }