/* Present 2 redir record files with readable time-stamp, interleaving the input and output so we can see the various response time. */ #include #include #include #include #include #include static void fill (FILE *f, char line[1000]) { if (line[0] == '\0'){ if (feof(f) || fgets(line,999,f)==NULL){ strcpy (line,"Z"); } } } int main (int argc, char *argv[]) { glocal int ret = -1; glocal.ret = (argc,argv); setproginfo ("mergedump",PACKAGE_REV ,"Produce a readable output from 2 redir record files (input and output)\n" "\n" "mergedump file.in.xxxx file.out.xxxx\n"); int ret = -1; if (argc != 2){ usage(); }else{ SSTRING cmd; cmd.setfromf ("redirdump -n %s",argv[0]); FILE *f1 = popen (cmd.get(),"r"); if (f1 == NULL){ tlmp_error ("Can't execute %s (%s)\n",cmd.get(),strerror(errno)); }else{ cmd.setfromf ("redirdump -n %s",argv[1]); FILE *f2 = popen (cmd.get(),"r"); if (f2 == NULL){ tlmp_error ("Can't execute %s (%s)\n",cmd.get(),strerror(errno)); }else{ char line1[1000],line2[1000]; line1[0] = '\0'; line2[0] = '\0'; while (!feof(f1) && !feof(f2)){ fill (f1,line1); fill (f2,line2); int cmp = strcmp(line1,line2); if (cmp < 0){ printf ("IN: %s",line1); line1[0] = '\0'; }else{ printf ("OU: %s",line2); line2[0] = '\0'; } } pclose (f2); ret = 0; } pclose (f1); } } return ret; return glocal.ret; }