コード例 #1
0
ファイル: libnf.c プロジェクト: Lukas955/nf-tools
/* free record */
void lnf_rec_free(lnf_rec_t *rec) {

	int i;

	if (rec == NULL) {
		return;
	}

	if (rec->extensions_arr != NULL) {
		bit_array_release(rec->extensions_arr);
		free(rec->extensions_arr);
	}

	if (rec->master_record != NULL) {
		free(rec->master_record);
	}

	if (rec->field_data != NULL) {
		for (i = LNF_FLD_ZERO_; i < LNF_FLD_TERM_; i++) {
			if (rec->field_data[i] != NULL) {
				free(rec->field_data[i]);
			}
		}
		free(rec->field_data);
	}
	free(rec);
}
コード例 #2
0
ファイル: libnf.c プロジェクト: jwrona/nf-tools
/* close file handler and release related structures */
void lnf_close(lnf_file_t *lnf_file) {

	lnf_map_list_t *map_list, *tmp_map_list;

	if (lnf_file == NULL || lnf_file->nffile == NULL) {
		return ;
	}

	if (lnf_file->flags & LNF_WRITE) {

		// write the last records in buffer
		if (lnf_file->nffile->block_header->NumRecords ) {
			if ( WriteBlock(lnf_file->nffile) <= 0 ) {
				fprintf(stderr, "Failed to write output buffer: '%s'" , strerror(errno));
			}
		}
		CloseUpdateFile(lnf_file->nffile, NULL );

	} else {
		CloseFile(lnf_file->nffile);
	}

	DisposeFile(lnf_file->nffile); 

	PackExtensionMapList(lnf_file->extension_map_list);
	FreeExtensionMaps(lnf_file->extension_map_list);

	map_list = lnf_file->lnf_map_list; 
	while (map_list != NULL) {
		tmp_map_list = map_list;
		map_list = map_list->next;
		bit_array_release(&tmp_map_list->bit_array);
		if (tmp_map_list->map != NULL) {
			free(tmp_map_list->map);
		}
		free(tmp_map_list);
	}

	if (lnf_file->v1convert_buffer != NULL) {
		free(lnf_file->v1convert_buffer);
	}

	free(lnf_file);
}