|
|
@ -1207,82 +1207,84 @@ test_scan (const struct message *r1, const struct message *r2, const struct mess
|
|
|
|
|
|
|
|
|
|
|
|
int total_len = strlen(total);
|
|
|
|
int total_len = strlen(total);
|
|
|
|
|
|
|
|
|
|
|
|
int total_ops = (total_len - 1) * (total_len - 2) / 2;
|
|
|
|
int total_ops = 2 * (total_len - 1) * (total_len - 2) / 2;
|
|
|
|
int ops = 0 ;
|
|
|
|
int ops = 0 ;
|
|
|
|
|
|
|
|
|
|
|
|
size_t buf1_len, buf2_len, buf3_len;
|
|
|
|
size_t buf1_len, buf2_len, buf3_len;
|
|
|
|
|
|
|
|
|
|
|
|
int i,j;
|
|
|
|
int i,j,type_both;
|
|
|
|
for (j = 2; j < total_len; j ++ ) {
|
|
|
|
for (type_both = 0; type_both < 2; type_both ++ ) {
|
|
|
|
for (i = 1; i < j; i ++ ) {
|
|
|
|
for (j = 2; j < total_len; j ++ ) {
|
|
|
|
|
|
|
|
for (i = 1; i < j; i ++ ) {
|
|
|
|
if (ops % 1000 == 0) {
|
|
|
|
|
|
|
|
printf("\b\b\b\b%3.0f%%", 100 * (float)ops /(float)total_ops);
|
|
|
|
if (ops % 1000 == 0) {
|
|
|
|
fflush(stdout);
|
|
|
|
printf("\b\b\b\b%3.0f%%", 100 * (float)ops /(float)total_ops);
|
|
|
|
}
|
|
|
|
fflush(stdout);
|
|
|
|
ops += 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
ops += 1;
|
|
|
|
parser_init(r1->type);
|
|
|
|
|
|
|
|
|
|
|
|
parser_init(type_both ? HTTP_BOTH : r1->type);
|
|
|
|
buf1_len = i;
|
|
|
|
|
|
|
|
strncpy(buf1, total, buf1_len);
|
|
|
|
buf1_len = i;
|
|
|
|
buf1[buf1_len] = 0;
|
|
|
|
strncpy(buf1, total, buf1_len);
|
|
|
|
|
|
|
|
buf1[buf1_len] = 0;
|
|
|
|
buf2_len = j - i;
|
|
|
|
|
|
|
|
strncpy(buf2, total+i, buf2_len);
|
|
|
|
buf2_len = j - i;
|
|
|
|
buf2[buf2_len] = 0;
|
|
|
|
strncpy(buf2, total+i, buf2_len);
|
|
|
|
|
|
|
|
buf2[buf2_len] = 0;
|
|
|
|
buf3_len = total_len - j;
|
|
|
|
|
|
|
|
strncpy(buf3, total+j, buf3_len);
|
|
|
|
buf3_len = total_len - j;
|
|
|
|
buf3[buf3_len] = 0;
|
|
|
|
strncpy(buf3, total+j, buf3_len);
|
|
|
|
|
|
|
|
buf3[buf3_len] = 0;
|
|
|
|
read = parse(buf1, buf1_len);
|
|
|
|
|
|
|
|
if (read != buf1_len) {
|
|
|
|
read = parse(buf1, buf1_len);
|
|
|
|
print_error(buf1, read);
|
|
|
|
if (read != buf1_len) {
|
|
|
|
goto error;
|
|
|
|
print_error(buf1, read);
|
|
|
|
}
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
read = parse(buf2, buf2_len);
|
|
|
|
|
|
|
|
if (read != buf2_len) {
|
|
|
|
read = parse(buf2, buf2_len);
|
|
|
|
print_error(buf2, read);
|
|
|
|
if (read != buf2_len) {
|
|
|
|
goto error;
|
|
|
|
print_error(buf2, read);
|
|
|
|
}
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
read = parse(buf3, buf3_len);
|
|
|
|
|
|
|
|
if (read != buf3_len) {
|
|
|
|
read = parse(buf3, buf3_len);
|
|
|
|
print_error(buf3, read);
|
|
|
|
if (read != buf3_len) {
|
|
|
|
goto error;
|
|
|
|
print_error(buf3, read);
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
parse(NULL, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (3 != num_messages) {
|
|
|
|
|
|
|
|
fprintf(stderr, "\n\nParser didn't see 3 messages only %d\n", num_messages);
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!message_eq(0, r1)) {
|
|
|
|
|
|
|
|
fprintf(stderr, "\n\nError matching messages[0] in test_scan.\n");
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!message_eq(1, r2)) {
|
|
|
|
|
|
|
|
fprintf(stderr, "\n\nError matching messages[1] in test_scan.\n");
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!message_eq(2, r3)) {
|
|
|
|
|
|
|
|
fprintf(stderr, "\n\nError matching messages[2] in test_scan.\n");
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
parser_free();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
parse(NULL, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (3 != num_messages) {
|
|
|
|
|
|
|
|
fprintf(stderr, "\n\nParser didn't see 3 messages only %d\n", num_messages);
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!message_eq(0, r1)) {
|
|
|
|
|
|
|
|
fprintf(stderr, "\n\nError matching messages[0] in test_scan.\n");
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!message_eq(1, r2)) {
|
|
|
|
|
|
|
|
fprintf(stderr, "\n\nError matching messages[1] in test_scan.\n");
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!message_eq(2, r3)) {
|
|
|
|
|
|
|
|
fprintf(stderr, "\n\nError matching messages[2] in test_scan.\n");
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
parser_free();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puts("\b\b\b\b100%");
|
|
|
|
puts("\b\b\b\b100%");
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
error:
|
|
|
|
fprintf(stderr, "i=%d j=%d\n", i, j);
|
|
|
|
fprintf(stderr, "i=%d j=%d\n", i, j);
|
|
|
|
fprintf(stderr, "buf1 (%u) %s\n\n", (unsigned int)buf1_len, buf1);
|
|
|
|
fprintf(stderr, "buf1 (%u) %s\n\n", (unsigned int)buf1_len, buf1);
|
|
|
|
fprintf(stderr, "buf2 (%u) %s\n\n", (unsigned int)buf2_len , buf2);
|
|
|
|
fprintf(stderr, "buf2 (%u) %s\n\n", (unsigned int)buf2_len , buf2);
|
|
|
|