static bool interval_tree_write_1(interval_tree_node node, int fd, interval_tree_write_data * data) { bool r; /* Process left subtree. */ if (node->left) { r = interval_tree_write_1(node->left, fd, data); if (!r) return r; } /* Process current node. */ data->intervals[data->n].start = u64_to_le(INTERVAL_START(node)); data->intervals[data->n].end = u64_to_le(INTERVAL_END(node)); data->n++; if (data->n == INTERVAL_COUNT) { r = full_write(fd, data->intervals, INTERVAL_COUNT * sizeof(interval)); if (!r) return r; data->n = 0; } /* Process right subtree. */ if (node->right) { r = interval_tree_write_1(node->right, fd, data); if (!r) return r; } return true; }
static int t64_bit(int verbose) { uint8_t buf[9]; size_t i; int errors = 0; for (i = 0; i < NELE(tests_64_bit); i++) { uint64_t u64; int64_t i64; if (verbose) { fprintf(stderr, "%s %20"PRId64" %20"PRIu64"\n", to_hex(tests_64_bit[i].u8, 8), tests_64_bit[i].i64, tests_64_bit[i].u64); } u64 = le_to_u64(tests_64_bit[i].u8); if (u64 != tests_64_bit[i].u64) { fprintf(stderr, "Failed %s => %"PRIu64"; expected %"PRIu64"\n", to_hex(tests_64_bit[i].u8, 8), u64, tests_64_bit[i].u64); errors++; } i64 = le_to_i64(tests_64_bit[i].u8); if (i64 != tests_64_bit[i].i64) { fprintf(stderr, "Failed %s => %"PRId64"; expected %"PRId64"\n", to_hex(tests_64_bit[i].u8, 8), i64, tests_64_bit[i].i64); errors++; } u64 = le_to_u64(tests_64_bit[i].u8_unaligned + 1); if (u64 != tests_64_bit[i].u64) { fprintf(stderr, "Failed unaligned %s => %"PRIu64"; expected %"PRIu64"\n", to_hex(tests_64_bit[i].u8_unaligned + 1, 8), u64, tests_64_bit[i].u64); errors++; } i64 = le_to_i64(tests_64_bit[i].u8_unaligned + 1); if (i64 != tests_64_bit[i].i64) { fprintf(stderr, "Failed unaligned %s => %"PRId64"; expected %"PRId64"\n", to_hex(tests_64_bit[i].u8_unaligned + 1, 8), i64, tests_64_bit[i].i64); errors++; } u64_to_le(tests_64_bit[i].u64, buf); if (memcmp(buf, tests_64_bit[i].u8, 8) != 0) { fprintf(stderr, "Failed %"PRIu64" => %s; expected %s\n", tests_64_bit[i].u64, to_hex(buf, 8), to_hex(tests_64_bit[i].u8, 8)); errors++; } i64_to_le(tests_64_bit[i].i64, buf); if (memcmp(buf, tests_64_bit[i].u8, 8) != 0) { fprintf(stderr, "Failed %"PRId64" => %s; expected %s\n", tests_64_bit[i].i64, to_hex(buf, 8), to_hex(tests_64_bit[i].u8, 8)); errors++; } u64_to_le(tests_64_bit[i].u64, buf + 1); if (memcmp(buf + 1, tests_64_bit[i].u8, 8) != 0) { fprintf(stderr, "Failed unaligned %"PRIu64" => %s; expected %s\n", tests_64_bit[i].u64, to_hex(buf + 1, 8), to_hex(tests_64_bit[i].u8, 8)); errors++; } i64_to_le(tests_64_bit[i].i64, buf + 1); if (memcmp(buf + 1, tests_64_bit[i].u8, 8) != 0) { fprintf(stderr, "Failed unaligned %"PRId64" => %s; expected %s\n", tests_64_bit[i].i64, to_hex(buf + 1, 8), to_hex(tests_64_bit[i].u8, 8)); errors++; } } return errors; }