/* * HvB: Bas van der Vlies * This function compare the current result with the previous run * and returns: * 0 : if the files are the same * 1 : if the files differ */ int CompareResult(filename, prev_file) char *filename, *prev_file; { int i; char digest1[EVP_MAX_MD_SIZE+1]; char digest2[EVP_MAX_MD_SIZE+1]; int md_len1, md_len2; FILE *fp; int rtn = 0; Verbose("Comparing files %s with %s\n", prev_file, filename); if ((fp=fopen(prev_file,"r")) != NULL) { fclose(fp); md_len1 = FileChecksum(prev_file, digest1, 'm'); md_len2 = FileChecksum(filename, digest2, 'm'); if (md_len1 != md_len2) { rtn = 1; } else { for (i = 0; i < md_len1; i++) { if (digest1[i] != digest2[i]) { rtn = 1; break; } } } } else { rtn = 1; } /* always update the symlink. */ unlink(prev_file); if (symlink(filename, prev_file) == -1 ) { snprintf(OUTPUT,bufsize,"Could not link %s and %s",filename,prev_file); CfLog(cfinform,OUTPUT,"symlink"); rtn = 1; } return(rtn); }