/* Read RR's in zone file format and write them in wire format. */ #include #include #include #include #include int main(int argc, char *argv[]) { FILE *fp = stdin; if (argc > 1) fp = fopen(argv[1], "r"); assert(fp); getdns_list *list = NULL; getdns_return_t r = getdns_fp2rr_list(fp, &list, NULL, 3600); if (argc > 1) fclose(fp); if (r) { fprintf(stderr, "getdns_fp2rr_list: %d\n", r); return r; } size_t len; r = getdns_list_get_length(list, &len); assert(!r); for (int i = 0; i < len; i++) { getdns_dict *rr = NULL; r = getdns_list_get_dict(list, i , &rr); assert(!r); uint8_t *buf = NULL; size_t buf_len; r = getdns_rr_dict2wire(rr, &buf, &buf_len); assert(!r); ssize_t n = write(1, buf, buf_len); free(buf); assert(n == buf_len); } return 0; }