char **expected = NULL;
char *p, **actual = NULL;
char c;
- int expected_failure = 0, actual_failure = 0;
+ int expected_failure = 0, actual_failure = 0, retval = 0;
assertion_count(file, line);
if (expected == NULL) {
failure_start(pathname, line, "Can't allocate memory");
failure_finish(NULL);
- free(expected);
- return (0);
+ goto done;
}
for (i = 0; lines[i] != NULL; ++i) {
expected[i] = strdup(lines[i]);
if (actual == NULL) {
failure_start(pathname, line, "Can't allocate memory");
failure_finish(NULL);
- free(expected);
- return (0);
+ goto done;
}
for (j = 0, p = buff; p < buff + buff_size;
p += 1 + strlen(p)) {
++actual_failure;
}
if (expected_failure == 0 && actual_failure == 0) {
- free(buff);
- free(expected);
- free(actual);
- return (1);
+ retval = 1;
+ goto done;
}
failure_start(file, line, "File doesn't match: %s", pathname);
for (i = 0; i < expected_count; ++i) {
- if (expected[i] != NULL) {
+ if (expected[i] != NULL)
logprintf(" Expected but not present: %s\n", expected[i]);
- free(expected[i]);
- }
}
for (j = 0; j < actual_count; ++j) {
if (actual[j] != NULL)
logprintf(" Present but not expected: %s\n", actual[j]);
}
failure_finish(NULL);
+done:
+ free(actual);
free(buff);
+ for (i = 0; i < expected_count; ++i)
+ free(expected[i]);
free(expected);
- free(actual);
- return (0);
+
+ return (retval);
}
/* Verify that a text file does not contains the specified strings */