Lines Matching refs:fh
788 file_header_init(struct file_header **fh, const char *fn, size_t file_pos) in file_header_init() argument
791 if (fh && fn) { in file_header_init()
794 *fh = sort_malloc(sizeof(struct file_header)); in file_header_init()
795 (*fh)->file_pos = file_pos; in file_header_init()
796 (*fh)->fr = file_reader_init(fn); in file_header_init()
797 if ((*fh)->fr == NULL) { in file_header_init()
801 line = file_reader_readline((*fh)->fr); in file_header_init()
803 file_reader_free((*fh)->fr); in file_header_init()
804 (*fh)->fr = NULL; in file_header_init()
805 (*fh)->si = NULL; in file_header_init()
807 (*fh)->si = sort_list_item_alloc(); in file_header_init()
808 sort_list_item_set((*fh)->si, line); in file_header_init()
817 file_header_close(struct file_header **fh) in file_header_close() argument
820 if (fh && *fh) { in file_header_close()
821 file_reader_free((*fh)->fr); in file_header_close()
822 (*fh)->fr = NULL; in file_header_close()
823 if ((*fh)->si) { in file_header_close()
824 sort_list_item_clean((*fh)->si); in file_header_close()
825 sort_free((*fh)->si); in file_header_close()
826 (*fh)->si = NULL; in file_header_close()
828 sort_free(*fh); in file_header_close()
829 *fh = NULL; in file_header_close()
837 file_header_swap(struct file_header **fh, size_t i1, size_t i2) in file_header_swap() argument
841 tmp = fh[i1]; in file_header_swap()
842 fh[i1] = fh[i2]; in file_header_swap()
843 fh[i2] = tmp; in file_header_swap()
853 file_header_heap_swim(struct file_header **fh, size_t indx) in file_header_heap_swim() argument
861 if (file_header_cmp(fh[indx], fh[parent_index]) < 0) { in file_header_heap_swim()
863 file_header_swap(fh, indx, parent_index); in file_header_heap_swim()
864 file_header_heap_swim(fh, parent_index); in file_header_heap_swim()
873 file_header_heap_sink(struct file_header **fh, size_t indx, size_t size) in file_header_heap_sink() argument
887 (file_header_cmp(fh[left_child_index], in file_header_heap_sink()
888 fh[right_child_index]) > 0)) in file_header_heap_sink()
890 if (file_header_cmp(fh[indx], fh[min_child_index]) > 0) { in file_header_heap_sink()
891 file_header_swap(fh, indx, min_child_index); in file_header_heap_sink()
892 file_header_heap_sink(fh, min_child_index, size); in file_header_heap_sink()
903 file_header_list_rearrange_from_header(struct file_header **fh, size_t size) in file_header_list_rearrange_from_header() argument
906 file_header_heap_sink(fh, 0, size); in file_header_list_rearrange_from_header()
913 file_header_list_push(struct file_header *f, struct file_header **fh, size_t size) in file_header_list_push() argument
916 fh[size++] = f; in file_header_list_push()
917 file_header_heap_swim(fh, size - 1); in file_header_list_push()
929 file_header_print(struct file_header *fh, FILE *f_out, struct last_printed *lp) in file_header_print() argument
932 if (fh && fh->fr && f_out && fh->si && fh->si->str) { in file_header_print()
934 if ((lp->str == NULL) || (str_list_coll(lp->str, &(fh->si)))) { in file_header_print()
935 bwsfwrite(fh->si->str, f_out, sort_opts_vals.zflag); in file_header_print()
938 lp->str = bwsdup(fh->si->str); in file_header_print()
941 bwsfwrite(fh->si->str, f_out, sort_opts_vals.zflag); in file_header_print()
949 file_header_read_next(struct file_header *fh) in file_header_read_next() argument
952 if (fh && fh->fr) { in file_header_read_next()
955 tmp = file_reader_readline(fh->fr); in file_header_read_next()
957 file_reader_free(fh->fr); in file_header_read_next()
958 fh->fr = NULL; in file_header_read_next()
959 if (fh->si) { in file_header_read_next()
960 sort_list_item_clean(fh->si); in file_header_read_next()
961 sort_free(fh->si); in file_header_read_next()
962 fh->si = NULL; in file_header_read_next()
965 if (fh->si == NULL) in file_header_read_next()
966 fh->si = sort_list_item_alloc(); in file_header_read_next()
967 sort_list_item_set(fh->si, tmp); in file_header_read_next()
976 file_headers_merge(size_t fnum, struct file_header **fh, FILE *f_out) in file_headers_merge() argument
987 file_header_list_push(fh[i], fh, i); in file_headers_merge()
989 while (fh[0]->fr) { /* unfinished files are always in front */ in file_headers_merge()
991 file_header_print(fh[0], f_out, &lp); in file_headers_merge()
993 file_header_read_next(fh[0]); in file_headers_merge()
995 file_header_list_rearrange_from_header(fh, fnum); in file_headers_merge()
1011 struct file_header **fh; in merge_files_array() local
1020 fh = sort_malloc((argc + 1) * sizeof(struct file_header *)); in merge_files_array()
1023 file_header_init(fh + i, argv[i], (size_t) i); in merge_files_array()
1025 file_headers_merge(argc, fh, f_out); in merge_files_array()
1028 file_header_close(fh + i); in merge_files_array()
1030 sort_free(fh); in merge_files_array()