--- /dev/null
+#include <stdio.h>
+main(int argc, char ** argv)
+{
+ char line[1024];
+ FILE * fp;
+ unsigned long long distance;
+ unsigned long long tll;
+ int avg_frag_distance = 0;
+#define SEQ_NUM 11
+ int frag_num[SEQ_NUM], td_MB[SEQ_NUM], td[SEQ_NUM], tblock_num[SEQ_NUM], file_num;
+ int max_blockno=0, avg_block_distance=0;
+ char * p;
+ int sequence[SEQ_NUM]={1,2,5,10,20,30,50,100,200,250,500};
+ int i;
+ int file_ratio, active_ratio, chunk_num, fs_size_MB;
+ char fhmap[1024];
+
+ fp = fopen (argv[1], "r");
+ if (!fp) {
+ perror("open");
+ exit(-1);
+ }
+ i=-1;
+ while (fgets(line, sizeof(line), fp)) {
+ if (feof(fp))
+ break;
+ if (strstr(line, "==>")) {
+ if (i!=-1) {
+ printf("error 1\n");
+ exit(-1);
+ }
+ p = strrchr (line, '/');
+ if (p==NULL)
+ p=line;
+ p = strchr (p, '_');
+ if (p==NULL) {
+ printf("error 2\n");
+ exit(-1);
+ }
+ sscanf (p, "_%d_%d_%d_%d_%s.5 <==\n", &file_ratio, &active_ratio, &chunk_num, &fs_size_MB, fhmap);
+ i = chunk_num;
+ }
+ if (strstr(line, "****")) {
+ if (i==-1) {
+ printf("error 3\n");
+ exit(-1);
+ }
+ sscanf(line, "****total FRAG_NUM %d td_MB %d td %d tblock_num %d max_blockno %d file_num %d avg_frag_distance %d avg_block_distance %d", &frag_num[0], &td_MB[0], &td[0], &tblock_num[0], &max_blockno, &file_num, &avg_frag_distance, &avg_block_distance);
+
+#ifdef checkit
+ distance = td_MB[0];
+ distance *=1000000;
+ distance +=td[0];
+ tll = frag_num[0];
+ distance /= frag_num[0];
+
+ if (distance > 1000000000) {
+ printf ("error 4\n");
+ exit(-1);
+ }
+ avg_frag_distance = distance;
+ printf("%d %d %d %d %d\n", chunk_num, frag_num[0], avg_frag_distance, td_MB[0], tblock_num[0]);
+#else
+ printf("%d %d %d %d %d %d\n", chunk_num, frag_num[0], avg_frag_distance, td_MB[0], tblock_num[0], avg_block_distance);
+#endif
+ i = -1;
+ }
+ }
+}
+