Full Code of libyal/libfsntfs for AI

main 6dff0233f983 cached
602 files
6.4 MB
1.7M tokens
1767 symbols
1 requests
Download .txt
Showing preview only (6,822K chars total). Download the full file or copy to clipboard to get everything.
Repository: libyal/libfsntfs
Branch: main
Commit: 6dff0233f983
Files: 602
Total size: 6.4 MB

Directory structure:
gitextract_g0xxxb8w/

├── .codecov.yml
├── .github/
│   └── workflows/
│       ├── build.yml
│       ├── build_freebsd.yml
│       ├── build_macos.yml
│       ├── build_ossfuzz.yml
│       ├── build_shared.yml
│       └── build_wheel.yml
├── .gitignore
├── AUTHORS
├── COPYING
├── COPYING.LESSER
├── ChangeLog
├── Makefile.am
├── NEWS
├── README
├── acinclude.m4
├── appveyor.yml
├── autogen.ps1
├── autogen.sh
├── build.ps1
├── builddokan.ps1
├── common/
│   ├── Makefile.am
│   ├── byte_stream.h
│   ├── common.h
│   ├── config_borlandc.h
│   ├── config_msc.h
│   ├── config_winapi.h
│   ├── file_stream.h
│   ├── memory.h
│   ├── narrow_string.h
│   ├── system_string.h
│   ├── types.h.in
│   └── wide_string.h
├── configure.ac
├── documentation/
│   └── New Technologies File System (NTFS).asciidoc
├── dpkg/
│   ├── changelog.in
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── libfsntfs-dev.install
│   ├── libfsntfs-python3.install
│   ├── libfsntfs-tools.install
│   ├── libfsntfs.install
│   ├── rules
│   └── source/
│       └── format
├── fsntfstools/
│   ├── Makefile.am
│   ├── bodyfile.c
│   ├── bodyfile.h
│   ├── digest_hash.c
│   ├── digest_hash.h
│   ├── fsntfsinfo.c
│   ├── fsntfsmount.c
│   ├── fsntfstools_getopt.c
│   ├── fsntfstools_getopt.h
│   ├── fsntfstools_i18n.h
│   ├── fsntfstools_libbfio.h
│   ├── fsntfstools_libcerror.h
│   ├── fsntfstools_libclocale.h
│   ├── fsntfstools_libcnotify.h
│   ├── fsntfstools_libcpath.h
│   ├── fsntfstools_libfcache.h
│   ├── fsntfstools_libfdata.h
│   ├── fsntfstools_libfdatetime.h
│   ├── fsntfstools_libfguid.h
│   ├── fsntfstools_libfsntfs.h
│   ├── fsntfstools_libfusn.h
│   ├── fsntfstools_libfwnt.h
│   ├── fsntfstools_libhmac.h
│   ├── fsntfstools_libuna.h
│   ├── fsntfstools_output.c
│   ├── fsntfstools_output.h
│   ├── fsntfstools_signal.c
│   ├── fsntfstools_signal.h
│   ├── fsntfstools_unused.h
│   ├── info_handle.c
│   ├── info_handle.h
│   ├── mount_dokan.c
│   ├── mount_dokan.h
│   ├── mount_file_entry.c
│   ├── mount_file_entry.h
│   ├── mount_file_system.c
│   ├── mount_file_system.h
│   ├── mount_fuse.c
│   ├── mount_fuse.h
│   ├── mount_handle.c
│   ├── mount_handle.h
│   ├── mount_path_string.c
│   ├── mount_path_string.h
│   ├── path_string.c
│   └── path_string.h
├── include/
│   ├── Makefile.am
│   ├── libfsntfs/
│   │   ├── codepage.h
│   │   ├── definitions.h.in
│   │   ├── error.h
│   │   ├── extern.h
│   │   ├── features.h.in
│   │   └── types.h.in
│   └── libfsntfs.h.in
├── libfsntfs/
│   ├── Makefile.am
│   ├── fsntfs_file_name.h
│   ├── fsntfs_index.h
│   ├── fsntfs_logged_utility_stream.h
│   ├── fsntfs_mft_attribute.h
│   ├── fsntfs_mft_attribute_list.h
│   ├── fsntfs_mft_entry.h
│   ├── fsntfs_object_identifier.h
│   ├── fsntfs_reparse_point.h
│   ├── fsntfs_secure.h
│   ├── fsntfs_standard_information.h
│   ├── fsntfs_txf_data.h
│   ├── fsntfs_volume_header.h
│   ├── fsntfs_volume_information.h
│   ├── libfsntfs.c
│   ├── libfsntfs.rc.in
│   ├── libfsntfs_attribute.c
│   ├── libfsntfs_attribute.h
│   ├── libfsntfs_attribute_list_attribute.c
│   ├── libfsntfs_attribute_list_attribute.h
│   ├── libfsntfs_attribute_list_entry.c
│   ├── libfsntfs_attribute_list_entry.h
│   ├── libfsntfs_bitmap_values.c
│   ├── libfsntfs_bitmap_values.h
│   ├── libfsntfs_buffer_data_handle.c
│   ├── libfsntfs_buffer_data_handle.h
│   ├── libfsntfs_cluster_block.c
│   ├── libfsntfs_cluster_block.h
│   ├── libfsntfs_cluster_block_data.c
│   ├── libfsntfs_cluster_block_data.h
│   ├── libfsntfs_cluster_block_stream.c
│   ├── libfsntfs_cluster_block_stream.h
│   ├── libfsntfs_cluster_block_vector.c
│   ├── libfsntfs_cluster_block_vector.h
│   ├── libfsntfs_compressed_block.c
│   ├── libfsntfs_compressed_block.h
│   ├── libfsntfs_compressed_block_data_handle.c
│   ├── libfsntfs_compressed_block_data_handle.h
│   ├── libfsntfs_compressed_block_vector.c
│   ├── libfsntfs_compressed_block_vector.h
│   ├── libfsntfs_compressed_data_handle.c
│   ├── libfsntfs_compressed_data_handle.h
│   ├── libfsntfs_compression.c
│   ├── libfsntfs_compression.h
│   ├── libfsntfs_compression_unit_data_handle.c
│   ├── libfsntfs_compression_unit_data_handle.h
│   ├── libfsntfs_compression_unit_descriptor.c
│   ├── libfsntfs_compression_unit_descriptor.h
│   ├── libfsntfs_data_run.c
│   ├── libfsntfs_data_run.h
│   ├── libfsntfs_data_stream.c
│   ├── libfsntfs_data_stream.h
│   ├── libfsntfs_debug.c
│   ├── libfsntfs_debug.h
│   ├── libfsntfs_definitions.h.in
│   ├── libfsntfs_directory_entries_tree.c
│   ├── libfsntfs_directory_entries_tree.h
│   ├── libfsntfs_directory_entry.c
│   ├── libfsntfs_directory_entry.h
│   ├── libfsntfs_error.c
│   ├── libfsntfs_error.h
│   ├── libfsntfs_extent.c
│   ├── libfsntfs_extent.h
│   ├── libfsntfs_extern.h
│   ├── libfsntfs_file_entry.c
│   ├── libfsntfs_file_entry.h
│   ├── libfsntfs_file_name_attribute.c
│   ├── libfsntfs_file_name_attribute.h
│   ├── libfsntfs_file_name_values.c
│   ├── libfsntfs_file_name_values.h
│   ├── libfsntfs_file_system.c
│   ├── libfsntfs_file_system.h
│   ├── libfsntfs_fixup_values.c
│   ├── libfsntfs_fixup_values.h
│   ├── libfsntfs_index.c
│   ├── libfsntfs_index.h
│   ├── libfsntfs_index_entry.c
│   ├── libfsntfs_index_entry.h
│   ├── libfsntfs_index_entry_header.c
│   ├── libfsntfs_index_entry_header.h
│   ├── libfsntfs_index_entry_vector.c
│   ├── libfsntfs_index_entry_vector.h
│   ├── libfsntfs_index_node.c
│   ├── libfsntfs_index_node.h
│   ├── libfsntfs_index_node_header.c
│   ├── libfsntfs_index_node_header.h
│   ├── libfsntfs_index_root_header.c
│   ├── libfsntfs_index_root_header.h
│   ├── libfsntfs_index_value.c
│   ├── libfsntfs_index_value.h
│   ├── libfsntfs_io_handle.c
│   ├── libfsntfs_io_handle.h
│   ├── libfsntfs_libbfio.h
│   ├── libfsntfs_libcdata.h
│   ├── libfsntfs_libcerror.h
│   ├── libfsntfs_libclocale.h
│   ├── libfsntfs_libcnotify.h
│   ├── libfsntfs_libcthreads.h
│   ├── libfsntfs_libfcache.h
│   ├── libfsntfs_libfdata.h
│   ├── libfsntfs_libfdatetime.h
│   ├── libfsntfs_libfguid.h
│   ├── libfsntfs_libfwnt.h
│   ├── libfsntfs_libuna.h
│   ├── libfsntfs_logged_utility_stream_values.c
│   ├── libfsntfs_logged_utility_stream_values.h
│   ├── libfsntfs_mft.c
│   ├── libfsntfs_mft.h
│   ├── libfsntfs_mft_attribute.c
│   ├── libfsntfs_mft_attribute.h
│   ├── libfsntfs_mft_attribute_list.c
│   ├── libfsntfs_mft_attribute_list.h
│   ├── libfsntfs_mft_attribute_list_entry.c
│   ├── libfsntfs_mft_attribute_list_entry.h
│   ├── libfsntfs_mft_entry.c
│   ├── libfsntfs_mft_entry.h
│   ├── libfsntfs_mft_entry_header.c
│   ├── libfsntfs_mft_entry_header.h
│   ├── libfsntfs_mft_metadata_file.c
│   ├── libfsntfs_mft_metadata_file.h
│   ├── libfsntfs_name.c
│   ├── libfsntfs_name.h
│   ├── libfsntfs_notify.c
│   ├── libfsntfs_notify.h
│   ├── libfsntfs_object_identifier_attribute.c
│   ├── libfsntfs_object_identifier_attribute.h
│   ├── libfsntfs_object_identifier_values.c
│   ├── libfsntfs_object_identifier_values.h
│   ├── libfsntfs_path_hint.c
│   ├── libfsntfs_path_hint.h
│   ├── libfsntfs_profiler.c
│   ├── libfsntfs_profiler.h
│   ├── libfsntfs_reparse_point_attribute.c
│   ├── libfsntfs_reparse_point_attribute.h
│   ├── libfsntfs_reparse_point_values.c
│   ├── libfsntfs_reparse_point_values.h
│   ├── libfsntfs_sds_index_value.c
│   ├── libfsntfs_sds_index_value.h
│   ├── libfsntfs_security_descriptor_attribute.c
│   ├── libfsntfs_security_descriptor_attribute.h
│   ├── libfsntfs_security_descriptor_index.c
│   ├── libfsntfs_security_descriptor_index.h
│   ├── libfsntfs_security_descriptor_index_value.c
│   ├── libfsntfs_security_descriptor_index_value.h
│   ├── libfsntfs_security_descriptor_values.c
│   ├── libfsntfs_security_descriptor_values.h
│   ├── libfsntfs_standard_information_attribute.c
│   ├── libfsntfs_standard_information_attribute.h
│   ├── libfsntfs_standard_information_values.c
│   ├── libfsntfs_standard_information_values.h
│   ├── libfsntfs_support.c
│   ├── libfsntfs_support.h
│   ├── libfsntfs_txf_data_values.c
│   ├── libfsntfs_txf_data_values.h
│   ├── libfsntfs_types.h
│   ├── libfsntfs_unused.h
│   ├── libfsntfs_usn_change_journal.c
│   ├── libfsntfs_usn_change_journal.h
│   ├── libfsntfs_volume.c
│   ├── libfsntfs_volume.h
│   ├── libfsntfs_volume_header.c
│   ├── libfsntfs_volume_header.h
│   ├── libfsntfs_volume_information_attribute.c
│   ├── libfsntfs_volume_information_attribute.h
│   ├── libfsntfs_volume_information_values.c
│   ├── libfsntfs_volume_information_values.h
│   ├── libfsntfs_volume_name_attribute.c
│   ├── libfsntfs_volume_name_attribute.h
│   ├── libfsntfs_volume_name_values.c
│   └── libfsntfs_volume_name_values.h
├── libfsntfs.ini
├── libfsntfs.nuspec
├── libfsntfs.pc.in
├── libfsntfs.spec.in
├── m4/
│   ├── common.m4
│   ├── libbfio.m4
│   ├── libcdata.m4
│   ├── libcerror.m4
│   ├── libcfile.m4
│   ├── libclocale.m4
│   ├── libcnotify.m4
│   ├── libcpath.m4
│   ├── libcrypto.m4
│   ├── libcsplit.m4
│   ├── libcthreads.m4
│   ├── libfcache.m4
│   ├── libfdata.m4
│   ├── libfdatetime.m4
│   ├── libfguid.m4
│   ├── libfuse.m4
│   ├── libfusn.m4
│   ├── libfwnt.m4
│   ├── libhmac.m4
│   ├── libuna.m4
│   ├── pthread.m4
│   ├── python.m4
│   ├── tests.m4
│   └── types.m4
├── manuals/
│   ├── Makefile.am
│   ├── fsntfsinfo.1
│   └── libfsntfs.3
├── msvscpp/
│   ├── Makefile.am
│   ├── fsntfs_test_attribute/
│   │   └── fsntfs_test_attribute.vcproj
│   ├── fsntfs_test_attribute_list_entry/
│   │   └── fsntfs_test_attribute_list_entry.vcproj
│   ├── fsntfs_test_bitmap_values/
│   │   └── fsntfs_test_bitmap_values.vcproj
│   ├── fsntfs_test_buffer_data_handle/
│   │   └── fsntfs_test_buffer_data_handle.vcproj
│   ├── fsntfs_test_cluster_block/
│   │   └── fsntfs_test_cluster_block.vcproj
│   ├── fsntfs_test_cluster_block_data/
│   │   └── fsntfs_test_cluster_block_data.vcproj
│   ├── fsntfs_test_cluster_block_stream/
│   │   └── fsntfs_test_cluster_block_stream.vcproj
│   ├── fsntfs_test_cluster_block_vector/
│   │   └── fsntfs_test_cluster_block_vector.vcproj
│   ├── fsntfs_test_compressed_block/
│   │   └── fsntfs_test_compressed_block.vcproj
│   ├── fsntfs_test_compressed_block_data_handle/
│   │   └── fsntfs_test_compressed_block_data_handle.vcproj
│   ├── fsntfs_test_compressed_block_vector/
│   │   └── fsntfs_test_compressed_block_vector.vcproj
│   ├── fsntfs_test_compressed_data_handle/
│   │   └── fsntfs_test_compressed_data_handle.vcproj
│   ├── fsntfs_test_compression/
│   │   └── fsntfs_test_compression.vcproj
│   ├── fsntfs_test_compression_unit_data_handle/
│   │   └── fsntfs_test_compression_unit_data_handle.vcproj
│   ├── fsntfs_test_compression_unit_descriptor/
│   │   └── fsntfs_test_compression_unit_descriptor.vcproj
│   ├── fsntfs_test_data_run/
│   │   └── fsntfs_test_data_run.vcproj
│   ├── fsntfs_test_data_stream/
│   │   └── fsntfs_test_data_stream.vcproj
│   ├── fsntfs_test_directory_entries_tree/
│   │   └── fsntfs_test_directory_entries_tree.vcproj
│   ├── fsntfs_test_directory_entry/
│   │   └── fsntfs_test_directory_entry.vcproj
│   ├── fsntfs_test_error/
│   │   └── fsntfs_test_error.vcproj
│   ├── fsntfs_test_extent/
│   │   └── fsntfs_test_extent.vcproj
│   ├── fsntfs_test_file_entry/
│   │   └── fsntfs_test_file_entry.vcproj
│   ├── fsntfs_test_file_name_attribute/
│   │   └── fsntfs_test_file_name_attribute.vcproj
│   ├── fsntfs_test_file_name_values/
│   │   └── fsntfs_test_file_name_values.vcproj
│   ├── fsntfs_test_file_system/
│   │   └── fsntfs_test_file_system.vcproj
│   ├── fsntfs_test_fixup_values/
│   │   └── fsntfs_test_fixup_values.vcproj
│   ├── fsntfs_test_index/
│   │   └── fsntfs_test_index.vcproj
│   ├── fsntfs_test_index_entry/
│   │   └── fsntfs_test_index_entry.vcproj
│   ├── fsntfs_test_index_entry_header/
│   │   └── fsntfs_test_index_entry_header.vcproj
│   ├── fsntfs_test_index_entry_vector/
│   │   └── fsntfs_test_index_entry_vector.vcproj
│   ├── fsntfs_test_index_node/
│   │   └── fsntfs_test_index_node.vcproj
│   ├── fsntfs_test_index_node_header/
│   │   └── fsntfs_test_index_node_header.vcproj
│   ├── fsntfs_test_index_root_header/
│   │   └── fsntfs_test_index_root_header.vcproj
│   ├── fsntfs_test_index_value/
│   │   └── fsntfs_test_index_value.vcproj
│   ├── fsntfs_test_io_handle/
│   │   └── fsntfs_test_io_handle.vcproj
│   ├── fsntfs_test_logged_utility_stream_values/
│   │   └── fsntfs_test_logged_utility_stream_values.vcproj
│   ├── fsntfs_test_mft/
│   │   └── fsntfs_test_mft.vcproj
│   ├── fsntfs_test_mft_attribute/
│   │   └── fsntfs_test_mft_attribute.vcproj
│   ├── fsntfs_test_mft_attribute_list/
│   │   └── fsntfs_test_mft_attribute_list.vcproj
│   ├── fsntfs_test_mft_attribute_list_entry/
│   │   └── fsntfs_test_mft_attribute_list_entry.vcproj
│   ├── fsntfs_test_mft_entry/
│   │   └── fsntfs_test_mft_entry.vcproj
│   ├── fsntfs_test_mft_entry_header/
│   │   └── fsntfs_test_mft_entry_header.vcproj
│   ├── fsntfs_test_mft_metadata_file/
│   │   └── fsntfs_test_mft_metadata_file.vcproj
│   ├── fsntfs_test_name/
│   │   └── fsntfs_test_name.vcproj
│   ├── fsntfs_test_notify/
│   │   └── fsntfs_test_notify.vcproj
│   ├── fsntfs_test_object_identifier_values/
│   │   └── fsntfs_test_object_identifier_values.vcproj
│   ├── fsntfs_test_path_hint/
│   │   └── fsntfs_test_path_hint.vcproj
│   ├── fsntfs_test_profiler/
│   │   └── fsntfs_test_profiler.vcproj
│   ├── fsntfs_test_reparse_point_attribute/
│   │   └── fsntfs_test_reparse_point_attribute.vcproj
│   ├── fsntfs_test_reparse_point_values/
│   │   └── fsntfs_test_reparse_point_values.vcproj
│   ├── fsntfs_test_sds_index_value/
│   │   └── fsntfs_test_sds_index_value.vcproj
│   ├── fsntfs_test_security_descriptor_index/
│   │   └── fsntfs_test_security_descriptor_index.vcproj
│   ├── fsntfs_test_security_descriptor_index_value/
│   │   └── fsntfs_test_security_descriptor_index_value.vcproj
│   ├── fsntfs_test_security_descriptor_values/
│   │   └── fsntfs_test_security_descriptor_values.vcproj
│   ├── fsntfs_test_standard_information_values/
│   │   └── fsntfs_test_standard_information_values.vcproj
│   ├── fsntfs_test_support/
│   │   └── fsntfs_test_support.vcproj
│   ├── fsntfs_test_tools_bodyfile/
│   │   └── fsntfs_test_tools_bodyfile.vcproj
│   ├── fsntfs_test_tools_digest_hash/
│   │   └── fsntfs_test_tools_digest_hash.vcproj
│   ├── fsntfs_test_tools_info_handle/
│   │   └── fsntfs_test_tools_info_handle.vcproj
│   ├── fsntfs_test_tools_mount_path_string/
│   │   └── fsntfs_test_tools_mount_path_string.vcproj
│   ├── fsntfs_test_tools_output/
│   │   └── fsntfs_test_tools_output.vcproj
│   ├── fsntfs_test_tools_path_string/
│   │   └── fsntfs_test_tools_path_string.vcproj
│   ├── fsntfs_test_tools_signal/
│   │   └── fsntfs_test_tools_signal.vcproj
│   ├── fsntfs_test_txf_data_values/
│   │   └── fsntfs_test_txf_data_values.vcproj
│   ├── fsntfs_test_usn_change_journal/
│   │   └── fsntfs_test_usn_change_journal.vcproj
│   ├── fsntfs_test_volume/
│   │   └── fsntfs_test_volume.vcproj
│   ├── fsntfs_test_volume_header/
│   │   └── fsntfs_test_volume_header.vcproj
│   ├── fsntfs_test_volume_information_attribute/
│   │   └── fsntfs_test_volume_information_attribute.vcproj
│   ├── fsntfs_test_volume_information_values/
│   │   └── fsntfs_test_volume_information_values.vcproj
│   ├── fsntfs_test_volume_name_attribute/
│   │   └── fsntfs_test_volume_name_attribute.vcproj
│   ├── fsntfs_test_volume_name_values/
│   │   └── fsntfs_test_volume_name_values.vcproj
│   ├── fsntfsinfo/
│   │   └── fsntfsinfo.vcproj
│   ├── fsntfsmount/
│   │   └── fsntfsmount.vcproj
│   ├── libbfio/
│   │   └── libbfio.vcproj
│   ├── libcdata/
│   │   └── libcdata.vcproj
│   ├── libcerror/
│   │   └── libcerror.vcproj
│   ├── libcfile/
│   │   └── libcfile.vcproj
│   ├── libclocale/
│   │   └── libclocale.vcproj
│   ├── libcnotify/
│   │   └── libcnotify.vcproj
│   ├── libcpath/
│   │   └── libcpath.vcproj
│   ├── libcsplit/
│   │   └── libcsplit.vcproj
│   ├── libcthreads/
│   │   └── libcthreads.vcproj
│   ├── libfcache/
│   │   └── libfcache.vcproj
│   ├── libfdata/
│   │   └── libfdata.vcproj
│   ├── libfdatetime/
│   │   └── libfdatetime.vcproj
│   ├── libfguid/
│   │   └── libfguid.vcproj
│   ├── libfsntfs/
│   │   └── libfsntfs.vcproj
│   ├── libfsntfs.sln
│   ├── libfusn/
│   │   └── libfusn.vcproj
│   ├── libfwnt/
│   │   └── libfwnt.vcproj
│   ├── libhmac/
│   │   └── libhmac.vcproj
│   ├── libuna/
│   │   └── libuna.vcproj
│   └── pyfsntfs/
│       └── pyfsntfs.vcproj
├── ossfuzz/
│   ├── Makefile.am
│   ├── file_entry_fuzzer.cc
│   ├── mft_metadata_file_fuzzer.cc
│   ├── ossfuzz_libbfio.h
│   ├── ossfuzz_libfsntfs.h
│   └── volume_fuzzer.cc
├── po/
│   ├── ChangeLog
│   ├── Makevars.in
│   └── POTFILES.in
├── pyfsntfs/
│   ├── Makefile.am
│   ├── pyfsntfs.c
│   ├── pyfsntfs.h
│   ├── pyfsntfs_attribute.c
│   ├── pyfsntfs_attribute.h
│   ├── pyfsntfs_attribute_types.c
│   ├── pyfsntfs_attribute_types.h
│   ├── pyfsntfs_attributes.c
│   ├── pyfsntfs_attributes.h
│   ├── pyfsntfs_data_stream.c
│   ├── pyfsntfs_data_stream.h
│   ├── pyfsntfs_data_streams.c
│   ├── pyfsntfs_data_streams.h
│   ├── pyfsntfs_datetime.c
│   ├── pyfsntfs_datetime.h
│   ├── pyfsntfs_error.c
│   ├── pyfsntfs_error.h
│   ├── pyfsntfs_file_attribute_flags.c
│   ├── pyfsntfs_file_attribute_flags.h
│   ├── pyfsntfs_file_entries.c
│   ├── pyfsntfs_file_entries.h
│   ├── pyfsntfs_file_entry.c
│   ├── pyfsntfs_file_entry.h
│   ├── pyfsntfs_file_name_attribute.c
│   ├── pyfsntfs_file_name_attribute.h
│   ├── pyfsntfs_file_object_io_handle.c
│   ├── pyfsntfs_file_object_io_handle.h
│   ├── pyfsntfs_guid.c
│   ├── pyfsntfs_guid.h
│   ├── pyfsntfs_integer.c
│   ├── pyfsntfs_integer.h
│   ├── pyfsntfs_libbfio.h
│   ├── pyfsntfs_libcerror.h
│   ├── pyfsntfs_libclocale.h
│   ├── pyfsntfs_libfguid.h
│   ├── pyfsntfs_libfsntfs.h
│   ├── pyfsntfs_libuna.h
│   ├── pyfsntfs_mft_metadata_file.c
│   ├── pyfsntfs_mft_metadata_file.h
│   ├── pyfsntfs_mft_metadata_file_entries.c
│   ├── pyfsntfs_mft_metadata_file_entries.h
│   ├── pyfsntfs_object_identifier_attribute.c
│   ├── pyfsntfs_object_identifier_attribute.h
│   ├── pyfsntfs_python.h
│   ├── pyfsntfs_reparse_point_attribute.c
│   ├── pyfsntfs_reparse_point_attribute.h
│   ├── pyfsntfs_security_descriptor_attribute.c
│   ├── pyfsntfs_security_descriptor_attribute.h
│   ├── pyfsntfs_standard_information_attribute.c
│   ├── pyfsntfs_standard_information_attribute.h
│   ├── pyfsntfs_string.c
│   ├── pyfsntfs_string.h
│   ├── pyfsntfs_unused.h
│   ├── pyfsntfs_usn_change_journal.c
│   ├── pyfsntfs_usn_change_journal.h
│   ├── pyfsntfs_volume.c
│   ├── pyfsntfs_volume.h
│   ├── pyfsntfs_volume_file_entries.c
│   ├── pyfsntfs_volume_file_entries.h
│   ├── pyfsntfs_volume_information_attribute.c
│   ├── pyfsntfs_volume_information_attribute.h
│   ├── pyfsntfs_volume_name_attribute.c
│   └── pyfsntfs_volume_name_attribute.h
├── pyproject.toml
├── runtests.ps1
├── runtests.sh
├── setup.cfg.in
├── setup.py
├── syncdokan.ps1
├── synclibs.ps1
├── synclibs.sh
├── synctestdata.ps1
├── synctestdata.sh
├── tests/
│   ├── Makefile.am
│   ├── build.sh
│   ├── data/
│   │   ├── attribute_list.1
│   │   ├── attribute_list_entry.1
│   │   ├── index_node_data.1
│   │   ├── mft_attribute.1
│   │   ├── mft_attribute.2
│   │   ├── mft_entry.1
│   │   ├── mft_entry.2
│   │   ├── mft_entry_header.1
│   │   ├── mft_entry_header.2
│   │   ├── mft_metadata_file.1
│   │   ├── security_descriptor_index_value_data.1
│   │   └── volume_header.1
│   ├── fsntfs_test_attribute.c
│   ├── fsntfs_test_attribute_list_entry.c
│   ├── fsntfs_test_bitmap_values.c
│   ├── fsntfs_test_buffer_data_handle.c
│   ├── fsntfs_test_cluster_block.c
│   ├── fsntfs_test_cluster_block_data.c
│   ├── fsntfs_test_cluster_block_stream.c
│   ├── fsntfs_test_cluster_block_vector.c
│   ├── fsntfs_test_compressed_block.c
│   ├── fsntfs_test_compressed_block_data_handle.c
│   ├── fsntfs_test_compressed_block_vector.c
│   ├── fsntfs_test_compressed_data_handle.c
│   ├── fsntfs_test_compression.c
│   ├── fsntfs_test_compression_unit_data_handle.c
│   ├── fsntfs_test_compression_unit_descriptor.c
│   ├── fsntfs_test_data_run.c
│   ├── fsntfs_test_data_stream.c
│   ├── fsntfs_test_directory_entries_tree.c
│   ├── fsntfs_test_directory_entry.c
│   ├── fsntfs_test_error.c
│   ├── fsntfs_test_extent.c
│   ├── fsntfs_test_file_entry.c
│   ├── fsntfs_test_file_name_attribute.c
│   ├── fsntfs_test_file_name_values.c
│   ├── fsntfs_test_file_system.c
│   ├── fsntfs_test_fixup_values.c
│   ├── fsntfs_test_functions.c
│   ├── fsntfs_test_functions.h
│   ├── fsntfs_test_getopt.c
│   ├── fsntfs_test_getopt.h
│   ├── fsntfs_test_index.c
│   ├── fsntfs_test_index_entry.c
│   ├── fsntfs_test_index_entry_header.c
│   ├── fsntfs_test_index_entry_vector.c
│   ├── fsntfs_test_index_node.c
│   ├── fsntfs_test_index_node_header.c
│   ├── fsntfs_test_index_root_header.c
│   ├── fsntfs_test_index_value.c
│   ├── fsntfs_test_io_handle.c
│   ├── fsntfs_test_libbfio.h
│   ├── fsntfs_test_libcdata.h
│   ├── fsntfs_test_libcerror.h
│   ├── fsntfs_test_libclocale.h
│   ├── fsntfs_test_libcnotify.h
│   ├── fsntfs_test_libcpath.h
│   ├── fsntfs_test_libcthreads.h
│   ├── fsntfs_test_libfcache.h
│   ├── fsntfs_test_libfdata.h
│   ├── fsntfs_test_libfsntfs.h
│   ├── fsntfs_test_libuna.h
│   ├── fsntfs_test_logged_utility_stream_values.c
│   ├── fsntfs_test_macros.h
│   ├── fsntfs_test_memory.c
│   ├── fsntfs_test_memory.h
│   ├── fsntfs_test_mft.c
│   ├── fsntfs_test_mft_attribute.c
│   ├── fsntfs_test_mft_attribute_list.c
│   ├── fsntfs_test_mft_attribute_list_entry.c
│   ├── fsntfs_test_mft_entry.c
│   ├── fsntfs_test_mft_entry_header.c
│   ├── fsntfs_test_mft_metadata_file.c
│   ├── fsntfs_test_name.c
│   ├── fsntfs_test_notify.c
│   ├── fsntfs_test_object_identifier_values.c
│   ├── fsntfs_test_path_hint.c
│   ├── fsntfs_test_profiler.c
│   ├── fsntfs_test_reparse_point_attribute.c
│   ├── fsntfs_test_reparse_point_values.c
│   ├── fsntfs_test_rwlock.c
│   ├── fsntfs_test_rwlock.h
│   ├── fsntfs_test_sds_index_value.c
│   ├── fsntfs_test_security_descriptor_index.c
│   ├── fsntfs_test_security_descriptor_index_value.c
│   ├── fsntfs_test_security_descriptor_values.c
│   ├── fsntfs_test_standard_information_values.c
│   ├── fsntfs_test_support.c
│   ├── fsntfs_test_tools_bodyfile.c
│   ├── fsntfs_test_tools_digest_hash.c
│   ├── fsntfs_test_tools_info_handle.c
│   ├── fsntfs_test_tools_mount_path_string.c
│   ├── fsntfs_test_tools_output.c
│   ├── fsntfs_test_tools_path_string.c
│   ├── fsntfs_test_tools_signal.c
│   ├── fsntfs_test_txf_data_values.c
│   ├── fsntfs_test_unused.h
│   ├── fsntfs_test_usn_change_journal.c
│   ├── fsntfs_test_volume.c
│   ├── fsntfs_test_volume_header.c
│   ├── fsntfs_test_volume_information_attribute.c
│   ├── fsntfs_test_volume_information_values.c
│   ├── fsntfs_test_volume_name_attribute.c
│   ├── fsntfs_test_volume_name_values.c
│   ├── lsan.suppressions
│   ├── pkgbuild.sh
│   ├── pyfsntfs_test_attribute.py
│   ├── pyfsntfs_test_file_entry.py
│   ├── pyfsntfs_test_support.py
│   ├── pyfsntfs_test_volume.py
│   ├── runtests.py
│   ├── runtests.sh
│   ├── syncsharedlibs.sh
│   ├── test_fsntfsinfo.ps1
│   ├── test_fsntfsinfo.sh
│   ├── test_fsntfsinfo_bodyfile.ps1
│   ├── test_fsntfsinfo_bodyfile.sh
│   ├── test_library.ps1
│   ├── test_library.sh
│   ├── test_manpage.sh
│   ├── test_python_module.sh
│   ├── test_runner.sh
│   ├── test_tools.ps1
│   └── test_tools.sh
└── tox.ini

================================================
FILE CONTENTS
================================================

================================================
FILE: .codecov.yml
================================================
coverage:
  precision: 2
  round: down
  range: 70...100
  status:
    project: true
    patch: true
    changes: false
  ignore:
    - "libbfio/*"
    - "libcdata/*"
    - "libcerror/*"
    - "libcfile/*"
    - "libclocale/*"
    - "libcnotify/*"
    - "libcpath/*"
    - "libcsplit/*"
    - "libcthreads/*"
    - "libfcache/*"
    - "libfdata/*"
    - "libfdatetime/*"
    - "libfguid/*"
    - "libfusn/*"
    - "libfwnt/*"
    - "libhmac/*"
    - "libuna/*"
    - "tests/*"


================================================
FILE: .github/workflows/build.yml
================================================
# Build from source.
name: build
on: [push, pull_request]
permissions: read-all
jobs:
  build_ubuntu:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - architecture: 'x86'
          compiler: 'clang'
          configure_options: ''
        - architecture: 'x64'
          compiler: 'clang'
          configure_options: ''
        - architecture: 'x86'
          compiler: 'gcc'
          configure_options: ''
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: ''
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: '--with-pthread=no'
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: '--enable-wide-character-type'
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: '--enable-static-executables=yes --enable-multi-threading-support=no'
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        sudo apt-get -y install autoconf automake autopoint build-essential git libfuse3-dev libssl-dev libtool pkg-config
    - name: Download test data
      run: |
        if test -x "synctestdata.sh"; then ./synctestdata.sh; fi
    - name: Building from source
      env:
        CC: ${{ matrix.compiler }}
      run: |
        tests/build.sh ${{ matrix.configure_options }}
    - name: Run tests
      run: |
        tests/runtests.sh
  build_dist:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: ''
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        sudo apt-get -y install autoconf automake autopoint build-essential git libfuse3-dev libssl-dev libtool pkg-config
    - name: Download test data
      run: |
        if test -x "synctestdata.sh"; then ./synctestdata.sh; fi
    - name: Building from source
      env:
        CC: ${{ matrix.compiler }}
      run: |
        tests/build.sh ${{ matrix.configure_options }}
    - name: Run tests
      run: |
        make distcheck
  build_fuse_ubuntu:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: ''
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        sudo apt-get -y install autoconf automake autopoint build-essential git libfuse3-dev libssl-dev libtool pkg-config libfuse-dev
    - name: Download test data
      run: |
        if test -x "synctestdata.sh"; then ./synctestdata.sh; fi
    - name: Building from source
      env:
        CC: ${{ matrix.compiler }}
      run: |
        tests/build.sh ${{ matrix.configure_options }}
    - name: Run tests
      run: |
        tests/runtests.sh
  build_fuse3_ubuntu:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: ''
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        sudo apt-get -y install autoconf automake autopoint build-essential git libfuse3-dev libssl-dev libtool pkg-config libfuse3-dev
    - name: Download test data
      run: |
        if test -x "synctestdata.sh"; then ./synctestdata.sh; fi
    - name: Building from source
      env:
        CC: ${{ matrix.compiler }}
      run: |
        tests/build.sh ${{ matrix.configure_options }}
    - name: Run tests
      run: |
        tests/runtests.sh
  build_python_ubuntu:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: '--enable-python'
          python_version: ''
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        sudo add-apt-repository universe &&
        sudo apt-get update &&
        sudo apt-get -y install autoconf automake autopoint build-essential git libfuse3-dev libssl-dev libtool pkg-config python3-dev python-dev-is-python3
    - name: Download test data
      run: |
        if test -x "synctestdata.sh"; then ./synctestdata.sh; fi
    - name: Building from source
      env:
        CC: ${{ matrix.compiler }}
      run: |
        tests/build.sh ${{ matrix.configure_options }}
    - name: Run tests
      env:
        PYTHON_VERSION: ${{ matrix.python_version }}
      run: |
        tests/runtests.sh
  build_setup_py_ubuntu:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: ''
          python-version: '3.10'
    steps:
    - uses: actions/checkout@v5
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install build dependencies
      run: |
        sudo add-apt-repository universe &&
        sudo apt-get update &&
        sudo apt-get -y install autoconf automake autopoint build-essential git libfuse3-dev libssl-dev libtool pkg-config python3-dev python-dev-is-python3
    - name: Building from source
      env:
        CC: ${{ matrix.compiler }}
      run: |
        tests/build.sh ${{ matrix.configure_options }}
    - name: Build Python module
      run: |
        python setup.py build
  coverage_ubuntu:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - architecture: 'x86'
          compiler: 'gcc'
          configure_options: '--enable-wide-character-type'
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: '--enable-wide-character-type'
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        sudo apt-get -y install autoconf automake autopoint build-essential git libfuse3-dev libssl-dev libtool pkg-config
    - name: Download test data
      run: |
        if test -x "synctestdata.sh"; then ./synctestdata.sh; fi
    - name: Building from source
      env:
        CC: ${{ matrix.compiler }}
      run: |
        tests/build.sh ${{ matrix.configure_options }} --enable-shared=no CFLAGS="--coverage -O0" CPPFLAGS="-DOPTIMIZATION_DISABLED" LDFLAGS="--coverage"
    - name: Run tests
      run: |
        make check CHECK_WITH_STDERR=1 SKIP_TOOLS_END_TO_END_TESTS=1
    - name: Generate coverage data
      run: |
        for DIRECTORY in `find . -maxdepth 1 -type d`; do \
          (cd ${DIRECTORY} && find . -maxdepth 1 -name \*.gcno -type f -exec gcov -pb {} \;) \
        done
    - name: Upload coverage report to Codecov
      uses: codecov/codecov-action@v5
      with:
        name: linux-${{ matrix.architecture }}-gcc-no-optimization
        token: ${{ secrets.CODECOV_TOKEN }}


================================================
FILE: .github/workflows/build_freebsd.yml
================================================
# Build from source on FreeBSD.
name: build_freebsd
on: [push]
permissions: read-all
jobs:
  build_freebsd:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - name: Building from source
      id: build_freebsd
      uses: vmactions/freebsd-vm@v1
      with:
        usesh: true
        mem: 4096
        # Note that the test scripts require bash
        prepare: |
          pkg install -y autoconf automake bash fusefs-libs gettext git libtool openssl pkgconf
        run: |
          tests/build.sh
          tests/runtests.sh


================================================
FILE: .github/workflows/build_macos.yml
================================================
# Build from source.
name: build_macos
on: [push, pull_request]
permissions: read-all
jobs:
  build_macos:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
        - os: macos-14
          configure_options: ''
        - os: macos-15
          configure_options: ''
        - os: macos-15-intel
          configure_options: ''
        - os: macos-26
          configure_options: ''
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        brew update -q
        brew install -q autoconf automake gettext gnu-sed libtool pkg-config || true
        brew link --force gettext
        ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
    - name: Download test data
      run: |
        if test -x "synctestdata.sh"; then ./synctestdata.sh; fi
    - name: Building from source
      env:
        CC: ${{ matrix.compiler }}
      run: |
        tests/build.sh ${{ matrix.configure_options }}
    - name: Run tests
      run: |
        tests/runtests.sh


================================================
FILE: .github/workflows/build_ossfuzz.yml
================================================
# Build OSSFuzz fuzz targets from source.
name: build_ossfuzz
on:
  push:
    branches: [main]
permissions: read-all
jobs:
  build_ossfuzz:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: ''
    steps:
    - name: Install build dependencies
      run: |
        sudo apt-get -y install git
    - uses: actions/checkout@v5
      with:
        repository: google/oss-fuzz
        path: oss-fuzz
    - name: Build OSSFuzz fuzz targets
      working-directory: oss-fuzz
      run: |
        mkdir -p projects/libfsntfs
        cp projects/libyal/build.sh projects/libfsntfs/
        cp projects/libyal/project.yaml projects/libfsntfs/
        head -n 20 projects/libyal/Dockerfile > projects/libfsntfs/Dockerfile
        echo "RUN git clone --depth 1 https://github.com/libyal/libfsntfs.git libfsntfs" >> projects/libfsntfs/Dockerfile
        tail -n 3 projects/libyal/Dockerfile >> projects/libfsntfs/Dockerfile
        python3 infra/helper.py build_image --pull libfsntfs
        python3 infra/helper.py build_fuzzers --sanitizer address libfsntfs
        python3 infra/helper.py check_build libfsntfs


================================================
FILE: .github/workflows/build_shared.yml
================================================
# Build from source with libyal dependencies as shared libraries.
name: build_shared
on:
  push:
    branches: [main]
permissions: read-all
jobs:
  build_shared_ubuntu:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: ''
        - architecture: 'x64'
          compiler: 'gcc'
          configure_options: '--enable-wide-character-type'
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        sudo apt-get -y install autoconf automake autopoint build-essential git libfuse3-dev libssl-dev libtool pkg-config
    - name: Download test data
      run: |
        if test -x "synctestdata.sh"; then ./synctestdata.sh; fi
    - name: Prepare shared libraries
      run: |
        tests/syncsharedlibs.sh --use-head
    - name: Building from source
      env:
        CC: ${{ matrix.compiler }}
      run: |
        tests/build.sh ${{ matrix.configure_options }}
    - name: Run tests
      run: |
        tests/runtests.sh


================================================
FILE: .github/workflows/build_wheel.yml
================================================
# Build Python wheels from source using cibuildwheel.
name: build_wheels
on: [push, pull_request]
permissions: read-all
jobs:
  build_wheels_linux:
    name: Build wheels on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
        - os: ubuntu-24.04-arm
        - os: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        sudo apt-get -y install autoconf automake autopoint build-essential git libtool pkg-config
    - name: Prepare build
      run: |
        ./synclibs.sh
        ./autogen.sh
        ./configure
        make sources >/dev/null
    - name: Build Python wheels
      uses: pypa/cibuildwheel@v3.3.0
      env:
        CIBW_TEST_COMMAND: python tests/runtests.py
        CIBW_TEST_SOURCES: tests
      with:
        package-dir: .
        output-dir: dist
    - uses: actions/upload-artifact@v4
      with:
        name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
        path: dist/*.whl
  build_wheels_macos:
    name: Build wheels on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
        - os: macos-14
        - os: macos-15-intel
    steps:
    - uses: actions/checkout@v5
    - name: Install build dependencies
      run: |
        brew update -q
        brew install -q autoconf automake gettext gnu-sed libtool pkg-config || true
        brew link --force gettext
        ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
    - name: Prepare build
      run: |
        ./synclibs.sh
        ./autogen.sh
        ./configure
        make sources >/dev/null
    - name: Build Python wheels
      uses: pypa/cibuildwheel@v3.3.0
      env:
        CIBW_TEST_COMMAND: python tests/runtests.py
        CIBW_TEST_SOURCES: tests
      with:
        package-dir: .
        output-dir: dist
    - uses: actions/upload-artifact@v4
      with:
        name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
        path: dist/*.whl
  build_wheels_windows:
    name: Build wheels on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
        - os: windows-11-arm
        - os: windows-latest
    steps:
    - uses: actions/checkout@v5
    - name: Prepare build
      run: |
        .\synclibs.ps1
        .\autogen.ps1
    - name: Build Python wheels
      uses: pypa/cibuildwheel@v3.3.0
      env:
        CIBW_TEST_COMMAND: python tests/runtests.py
        CIBW_TEST_SOURCES: tests
      with:
        package-dir: .
        output-dir: dist
    - uses: actions/upload-artifact@v4
      with:
        name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
        path: dist/*.whl


================================================
FILE: .gitignore
================================================
# Files to ignore by git
#
# Version: 20231119

# Generic auto-generated build files
*~
*.a
*.gcda
*.gcno
*.gcov
*.la
*.lai
*.lib
*.lineno
*.lo
*.log
*.loT
*.o
*.obj
*.Plo
*.Po
*.so
*.so.[0-9][0-9]*
*.so.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*
*.swp
*.Tpo
*.trs
*.whl
/*.egg-info/
__pycache__
.deps
.dirstamp
.libs
.tox
INSTALL
Makefile
Makefile.bcc
Makefile.in
stamp-h[1-9]

# Specific auto-generated build files
/ABOUT-NLS
/aclocal.m4
/autom4te.cache/
/build
/compile
/confdefs.h
/config.cache
/config.guess
/config.log
/config.rpath
/config.status
/config.sub
/configure
/conftest.c
/depcomp
/dist
/install-sh
/libtool
/ltmain.sh
/m4/codeset.m4
/m4/extern-inline.m4
/m4/fcntl-o.m4
/m4/gettext.m4
/m4/glibc21.m4
/m4/glibc2.m4
/m4/host-cpu-c-abi.m4
/m4/iconv.m4
/m4/intdiv0.m4
/m4/intldir.m4
/m4/intl.m4
/m4/intlmacosx.m4
/m4/intmax.m4
/m4/inttypes_h.m4
/m4/inttypes-pri.m4
/m4/lcmessage.m4
/m4/lib-ld.m4
/m4/lib-link.m4
/m4/lib-prefix.m4
/m4/libtool.m4
/m4/lock.m4
/m4/longlong.m4
/m4/lt~obsolete.m4
/m4/ltoptions.m4
/m4/ltsugar.m4
/m4/ltversion.m4
/m4/nls.m4
/m4/pkg.m4
/m4/po.m4
/m4/printf-posix.m4
/m4/progtest.m4
/m4/size_max.m4
/m4/stdint_h.m4
/m4/threadlib.m4
/m4/uintmax_t.m4
/m4/visibility.m4
/m4/wchar_t.m4
/m4/wint_t.m4
/m4/xsize.m4
/MANIFEST
/missing
/po/boldquot.sed
/po/en@boldquot.header
/po/en@quot.header
/po/insert-header.sin
/po/Makefile.in.in
/po/Makevars
/po/Makevars.template
/po/POTFILES
/po/quot.sed
/po/remove-potcdate.sed
/po/remove-potcdate.sin
/po/Rules-quot
/test-driver
/ylwrap

# Project specific files
/common/config.h
/common/config.h.in
/common/types.h
/dpkg/changelog
/include/libfsntfs.h
/include/libfsntfs/definitions.h
/include/libfsntfs/features.h
/include/libfsntfs/types.h
/libfsntfs.pc
/libfsntfs.spec
/libfsntfs/libfsntfs.rc
/libfsntfs/libfsntfs_definitions.h
/setup.cfg
/fsntfstools/*.exe
/fsntfstools/fsntfsinfo
/fsntfstools/fsntfsmount
/tests/*.exe
/tests/fsntfs_test_attribute
/tests/fsntfs_test_attribute_list_entry
/tests/fsntfs_test_bitmap_values
/tests/fsntfs_test_buffer_data_handle
/tests/fsntfs_test_cluster_block
/tests/fsntfs_test_cluster_block_data
/tests/fsntfs_test_cluster_block_stream
/tests/fsntfs_test_cluster_block_vector
/tests/fsntfs_test_compressed_block
/tests/fsntfs_test_compressed_block_data_handle
/tests/fsntfs_test_compressed_block_vector
/tests/fsntfs_test_compressed_data_handle
/tests/fsntfs_test_compression
/tests/fsntfs_test_compression_unit_data_handle
/tests/fsntfs_test_compression_unit_descriptor
/tests/fsntfs_test_data_run
/tests/fsntfs_test_data_stream
/tests/fsntfs_test_directory_entries_tree
/tests/fsntfs_test_directory_entry
/tests/fsntfs_test_error
/tests/fsntfs_test_extent
/tests/fsntfs_test_file_entry
/tests/fsntfs_test_file_name_attribute
/tests/fsntfs_test_file_name_values
/tests/fsntfs_test_file_system
/tests/fsntfs_test_fixup_values
/tests/fsntfs_test_index
/tests/fsntfs_test_index_entry
/tests/fsntfs_test_index_entry_header
/tests/fsntfs_test_index_entry_vector
/tests/fsntfs_test_index_node
/tests/fsntfs_test_index_node_header
/tests/fsntfs_test_index_root_header
/tests/fsntfs_test_index_value
/tests/fsntfs_test_io_handle
/tests/fsntfs_test_logged_utility_stream_values
/tests/fsntfs_test_mft
/tests/fsntfs_test_mft_attribute
/tests/fsntfs_test_mft_attribute_list
/tests/fsntfs_test_mft_attribute_list_entry
/tests/fsntfs_test_mft_entry
/tests/fsntfs_test_mft_entry_header
/tests/fsntfs_test_mft_metadata_file
/tests/fsntfs_test_name
/tests/fsntfs_test_notify
/tests/fsntfs_test_object_identifier_values
/tests/fsntfs_test_path_hint
/tests/fsntfs_test_profiler
/tests/fsntfs_test_reparse_point_attribute
/tests/fsntfs_test_reparse_point_values
/tests/fsntfs_test_sds_index_value
/tests/fsntfs_test_security_descriptor_index
/tests/fsntfs_test_security_descriptor_index_value
/tests/fsntfs_test_security_descriptor_values
/tests/fsntfs_test_standard_information_values
/tests/fsntfs_test_support
/tests/fsntfs_test_tools_bodyfile
/tests/fsntfs_test_tools_digest_hash
/tests/fsntfs_test_tools_info_handle
/tests/fsntfs_test_tools_mount_path_string
/tests/fsntfs_test_tools_output
/tests/fsntfs_test_tools_path_string
/tests/fsntfs_test_tools_signal
/tests/fsntfs_test_txf_data_values
/tests/fsntfs_test_usn_change_journal
/tests/fsntfs_test_volume
/tests/fsntfs_test_volume_header
/tests/fsntfs_test_volume_information_attribute
/tests/fsntfs_test_volume_information_values
/tests/fsntfs_test_volume_name_attribute
/tests/fsntfs_test_volume_name_values
/tests/input
/tests/notify_stream.log
/tests/tmp*

# Local library dependencies specific files
/libbfio
/libcdata
/libcerror
/libcfile
/libclocale
/libcnotify
/libcpath
/libcsplit
/libcthreads
/libfcache
/libfdata
/libfdatetime
/libfguid
/libfusn
/libfwnt
/libhmac
/libuna


================================================
FILE: AUTHORS
================================================
Acknowledgements: libfsntfs

Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>



================================================
FILE: COPYING
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.


================================================
FILE: COPYING.LESSER
================================================
                   GNU LESSER GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.


  This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

  0. Additional Definitions.

  As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

  "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

  An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

  A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

  The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

  The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

  1. Exception to Section 3 of the GNU GPL.

  You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

  2. Conveying Modified Versions.

  If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

   a) under this License, provided that you make a good faith effort to
   ensure that, in the event an Application does not supply the
   function or data, the facility still operates, and performs
   whatever part of its purpose remains meaningful, or

   b) under the GNU GPL, with none of the additional permissions of
   this License applicable to that copy.

  3. Object Code Incorporating Material from Library Header Files.

  The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

   a) Give prominent notice with each copy of the object code that the
   Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the object code with a copy of the GNU GPL and this license
   document.

  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version.

   e) Provide Installation Information, but only if you would otherwise
   be required to provide such information under section 6 of the
   GNU GPL, and only to the extent that such information is
   necessary to install and execute a modified version of the
   Combined Work produced by recombining or relinking the
   Application with a modified version of the Linked Version. (If
   you use option 4d0, the Installation Information must accompany
   the Minimal Corresponding Source and Corresponding Application
   Code. If you use option 4d1, you must provide the Installation
   Information in the manner specified by section 6 of the GNU GPL
   for conveying Corresponding Source.)

  5. Combined Libraries.

  You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

   a) Accompany the combined library with a copy of the same work based
   on the Library, uncombined with any other library facilities,
   conveyed under the terms of this License.

   b) Give prominent notice with the combined library that part of it
   is a work based on the Library, and explaining where to find the
   accompanying uncombined form of the same work.

  6. Revised Versions of the GNU Lesser General Public License.

  The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

  Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

  If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.


================================================
FILE: ChangeLog
================================================
TODO
* pyfsntfs convert lookup path to support additional character range

* libfsntfs and fsntfsmount how to support \\ in file name? since \\ is separator used by the library

* extent: flag WofCompressedData extent as wof_compressed?
* extent: rename compressed flag to lznt1_compressed?

* fsntfsinfo: print volume size
* fsntfsinfo: print extents/data runs of $DATA stream?

* get_file_entry_by_path determine unicode form

* fsntfsmount: cache last 3 recently used directories?

* test if format version 1.2 is supported and updated README

* refactor $I30 index to file entry
** refactor libfsntfs_mft_entry_has_directory_entries_index

* Ntfs compressed stream add uncompressed size check
* add raw (no valid size) data stream support
* check data size of WOF reparse point
* add has WOF compressed data stream function (for dfVFS)

* complete read/write lock support
** refactor volume and file entry to use file system
** file entry
*** libfsntfs_file_entry_get_name_attribute_index
*** libfsntfs_file_entry_get_security_descriptor_size
*** libfsntfs_file_entry_get_security_descriptor
*** continue with libfsntfs_file_entry_get_sub_file_entry_by_index
** MFT metadata file
** specific attribute values functions
** USN journal

* MFT entry
** preserve attribute list data MFT entries?
** libfsntfs_attribute add function to indicate partial attribute (has attribute_list_entry but no mft_attribute)

* bitmap values
** handle sparse data runs more efficiently

* fsntfsinfo complete bodyfile support
** fix libfsntfs_file_entry_get_security_descriptor_size: unable to retrieve security descriptor from index for identifier: 0.
** add support for tsk metadata address calculation? inside MFT attribute?

* fsntfsinfo -F add support for ADS notation

* API changes
** rename libfsntfs_volume_get_number_of_file_entries to libfsntfs_volume_get_number_of_mft_entries

* change libfsntfs_mft_attribute_get_utf[8,16]_name[_size] to return 0 if not set

* add debug compare of long and short names

* refactor index to better handle get entry by identifier
** make index value cache a passthrough for index node cache
** use tree for get entry by filename
** use tree for get entry by security identifier
** remove the need for a local cache in libfsntfs_index_read_sub_nodes, use cache value lock instead

* rename libfsntfs_internal_attribute_get_data to libfsntfs_internal_attribute_get_resident_data
* libfsntfs_attribute add read / seek functions
* change calls to libfsntfs_mft_entry_get_index_by_utf8_name to utf16 for optimization
* change calls to libfsntfs_mft_entry_get_data_attribute_by_utf8_name to utf16 for optimization
* enforce LIBFSNTFS_FILE_ENTRY_FLAGS_MFT_ONLY when trying to read data runs

* libfsntfs_volume_get_root_directory return 0 if MFT entry 5 does not exists

* Check if mft_entry should be cloned before passing to
  libfsntfs_file_entry_initialize in case it is cached out
  otherwise remove it from file_entry

* tests: pass mft_metadata_file different input files
* look into handling directories with high number of entries
* libfsntfs/pyfsntfs attribute
  - expose raw attribute data?
* USN change journal
  - add support for values in $Max
* resident data
  - handle valid data size
* enforce LIBFSNTFS_FILE_ENTRY_FLAGS_MFT_ONLY when trying to read data runs
* fix or remove TODO_CASE_INSENSITIVE

* compressed data
  - handle decompression errors e.g.
    compression tuple offset value out of bounds.
  - have means to map sparse ranges outside compressed blocks
  - handle valid data size
* create fsntfsexport tool to export file entry data
* handle pre 3.1 attribute names?
* check file entry life times
* set file entry name, if get by index and number of filenames is 1

* cached indexes?
* data runs block
  - add a check to see if data run sizes add up
* volume
  - complete libfsntfs_volume_has_bitlocker_drvie_encryption
  - complete libfsntfs_volume_has_volume_shadow_snapshots
* file entry
  - add API get file name by attribute index functions?
  - add API get parent file_reference name by attribute index functions?
  - add API function for owner
  - add API function for security identifier
  - only retrieve file name from the directory entry?
    or make clear in function documentation that first
    non-short filename is the fallback?
  - add support to retrieve name of the root entry if directory entry is missing
* pyfsntfs
  - add attribute type enum
* pyfsntfs file entry
  - expose more MFT entry values through API and pyfsntfs
  - add is empty function
  - add has_reparse_point function
  - add has_symbolic_link function
  - add is_corrupt function?
  - how to handle file-like object functions for non-data file entry
* pyfsntfs file entry/data stream
  - add extents iterator?
* libfsntfs/pyfsntfs file entry
  - expose default data stream
  - add support for short file name
  - fallback to short file name if no long
* libfsntfs_mft_entry_read_element_data set MFT only flag using element flags
* libfsntfs_attribute_read_from_mft handle attribute size out of bounds
* mft metadata file parsing mark file entry as in complete if data is stored
  outside the $MFT
* change MFT entry flags value checks to named definitions
* attribute data parsing
  - add SSIZE_MAX check for attribute->data_size before (size_t) cast

* cached approach of reading attributes ?

* fix issue on win2k image
  - stack overflow infinite loop
  - determine MFT entry index based on offset
    do not rely on value in structure

* MFT entry create get data segment function for internal usage

* how to handle named index roots e.g. $ObjId:$O, $Quota:$O
* fix issue with bounded MFT entry cache
* support MFT entry 0 consisting of multiple $DATA attributes
  - add segment support to ntfs attribute data reference

* file_entry: clone directory entry ?
* what about ADS support ?
  - todo read from ads
* change libfsntfs_attribute_reference_append_attribute into insert and sort
  attribute ranges

* add function to retrieve MFT entry by index
* check if check_signature function uses the right offset
* refactor: libfsnt_array_append_entry in index ?

* move get mft entry to file entry initialize ?
  - clone mft entry in file entry initialize (for now the mft entry cache
  contains a slot for every entry)

* move volume header from io handle to separate object ?

* $MFT scan
  - mark ignored attribute list
  - mark ignored data stream
  - mark ignored index
  - handle corrupt MFT entries (e.g. missing FILE signature) (+/-)
  - allow to read data runs but do not allow to read data
* $UsnJrnl:$J parsing
  - move UsnJrnl parsing into library ?
  - add support for $UsnJrnl:$J file parsing

* API
  - expose logged utility stream attribute

Format:
* index
  - group equivalent index data values
* boot block
  - remove value restriction add sanity check
* add support for attributes:
  - logged utillity stream (LOGGED_UTILITY_STREAM) (partial)
* pre NTFS 3.0 attribute types
  - volume version
* filenames
  - ignoring short filenames for now?
* ntfs3g indicates volume is hibernated, could this be stored in the volume flags?

Tools:
* fsntfsinfo
  - print ADS
  - move UsnJrnl to separate tool?
  - fix remnant data in buffer and remove work around
  - sanitize control characters in filenames
  - add detection of BDE and VSS
  - add support for $LogFile
  - print $DATA attribute size

Error tolerance:
* Support partial images/file systems

Tests:
* file with resident data
* file with non-resident data
* file with sparse data
* file with compressed data
* file with valid data size < data size
* file with ADS
* directory with ADS

Performance:
* compact attribute union data/file reference (use type to distinguish between them)

Debug:
* print volume information flags description

Deployment
* write man pages

20141011
* see `git log' for more recent change log
* updated dependencies
* changes for project site move

20141004
* removed README.macosx

20140810
* worked on exposing the attributes

20140809
* worked on data streams support
* worked on exposing the attributes

20140808
* worked on data streams support

20140803
* bug fix in Python bindings

20140628
* Worked on format support

20140530
* Worked on Python bindings

20140529
* updated dependencies
* Worked on Python bindings

20140417
* small changes

20140318
* worked on non-resident attribute list support

20140207
* worked on libfdata refactor

20140206
* worked on libfdata refactor

20140205
* worked on libfdata refactor

20140204
* worked on libfdata refactor

20140203
* worked on libfdata refactor

20140119
* worked on libfdata refactor

20140118
* 2014 update
* updated dependencies
* worked on libfdata refactor

20131109
* updated dependencies

20130915
* code clean up

20130914
* updated dependencies
* added libcthreads build support

20130224
* updated dependencies
* 2013 update

20120929
* updated dependencies

20120821
* improve NTFS version 3.0 support

20120820
* applied update
* improved reading MFT attribute lists and data MFT entries

20120526
* worked on MFT read and seek data functions

20120520
* 2012 update
* updated dependencies
* added libfusn
* fsntfsinfo:
  - added info handle

20111125
* code clean up
* added support for empty volume name

20111124
* removed libvshadow
* updated configure.ac and m4 scripts
* added include/codepage.h
* updated common, array type
* updated libcstring, libsystem, libuna, libfdata, libfdatetime, libfguid,
  libfwnt
* added libfcache
* code clean up

20110510
* update libvshadow

20110509
* dist fixes

20110508
* updated configure.ac
* updated libcstring, libsystem, libuna, libbfio, libfdata, libfguid

20110309
* small changes

20110308
* small changes

20110306
* worked on support for MFT consisting of multiple data runs

20110305
* updated configure, common, array type, libcstring, liberror, libnotify,
  libsystem, libuna, libbfio, libfdata, libfdatetime, libfguid, libfwnt
* 2011 update

20101216
* updated Makefile

20101214
* updated configure/Makefile

20101209
* added missing MFT entry flags debug output
* code clean up
* added initial gettext support
* updated common, libfdatetime

20101203
* updated common, array type, liberror, libnotify, libsystem, libuna, libbfio,
  libfdata

20101129
* worked on txf data

20101128
* worked on txf data

20101127
* updated libfdatetime
* moved abort to IO handle
* worked on txf data

20101126
* worked on support for multiple index allocation attributes

20101125
* worked on support for multiple index allocation attributes
* updated libuna, libbfio, libfdata

20101124
* updated configure, libcstring, liberror, libbfio
* worked on support for an attribute list

20101113
* textual changes

20101112
* renamed library to libfsntfs

20101110
* worked on winsxs support

20101109
* worked on logged utility stream
* updated include/error.h
* updated libfdata, liberror, libbfio, libnotify, libsystem
* added support for directory index that only consists of index root attribute
* fixed bug in fsntinfo
* added support for directory index that has root and empty allocation index
  attributes

20100912
* worked on reading attribute list
* updated libbfio

20100911
* improved handling data runs

20100910
* worked on reading directory entries

20100909
* worked on reading directory entries

20100908
* worked on file entry functions
* worked on reading directory entries
* added debug print of file name attribute namespace description

20100907
* worked on reading directory entries

20100906
* worked on reading indexes

20100905
* worked on reading indexes
* worked on data runs

20100904
* worked on attributes
* worked on reading indexes
* worked on fixup values

20100903
* worked on mft attribute
* updated libbfio, libfdata
* worked on file entry API functions
* added libfguid for $OBJECT_ID attribute
* worked on attributes

20100828
* worked on reading a MFT entry and attributes

20100827
* worked on reading a MFT entry and attributes
* added debug print of file attribute flag description
* added debug print of mft attribute type description

20100826
* worked on reading a MFT entry and attributes

20100825
* initial version



================================================
FILE: Makefile.am
================================================
ACLOCAL_AMFLAGS = -I m4

SUBDIRS = \
	include \
	common \
	libcerror \
	libcthreads \
	libcdata \
	libclocale \
	libcnotify \
	libcsplit \
	libuna \
	libcfile \
	libcpath \
	libbfio \
	libfcache \
	libfdata \
	libfdatetime \
	libfguid \
	libfwnt \
	libfsntfs \
	libfusn \
	libhmac \
	fsntfstools \
	pyfsntfs \
	po \
	manuals \
	tests \
	ossfuzz \
	msvscpp

DPKG_FILES = \
	dpkg/changelog \
	dpkg/changelog.in \
	dpkg/compat \
	dpkg/control \
	dpkg/copyright \
	dpkg/rules \
	dpkg/libfsntfs.install \
	dpkg/libfsntfs-dev.install \
	dpkg/libfsntfs-python3.install \
	dpkg/libfsntfs-tools.install \
	dpkg/source/format

GETTEXT_FILES = \
	config.rpath \
	po/Makevars.in

PKGCONFIG_FILES = \
	libfsntfs.pc.in

SETUP_PY_FILES = \
	pyproject.toml \
	setup.cfg \
	setup.cfg.in \
	setup.py

SPEC_FILES = \
	libfsntfs.spec \
	libfsntfs.spec.in

EXTRA_DIST = \
	$(DPKG_FILES) \
	$(GETTEXT_FILES) \
	$(PKGCONFIG_FILES) \
	$(SETUP_PY_FILES) \
	$(SPEC_FILES)

DISTCLEANFILES = \
	config.status \
	config.cache \
	config.log \
	libfsntfs.pc \
	libfsntfs.spec \
	Makefile \
	Makefile.in \
	po/Makevars

pkgconfigdir = $(libdir)/pkgconfig

pkgconfig_DATA = \
	libfsntfs.pc

libtool: @LIBTOOL_DEPS@
	cd $(srcdir) && $(SHELL) ./config.status --recheck

lib: library

library:
	(cd $(srcdir)/common && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libcerror && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libcthreads && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libcdata && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libclocale && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libcnotify && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libcsplit && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libuna && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libcfile && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libcpath && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libbfio && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libfcache && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libfdata && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libfdatetime && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libfguid && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libfwnt && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/libfsntfs && $(MAKE) $(AM_MAKEFLAGS))
	(cd $(srcdir)/po && $(MAKE) $(AM_MAKEFLAGS))



================================================
FILE: NEWS
================================================


================================================
FILE: README
================================================
libfsntfs is a library to access the New Technology File System (NTFS) format.

Project information:

* Status: experimental
* Licence: LGPLv3+

Read-only supported NTFS formats:

* NTFS version 3.0
* NTFS version 3.1

Supported NTFS format features:

* LZNT1 compression
* Windows Overlay Filter (WOF) compressed data (LZX and LZXPRESS-Huffman)
* Case sensitive directories

Unsupported NTFS format features:

* NTFS version 1.0
* NTFS version 1.1
* NTFS version 1.2
* Encrypted File System (EFS)

For more information see:

* Project documentation: https://github.com/libyal/libfsntfs/wiki/Home
* How to build from source: https://github.com/libyal/libfsntfs/wiki/Building



================================================
FILE: acinclude.m4
================================================
dnl Checks for required headers and functions
dnl
dnl Version: 20230206

dnl Function to detect if libfsntfs dependencies are available
AC_DEFUN([AX_LIBFSNTFS_CHECK_LOCAL],
  [dnl Headers included in libfsntfs/libfsntfs_name.c
  AC_CHECK_HEADERS([wctype.h])

  dnl Functions used in libfsntfs/libfsntfs_name.c
  AC_CHECK_FUNCS([towupper])

  AS_IF(
    [test "x$ac_cv_func_towupper" != xyes],
    [AC_MSG_FAILURE(
      [Missing function: towupper],
      [1])
  ])

  dnl Check for internationalization functions in libfsntfs/libfsntfs_i18n.c
  AC_CHECK_FUNCS([bindtextdomain])
])

dnl Function to detect if fsntfstools dependencies are available
AC_DEFUN([AX_FSNTFSTOOLS_CHECK_LOCAL],
  [AC_CHECK_HEADERS([signal.h sys/signal.h unistd.h])

  AC_CHECK_FUNCS([close getopt setvbuf])

  AS_IF(
   [test "x$ac_cv_func_close" != xyes],
   [AC_MSG_FAILURE(
     [Missing function: close],
     [1])
  ])

  dnl Headers included in fsntfstools/fsntfsmount.c
  AC_CHECK_HEADERS([errno.h sys/time.h])

  dnl Functions included in fsntfstools/mount_file_system.c and fsntfstools/mount_file_entry.c
  AS_IF(
    [test "x$ac_cv_enable_winapi" = xno],
    [AC_CHECK_FUNCS([clock_gettime getegid geteuid time])
  ])
])

dnl Function to check if DLL support is needed
AC_DEFUN([AX_LIBFSNTFS_CHECK_DLL_SUPPORT],
  [AS_IF(
    [test "x$enable_shared" = xyes && test "x$ac_cv_enable_static_executables" = xno],
    [AS_CASE(
      [$host],
      [*cygwin* | *mingw* | *msys*],
      [AC_DEFINE(
        [HAVE_DLLMAIN],
        [1],
        [Define to 1 to enable the DllMain function.])
      AC_SUBST(
        [HAVE_DLLMAIN],
        [1])

      AC_SUBST(
        [LIBFSNTFS_DLL_EXPORT],
        ["-DLIBFSNTFS_DLL_EXPORT"])

      AC_SUBST(
        [LIBFSNTFS_DLL_IMPORT],
        ["-DLIBFSNTFS_DLL_IMPORT"])
      ])
    ])
  ])



================================================
FILE: appveyor.yml
================================================
environment:
  nuget_token:
    secure: xFlOodfYttki8HxA1hdhVhQ2lkVbj1EA1FxP9T1il2MUsBfH1rPEbTZy+etaMTD8
  matrix:
  - TARGET: vs2008
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
    VisualStudioVersion: 9.0
    platform: Win32
    configuration: Release
    PYTHON_PATH: "C:\\Python37"
  - TARGET: vs2010
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
    VisualStudioVersion: 10.0
    platform: Win32
    configuration: Release
    PYTHON_PATH: "C:\\Python37"
  - TARGET: vs2012
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
    VisualStudioVersion: 11.0
    platform: Win32
    configuration: Release
    PYTHON_PATH: "C:\\Python37"
  - TARGET: vs2013
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
    VisualStudioVersion: 12.0
    platform: Win32
    configuration: Release
    PYTHON_PATH: "C:\\Python37"
  - TARGET: vs2015
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
    VisualStudioVersion: 14.0
    platform: Win32
    configuration: Release
    PYTHON_PATH: "C:\\Python38"
  - TARGET: vs2017
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
    VisualStudioVersion: 15.0
    platform: Win32
    configuration: Release
    PYTHON_PATH: "C:\\Python38"
  - TARGET: vs2019
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
    VisualStudioVersion: 16.0
    platform: Win32
    configuration: Release
    PYTHON_PATH: "C:\\Python311"
  - TARGET: vs2022
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    VisualStudioVersion: 17.0
    platform: Win32
    configuration: Release
    PYTHON_PATH: "C:\\Python311"
  - TARGET: vs2022-vsdebug
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    VisualStudioVersion: 17.0
    platform: Win32
    configuration: VSDebug
    PYTHON_PATH: "C:\\Python311"
  - TARGET: vs2022-x64
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    VisualStudioVersion: 17.0
    platform: x64
    configuration: Release
    PYTHON_PATH: "C:\\Python311"
  - TARGET: vs2022-python
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    VisualStudioVersion: 17.0
    platform: x64
    configuration: Release
    PYTHON_PATH: "C:\\Python311-x64"
  - TARGET: vs2022-nuget
    BUILD_ENVIRONMENT: msbuild
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    VisualStudioVersion: 17.0
    configuration: Release
    PYTHON_PATH: "C:\\Python311"
  - TARGET: macos-x64-clang
    BUILD_ENVIRONMENT: xcode
    APPVEYOR_BUILD_WORKER_IMAGE: macos-sonoma
    HOMEBREW_NO_INSTALL_CLEANUP: 1
    CC: clang
    CFLAGS: "-I/usr/local/include"
    LDFLAGS: "-L/usr/local/lib"
    CONFIGURE_OPTIONS: ""
  - TARGET: macos-x64-gcc
    BUILD_ENVIRONMENT: xcode
    APPVEYOR_BUILD_WORKER_IMAGE: macos-sonoma
    HOMEBREW_NO_INSTALL_CLEANUP: 1
    CC: gcc
    CFLAGS: "-I/usr/local/include"
    LDFLAGS: "-L/usr/local/lib"
    CONFIGURE_OPTIONS: ""
  - TARGET: macos-x64-gcc-python
    BUILD_ENVIRONMENT: xcode
    APPVEYOR_BUILD_WORKER_IMAGE: macos-sonoma
    PYTHON: "/usr/local/opt/python@3.11/bin/python3"
    PYTHON_CONFIG: "/usr/local/opt/python@3.11/bin/python3-config"
    HOMEBREW_NO_INSTALL_CLEANUP: 1
    CC: gcc
    CFLAGS: "-I/usr/local/include"
    LDFLAGS: "-L/usr/local/lib"
    CONFIGURE_OPTIONS: "--enable-python"
  - TARGET: macos-pkgbuild
    BUILD_ENVIRONMENT: xcode
    APPVEYOR_BUILD_WORKER_IMAGE: macos-sonoma
    PYTHON: "/usr/local/opt/python@3.11/bin/python3"
    PYTHON_CONFIG: "/usr/local/opt/python@3.11/bin/python3-config"
    HOMEBREW_NO_INSTALL_CLEANUP: 1
    CC: gcc
    CFLAGS: "-I/usr/local/include"
    LDFLAGS: "-L/usr/local/lib"
    CONFIGURE_OPTIONS: "--disable-dependency-tracking --prefix=/usr/local --enable-python --with-pyprefix"
  - TARGET: cygwin64-gcc
    BUILD_ENVIRONMENT: cygwin64
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    CONFIGURE_OPTIONS: ""
  - TARGET: cygwin64-gcc-no-optimization
    BUILD_ENVIRONMENT: cygwin64
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    CONFIGURE_OPTIONS: "--enable-shared=no"
    CFLAGS: "--coverage -O0"
    CPPFLAGS: "-DOPTIMIZATION_DISABLED"
    LDFLAGS: "--coverage"
  - TARGET: cygwin64-gcc-python
    BUILD_ENVIRONMENT: cygwin64
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    CONFIGURE_OPTIONS: "--enable-python"
  - TARGET: cygwin64-gcc-static-executables
    BUILD_ENVIRONMENT: cygwin64
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    CONFIGURE_OPTIONS: "--enable-static-executables --with-libfuse=no"
  - TARGET: mingw-w64-gcc
    BUILD_ENVIRONMENT: mingw-w64
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    CONFIGURE_OPTIONS: ""
  - TARGET: mingw-w64-gcc-no-optimization
    BUILD_ENVIRONMENT: mingw-w64
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    CONFIGURE_OPTIONS: "--enable-shared=no"
    CFLAGS: "--coverage -O0"
    CPPFLAGS: "-DOPTIMIZATION_DISABLED"
    LDFLAGS: "--coverage"
  - TARGET: mingw-w64-gcc-python
    BUILD_ENVIRONMENT: mingw-w64
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    CONFIGURE_OPTIONS: "--enable-python"
  - TARGET: mingw-w64-gcc-static-executables
    BUILD_ENVIRONMENT: mingw-w64
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    CONFIGURE_OPTIONS: "--enable-static-executables"

matrix:
  allow_failures:
  - TARGET: mingw-w64-gcc-python

install:
- cmd: if [%BUILD_ENVIRONMENT%]==[msbuild] (
    git clone https://github.com/libyal/vstools.git ..\vstools )
- ps: If (($env:BUILD_ENVIRONMENT -eq "msbuild") -And (Test-Path ".\synctestdata.ps1")) {
    .\synctestdata.ps1 }
- sh: if ( test ${BUILD_ENVIRONMENT} = "xcode" ) && test -f "./synctestdata.sh"; then ./synctestdata.sh; fi
- ps: If ($env:BUILD_ENVIRONMENT -eq "msbuild") {
    If ( ( "vs2008", "vs2010", "vs2012", "vs2013", "vs2015" ).Contains( $env:TARGET ) ) {
      .\syncdokan.ps1 -UseLegacyVersion }
    Else {
      .\syncdokan.ps1 }
    }
- cmd: if [%TARGET%]==[vs2010] (
    pushd ..\dokan &&
    set PYTHONPATH=..\vstools &&
    C:\Python37\python.exe ..\vstools\vstools\scripts\msvscpp_convert.py --no-python-dll --output-format 2010 msvscpp\dokan.sln &&
    rd /q /s msvscpp &&
    ren vs2010 msvscpp &&
    popd )
- cmd: if [%TARGET%]==[vs2012] (
    pushd ..\dokan &&
    set PYTHONPATH=..\vstools &&
    C:\Python37\python.exe ..\vstools\vstools\scripts\msvscpp_convert.py --no-python-dll --extend-with-x64 --output-format 2012 msvscpp\dokan.sln &&
    rd /q /s msvscpp &&
    ren vs2012 msvscpp &&
    popd )
- cmd: if [%TARGET%]==[vs2013] (
    pushd ..\dokan &&
    set PYTHONPATH=..\vstools &&
    C:\Python37\python.exe ..\vstools\vstools\scripts\msvscpp_convert.py --output-format 2013 msvscpp\dokan.sln &&
    rd /q /s msvscpp &&
    ren vs2013 msvscpp &&
    popd )
- cmd: if [%TARGET%]==[vs2015] (
    pushd ..\dokan &&
    set PYTHONPATH=..\vstools &&
    C:\Python37\python.exe ..\vstools\vstools\scripts\msvscpp_convert.py --output-format 2015 msvscpp\dokan.sln &&
    rd /q /s msvscpp &&
    ren vs2015 msvscpp &&
    popd )
- ps: If ($env:BUILD_ENVIRONMENT -eq "msbuild") {
    If ( ( "vs2008", "vs2010", "vs2012", "vs2013", "vs2015" ).Contains( $env:TARGET ) ) {
      .\builddokan.ps1 -UseLegacyVersion }
    Else {
      $Configuration = $env:CONFIGURATION;
      If (${Configuration} -eq "VSDebug") {
        $Configuration = "Debug" }
      .\builddokan.ps1 -Configuration ${Configuration} -Platform "Win32";
      .\builddokan.ps1 -Configuration ${Configuration} -Platform "x64"; }
    }
- sh: if test ${BUILD_ENVIRONMENT} = "xcode"; then brew untap homebrew/homebrew-cask-versions && brew update -q; fi
- sh: if test ${BUILD_ENVIRONMENT} = "xcode"; then brew install -q autoconf automake gettext gnu-sed libtool macfuse openssl pkg-config || true; fi
- ps: If ($env:BUILD_ENVIRONMENT -eq "cygwin64") {
    (New-Object Net.WebClient).DownloadFile("https://cygwin.com/setup-x86_64.exe", "C:\\cygwin64\\setup-x86_64.exe") }
- cmd: if [%BUILD_ENVIRONMENT%]==[cygwin64] (
    C:\cygwin64\setup-x86_64.exe -qgnNdO -l C:\cygwin64\var\cache\setup -R c:\cygwin64 -s http://cygwin.mirror.constant.com -P cygfuse -P gettext-devel -P libssl-devel -P python3-devel -P wget -P zlib-devel )
- cmd: if [%BUILD_ENVIRONMENT%]==[mingw-w64] (
    C:\msys64\usr\bin\pacman -S --noconfirm --needed autoconf automake gettext-devel libtool make mingw-w64-x86_64-gcc mingw-w64-x86_64-python3 pkg-config )
- ps: If ( ( "cygwin64-gcc-no-optimization", "mingw-w64-gcc-no-optimization" ).Contains( $env:TARGET ) ) {
    $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri https://uploader.codecov.io/latest/windows/codecov.exe -Outfile ..\codecov.exe }

build_script:
- ps: If ($env:BUILD_ENVIRONMENT -eq "msbuild") {
    .\synclibs.ps1;
    .\autogen.ps1 }
- ps: If ($env:TARGET -eq "vs2008") {
    .\build.ps1 -VisualStudioVersion 2008 -PythonPath $env:PYTHON_PATH -VSToolsOptions "--no-python-dll" }
- ps: If ( ( "vs2010", "vs2012", "vs2013", "vs2015" ).Contains( $env:TARGET ) ) {
    .\build.ps1 -VisualStudioVersion $env:TARGET.Substring(2, 4) -Configuration $env:CONFIGURATION -Platform $env:PLATFORM -PythonPath $env:PYTHON_PATH -VSToolsOptions "--extend-with-x64 --no-python-dll" }
- ps: If ( ( "vs2017", "vs2019", "vs2022", "vs2022-vsdebug", "vs2022-x64" ).Contains( $env:TARGET ) ) {
    .\build.ps1 -VisualStudioVersion $env:TARGET.Substring(2, 4) -Configuration $env:CONFIGURATION -Platform $env:PLATFORM -PythonPath $env:PYTHON_PATH -VSToolsOptions "--extend-with-x64 --no-python-dll --with-dokany" }
- ps: If ($env:TARGET -eq "vs2022-python") {
    .\build.ps1 -VisualStudioVersion $env:TARGET.Substring(2, 4) -Configuration $env:CONFIGURATION -Platform $env:PLATFORM -PythonPath $env:PYTHON_PATH -VSToolsOptions "--extend-with-x64 --python-path $env:PYTHON_PATH --with-dokany" }
- ps: If ($env:TARGET -eq "vs2022-nuget") {
    .\build.ps1 -VisualStudioVersion $env:TARGET.Substring(2, 4) -Configuration $env:CONFIGURATION -Platform Win32 -PythonPath $env:PYTHON_PATH -VSToolsOptions "--extend-with-x64 --no-python-dll --with-dokany";
    .\build.ps1 -VisualStudioVersion $env:TARGET.Substring(2, 4) -Configuration $env:CONFIGURATION -Platform x64 -PythonPath $env:PYTHON_PATH -VSToolsOptions "--extend-with-x64 --no-python-dll --with-dokany" }
- cmd: if [%TARGET%]==[vs2022-nuget] (
    move msvscpp vs2008 &&
    move vs2022 msvscpp &&
    nuget pack libfsntfs.nuspec )
- sh: if test ${BUILD_ENVIRONMENT} = "xcode"; then export PATH="/usr/local/opt/gettext/bin:$PATH"; export SED="/usr/local/bin/gsed"; tests/build.sh ${CONFIGURE_OPTIONS}; fi
- cmd: if [%BUILD_ENVIRONMENT%]==[cygwin64] (
    xcopy /i /q /s C:\projects\libfsntfs C:\cygwin64\home\appveyor\libfsntfs &&
    C:\cygwin64\bin\bash -e -l -c "cd libfsntfs && wget -q 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' -O './config.guess' && wget -q 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' -O './config.sub'" &&
    C:\cygwin64\bin\bash -e -l -c "cd libfsntfs && tests/build.sh ${CONFIGURE_OPTIONS}" )
- cmd: if [%BUILD_ENVIRONMENT%]==[mingw-w64] (
    xcopy /i /q /s C:\projects\libfsntfs C:\msys64\home\appveyor\libfsntfs &&
    C:\msys64\usr\bin\bash -e -l -c "cd libfsntfs && tests/build.sh ${CONFIGURE_OPTIONS}" )

test_script:
- cmd: rem Run tests
- ps: If ($env:BUILD_ENVIRONMENT -eq "msbuild") {
    .\runtests.ps1 }
- sh: if test ${BUILD_ENVIRONMENT} = "xcode" && test ${TARGET} != "macos-pkgbuild"; then tests/runtests.sh; fi
- sh: if test ${TARGET} = "macos-pkgbuild"; then tests/pkgbuild.sh; fi
- cmd: if [%BUILD_ENVIRONMENT%]==[cygwin64] (
    C:\cygwin64\bin\bash -l -c "cd libfsntfs && tests/runtests.sh" )
- cmd: if [%BUILD_ENVIRONMENT%]==[mingw-w64] (
    C:\msys64\usr\bin\bash -l -c "cd libfsntfs && tests/runtests.sh" )

after_test:
- cmd: if [%TARGET%]==[cygwin64-gcc-no-optimization] (
    C:\cygwin64\bin\bash -e -l -c "cd libfsntfs && for DIRECTORY in `find . -maxdepth 1 -type d`; do (cd ${DIRECTORY} && find . -maxdepth 1 -name \*.gcno -type f -exec gcov -pb {} \;) done" &&
    C:\projects\codecov.exe -R \cygwin64\home\appveyor\libfsntfs --name %TARGET% )
- cmd: if [%TARGET%]==[mingw-w64-gcc-no-optimization] (
    C:\msys64\usr\bin\bash -e -l -c "cd libfsntfs && for DIRECTORY in `find . -maxdepth 1 -type d`; do (cd ${DIRECTORY} && find . -maxdepth 1 -name \*.gcno -type f -exec gcov -pb {} \;) done" &&
    C:\projects\codecov.exe -R \msys64\home\appveyor\libfsntfs --name %TARGET% )

artifacts:
- path: \*.nupkg

deploy_script:
- ps: If ($env:APPVEYOR_REPO_TAG -eq "true" -and $isWindows -and $env:TARGET -eq "vs2022-nuget") {
    Invoke-Expression "nuget push *.nupkg -NonInteractive -NoSymbols -Source https://api.nuget.org/v3/index.json -ApiKey ${env:NUGET_TOKEN}" }



================================================
FILE: autogen.ps1
================================================
# Script to generate the necessary files for a msvscpp build
#
# Version: 20241014

$WinFlex = "..\win_flex_bison\win_flex.exe"
$WinBison = "..\win_flex_bison\win_bison.exe"

$Library = Get-Content -Path configure.ac | select -skip 3 -first 1 | % { $_ -Replace "  \[","" } | % { $_ -Replace "\],","" }
$Version = Get-Content -Path configure.ac | select -skip 4 -first 1 | % { $_ -Replace "  \[","" } | % { $_ -Replace "\],","" }
$Prefix = ${Library}.Substring(3)

Get-Content -Path "include\${Library}.h.in" | Out-File -Encoding ascii "include\${Library}.h"
Get-Content -Path "include\${Library}\definitions.h.in" | % { $_ -Replace "@VERSION@","${Version}" } | Out-File -Encoding ascii "include\${Library}\definitions.h"
Get-Content -Path "include\${Library}\features.h.in" | % { $_ -Replace "@[A-Z0-9_]*@","0" } | Out-File -Encoding ascii "include\${Library}\features.h"
Get-Content -Path "include\${Library}\types.h.in" | % { $_ -Replace "@[A-Z0-9_]*@","0" } | Out-File -Encoding ascii "include\${Library}\types.h"
Get-Content -Path "common\types.h.in" | % { $_ -Replace "@PACKAGE@","${Library}" } | Out-File -Encoding ascii "common\types.h"
Get-Content -Path "${Library}\${Library}_definitions.h.in" | % { $_ -Replace "@VERSION@","${Version}" } | Out-File -Encoding ascii "${Library}\${Library}_definitions.h"
Get-Content -Path "${Library}\${Library}.rc.in" | % { $_ -Replace "@VERSION@","${Version}" } | Out-File -Encoding ascii "${Library}\${Library}.rc"

If (Test-Path "setup.cfg.in")
{
	Get-Content -Path "setup.cfg.in" | % { $_ -Replace "@VERSION@","${Version}" } | Out-File -Encoding ascii "setup.cfg"
}

If (Test-Path "${Prefix}.net")
{
	Get-Content -Path "${Prefix}.net\${Prefix}.net.rc.in" | % { $_ -Replace "@VERSION@","${Version}" } | Out-File -Encoding ascii "${Prefix}.net\${Prefix}.net.rc"
}

$NamePrefix = ""

ForEach (${Library} in Get-ChildItem -Directory -Path "lib*")
{
	ForEach (${DirectoryElement} in Get-ChildItem -Path "${Library}\*.l")
	{
		$OutputFile = ${DirectoryElement} -Replace ".l$",".c"

		$NamePrefix = Split-Path -path ${DirectoryElement} -leaf
		$NamePrefix = ${NamePrefix} -Replace ".l$","_"

		Write-Host "Running: ${WinFlex} -Cf ${DirectoryElement}"

		# PowerShell will raise NativeCommandError if win_flex writes to stdout or stderr
		# therefore 2>&1 is added and the output is stored in a variable.
		$Output = Invoke-Expression -Command "& '${WinFlex}' -Cf ${DirectoryElement} 2>&1"
		Write-Host ${Output}

		# Moving manually since `win_flex -o filename' does not provide the expected behavior.
		Move-Item "lex.yy.c" ${OutputFile} -force
	}

	ForEach (${DirectoryElement} in Get-ChildItem -Path "${Library}\*.y")
	{
		$OutputFile = ${DirectoryElement} -Replace ".y$",".c"

		Write-Host "Running: ${WinBison} -d -v -l -p ${NamePrefix} -o ${OutputFile} ${DirectoryElement}"

		# PowerShell will raise NativeCommandError if win_bison writes to stdout or stderr
		# therefore 2>&1 is added and the output is stored in a variable.
		$Output = Invoke-Expression -Command "& '${WinBison}' -d -v -l -p ${NamePrefix} -o ${OutputFile} ${DirectoryElement} 2>&1"
		Write-Host ${Output}
	}
}



================================================
FILE: autogen.sh
================================================
#!/bin/sh
# Script to generate configure and Makefile using the autotools.
#
# Version: 20241013

EXIT_SUCCESS=0;
EXIT_FAILURE=1;

BINDIR=`which aclocal`;
BINDIR=`dirname ${BINDIR}`;

if ! test -x "${BINDIR}/aclocal" && test "${BINDIR}" != "/usr/bin";
then
	BINDIR="/usr/bin";
fi
if ! test -x "${BINDIR}/aclocal" && test "${BINDIR}" != "/usr/local/bin";
then
	BINDIR="/usr/local/bin";
fi
if ! test -x "${BINDIR}/aclocal" && test "${BINDIR}" != "/opt/local/bin";
then
	# Default location of MacPorts installed binaries.
	BINDIR="/opt/local/bin";
fi
if ! test -x "${BINDIR}/aclocal" && test "${BINDIR}" != "/opt/homebrew/bin";
then
	# Default location of Homebrew installed binaries.
	BINDIR="/opt/homebrew/bin";
fi
if ! test -x "${BINDIR}/aclocal" && test "${BINDIR}" != "/mingw32/bin";
then
	# Default location of 32-bit MSYS2-MinGW installed binaries.
	BINDIR="/mingw32/bin";
fi
if ! test -x "${BINDIR}/aclocal" && test "${BINDIR}" != "/mingw64/bin";
then
	# Default location of 64-bit MSYS2-MinGW installed binaries.
	BINDIR="/mingw64/bin";
fi

if ! test -x "${BINDIR}/aclocal";
then
	echo "Unable to find autotools";

	exit ${EXIT_FAILURE};
fi

ACLOCAL="${BINDIR}/aclocal";
AUTOCONF="${BINDIR}/autoconf";
AUTOHEADER="${BINDIR}/autoheader";
AUTOMAKE="${BINDIR}/automake";
AUTOPOINT="${BINDIR}/autopoint";
AUTORECONF="${BINDIR}/autoreconf";
LIBTOOLIZE="${BINDIR}/libtoolize";
PKGCONFIG="${BINDIR}/pkg-config";

if test "${OSTYPE}" = "msys";
then
	# Work-around for autopoint failing to detect gettext version
	# using func_trace (which is not available) on MSYS by writing
	# the gettext version to intl/VERSION.
	if ! test -d intl;
	then
		mkdir intl;
	fi
	GETTEXT_VERSION=`gettext --version | head -n1 | sed 's/^.* //'`;

	echo "gettext-${GETTEXT_VERSION}" > intl/VERSION;

elif ! test -x "${PKGCONFIG}";
then
	if test "${BINDIR}" != "/usr/bin";
	then
		# On OpenBSD most of the autotools are located in
		# /usr/local/bin while pkg-config is located in /usr/bin
		PKGCONFIG="/usr/bin/pkg-config";
	fi
	if ! test -x "${PKGCONFIG}";
	then
		echo "Unable to find: pkg-config";

		exit ${EXIT_FAILURE};
	fi
fi

if test -x "${AUTORECONF}";
then
	${AUTORECONF} --force --install
	if test $? -ne 0;
	then
		exit $?;
	fi
else
	if ! test -x "${ACLOCAL}";
	then
		echo "Unable to find: aclocal";

		exit ${EXIT_FAILURE};
	fi
	if ! test -x "${AUTOCONF}";
		then
		echo "Unable to find: autoconf";

		exit ${EXIT_FAILURE};
	fi
	if ! test -x "${AUTOHEADER}";
	then
		echo "Unable to find: autoheader";

		exit ${EXIT_FAILURE};
	fi
	if ! test -x "${AUTOMAKE}";
	then
		echo "Unable to find: automake";

		exit ${EXIT_FAILURE};
	fi
	if ! test -x "${AUTOPOINT}";
	then
		echo "Unable to find: autopoint";

		exit ${EXIT_FAILURE};
	fi
	if ! test -x "${LIBTOOLIZE}";
	then
		echo "Unable to find: libtoolize";

		exit ${EXIT_FAILURE};
	fi

	${AUTOPOINT} --force;
	if test $? -ne 0;
	then
		exit $?;
	fi

	${ACLOCAL} --force --install -I m4;
	if test $? -ne 0;
	then
		exit $?;
	fi

	${LIBTOOLIZE} --force;
	if test $? -ne 0;
	then
		exit $?;
	fi

	${AUTOHEADER} --force;
	if test $? -ne 0;
	then
		exit $?;
	fi

	${AUTOCONF} --force;
	if test $? -ne 0;
	then
		exit $?;
	fi

	${AUTOMAKE} --force --add-missing;
	if test $? -ne 0;
	then
		exit $?;
	fi

fi

exit ${EXIT_SUCCESS};



================================================
FILE: build.ps1
================================================
# Script that builds libfsntfs
#
# Version: 20251125

Param (
	[string]$Configuration = ${Env:Configuration},
	[string]$Platform = ${Env:Platform},
	[string]$PlatformToolset = "",
	[string]$PythonPath = "C:\Python311",
	[string]$VisualStudioVersion = "",
	[string]$VSToolsOptions = "--extend-with-x64",
	[string]$VSToolsPath = "..\vstools"
)

$ExitSuccess = 0
$ExitFailure = 1

$Python = "${PythonPath}\python.exe"

$Git = "git"
$GitUrl = "https://github.com/libyal/vstools.git"

$MSVSCppConvert = "${VSToolsPath}\vstools\scripts\msvscpp_convert.py"

If (-Not (Test-Path $Python))
{
    Write-Host "Missing Python: ${Python}" -foreground Red

    Exit ${ExitFailure}
}
If (-Not (Test-Path ${VSToolsPath}))
{
	# PowerShell will raise NativeCommandError if git writes to stdout or stderr
	# therefore 2>&1 is added and the output is stored in a variable.
	$Output = Invoke-Expression -Command "${Git} clone ${GitUrl} ${VSToolsPath} 2>&1" | %{ "$_" }
}
Else
{
	Push-Location "${VSToolsPath}"

	Try
	{
		# Make sure vstools are up to date.
		$Output = Invoke-Expression -Command "${Git} pull 2>&1" | %{ "$_" }
	}
	Finally
	{
		Pop-Location
	}
}
If (-Not (Test-Path ${MSVSCppConvert}))
{
	Write-Host "Missing msvscpp_convert.py: ${MSVSCppConvert}" -foreground Red

	Exit ${ExitFailure}
}
If (-Not ${VisualStudioVersion})
{
	$VisualStudioVersion = "2022"

	Write-Host "Visual Studio version not set defauting to: ${VisualStudioVersion}" -foreground Red
}
If ((${VisualStudioVersion} -ne "2008") -And (${VisualStudioVersion} -ne "2010") -And (${VisualStudioVersion} -ne "2012") -And (${VisualStudioVersion} -ne "2013") -And (${VisualStudioVersion} -ne "2015") -And (${VisualStudioVersion} -ne "2017") -And (${VisualStudioVersion} -ne "2019") -And (${VisualStudioVersion} -ne "2022"))
{
	Write-Host "Unsupported Visual Studio version: ${VisualStudioVersion}" -foreground Red

	Exit ${ExitFailure}
}
$MSBuild = ""

If (${VisualStudioVersion} -eq "2008")
{
	$MSBuild = "C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe"
}
ElseIf ((${VisualStudioVersion} -eq "2010") -Or (${VisualStudioVersion} -eq "2012"))
{
	$MSBuild = "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
}
ElseIf (${VisualStudioVersion} -eq "2013")
{
	$MSBuild = "C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe"
}
ElseIf (${VisualStudioVersion} -eq "2015")
{
	$MSBuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
}
ElseIf (${VisualStudioVersion} -eq "2017")
{
	$Results = Get-ChildItem -Path "C:\Program Files\Microsoft Visual Studio\${VisualStudioVersion}\*\MSBuild\15.0\Bin\MSBuild.exe" -Recurse -ErrorAction SilentlyContinue -Force

	If ($Results.Count -eq 0)
	{
		$Results = Get-ChildItem -Path "C:\Program Files (x86)\Microsoft Visual Studio\${VisualStudioVersion}\*\MSBuild\15.0\Bin\MSBuild.exe" -Recurse -ErrorAction SilentlyContinue -Force
	}
	If ($Results.Count -gt 0)
	{
		$MSBuild = $Results[0].FullName
	}
}
ElseIf (${VisualStudioVersion} -eq "2019" -Or ${VisualStudioVersion} -eq "2022")
{
	$Results = Get-ChildItem -Path "C:\Program Files\Microsoft Visual Studio\${VisualStudioVersion}\*\MSBuild\Current\Bin\MSBuild.exe" -Recurse -ErrorAction SilentlyContinue -Force

	If ($Results.Count -eq 0)
	{
		$Results = Get-ChildItem -Path "C:\Program Files (x86)\Microsoft Visual Studio\${VisualStudioVersion}\*\MSBuild\Current\Bin\MSBuild.exe" -Recurse -ErrorAction SilentlyContinue -Force
	}
	If ($Results.Count -gt 0)
	{
		$MSBuild = $Results[0].FullName
	}
}
If (-Not ${MSBuild})
{
	Write-Host "Unable to determine path to msbuild.exe" -foreground Red

	Exit ${ExitFailure}
}
ElseIf (-Not (Test-Path ${MSBuild}))
{
	Write-Host "Missing msbuild.exe: ${MSBuild}" -foreground Red

	Exit ${ExitFailure}
}

If (${VisualStudioVersion} -eq "2008")
{
	$VSSolutionPath = "msvscpp"
}
Else
{
	$VSSolutionPath = "vs${VisualStudioVersion}"

	If (-Not (Test-Path "${VSSolutionPath}"))
	{
		${Env:PYTHONPATH} = ${VSToolsPath}

		Invoke-Expression -Command "& '${Python}' ${MSVSCppConvert} --output-format ${VisualStudioVersion} ${VSToolsOptions} msvscpp\libfsntfs.sln 2>&1" | %{ "$_" }
	}
}
$VSSolutionFile = "${VSSolutionPath}\libfsntfs.sln"

If (-Not (Test-Path "${VSSolutionFile}"))
{
	Write-Host "Missing Visual Studio ${VisualStudioVersion} solution file: ${VSSolutionFile}" -foreground Red

	Exit ${ExitFailure}
}
If (-Not ${Configuration})
{
	$Configuration = "Release"

	Write-Host "Configuration not set defauting to: ${Configuration}"
}
If (-Not ${Platform})
{
	$Platform = "Win32"

	Write-Host "Platform not set defauting to: ${Platform}"
}
$PlatformToolset = ""

If (-Not ${PlatformToolset})
{
	If (${VisualStudioVersion} -eq "2015")
	{
		$PlatformToolset = "v140"
	}
	ElseIf (${VisualStudioVersion} -eq "2017")
	{
		$PlatformToolset = "v141"
	}
	ElseIf (${VisualStudioVersion} -eq "2019")
	{
		$PlatformToolset = "v142"
	}
	ElseIf (${VisualStudioVersion} -eq "2022")
	{
		$PlatformToolset = "v143"
	}
	Write-Host "PlatformToolset not set defauting to: ${PlatformToolset}"
}
$MSBuildOptions = "/verbosity:quiet /target:Build /property:Configuration=${Configuration},Platform=${Platform}"

If (${PlatformToolset})
{
	$MSBuildOptions = "${MSBuildOptions} /property:PlatformToolset=${PlatformToolset}"
}
If (${Env:APPVEYOR} -eq "True")
{
	Invoke-Expression -Command "& '${MSBuild}' ${MSBuildOptions} ${VSSolutionFile} /logger:'C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll' 2>&1" | %{ "$_" }
}
Else
{
	Invoke-Expression -Command "& '${MSBuild}' ${MSBuildOptions} ${VSSolutionFile} 2>&1" | %{ "$_" }
}

Exit ${ExitSuccess}


================================================
FILE: builddokan.ps1
================================================
# Script that builds dokan
#
# Version: 20180322

Param (
	[string]$Configuration = ${Env:Configuration},
	[string]$Platform = ${Env:Platform},
	[switch]$UseLegacyVersion = $false
)

If (-not ${Configuration})
{
	$Configuration = "Release"
}
If (-not ${Platform})
{
	$Platform = "Win32"
}

If (${Env:AppVeyor} -eq "True")
{
	$MSBuild = "MSBuild.exe"
}
ElseIf (${Env:VisualStudioVersion} -eq "15.0")
{
	$MSBuild = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\amd64\MSBuild.exe"
}
ElseIf (${Env:VisualStudioVersion} -eq "9.0")
{
	$MSBuild = "C:\\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe"
}
Else
{
	$MSBuild = "C:\\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
}
$MSBuildOptions = "/verbosity:quiet /target:Build /property:Configuration=${Configuration},Platform=${Platform}"

If ($UseLegacyVersion)
{
	$DokanPath = "../dokan"
	$ProjectFile = "msvscpp\dokan.sln"
}
Else
{
	$DokanPath = "../dokany"
	$ProjectFile = "dokan\dokan.vcxproj"
}

Push-Location ${DokanPath}

Try
{
	Write-Host "${MSBuild} ${MSBuildOptions} ${ProjectFile}"

	Invoke-Expression -Command "& '${MSBuild}' ${MSBuildOptions} ${ProjectFile}"
}
Finally
{
	Pop-Location
}



================================================
FILE: common/Makefile.am
================================================
AM_CPPFLAGS = \
	-I../include -I$(top_srcdir)/include

EXTRA_DIST = \
	byte_stream.h \
	common.h \
	config.h \
	config_borlandc.h \
	config_msc.h \
	config_winapi.h \
	file_stream.h \
	memory.h \
	narrow_string.h \
	system_string.h \
	types.h \
	types.h.in \
	wide_string.h

DISTCLEANFILES = \
	config.h \
	types.h \
	Makefile \
	Makefile.in



================================================
FILE: common/byte_stream.h
================================================
/*
 * Byte stream functions
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _BYTE_STREAM_H )
#define _BYTE_STREAM_H

#include "common.h"
#include "types.h"

#if defined( __cplusplus )
extern "C" {
#endif

#define _BYTE_STREAM_HOST_IS_ENDIAN_BIG		( *((uint32_t *) "\x01\x02\x03\x04" ) == 0x01020304 )
#define _BYTE_STREAM_HOST_IS_ENDIAN_LITTLE	( *((uint32_t *) "\x01\x02\x03\x04" ) == 0x04030201 )
#define _BYTE_STREAM_HOST_IS_ENDIAN_MIDDLE	( *((uint32_t *) "\x01\x02\x03\x04" ) == 0x02010403 )

#define _BYTE_STREAM_ENDIAN_BIG			(uint8_t) 'b'
#define _BYTE_STREAM_ENDIAN_LITTLE		(uint8_t) 'l'
#define _BYTE_STREAM_ENDIAN_MIDDLE		(uint8_t) 'm'

typedef union byte_stream_float32
{
	float floating_point;
	uint32_t integer;

} byte_stream_float32_t;

typedef union byte_stream_float64
{
	double floating_point;
	uint64_t integer;

} byte_stream_float64_t;

#define byte_stream_copy_to_uint16_big_endian( byte_stream, value ) \
	( value )   = ( byte_stream )[ 0 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 1 ];

#define byte_stream_copy_to_uint16_little_endian( byte_stream, value ) \
	( value )   = ( byte_stream )[ 1 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 0 ];

#define byte_stream_copy_to_uint24_big_endian( byte_stream, value ) \
	( value )   = ( byte_stream )[ 0 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 1 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 2 ];

#define byte_stream_copy_to_uint24_little_endian( byte_stream, value ) \
	( value )   = ( byte_stream )[ 2 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 1 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 0 ];

#define byte_stream_copy_to_uint32_big_endian( byte_stream, value ) \
	( value )   = ( byte_stream )[ 0 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 1 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 2 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 3 ];

#define byte_stream_copy_to_uint32_little_endian( byte_stream, value ) \
	( value )   = ( byte_stream )[ 3 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 2 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 1 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 0 ];

#define byte_stream_copy_to_uint48_big_endian( byte_stream, value ) \
	( value )   = ( byte_stream )[ 0 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 1 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 2 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 3 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 4 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 5 ];

#define byte_stream_copy_to_uint48_little_endian( byte_stream, value ) \
	( value )  |= ( byte_stream )[ 5 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 4 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 3 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 2 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 1 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 0 ];

#define byte_stream_copy_to_uint64_big_endian( byte_stream, value ) \
	( value )   = ( byte_stream )[ 0 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 1 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 2 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 3 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 4 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 5 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 6 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 7 ];

#define byte_stream_copy_to_uint64_little_endian( byte_stream, value ) \
	( value )   = ( byte_stream )[ 7 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 6 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 5 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 4 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 3 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 2 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 1 ]; \
	( value ) <<= 8; \
	( value )  |= ( byte_stream )[ 0 ];

#define byte_stream_copy_from_uint16_big_endian( byte_stream, value ) \
	( byte_stream )[ 0 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 1 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_copy_from_uint16_little_endian( byte_stream, value ) \
	( byte_stream )[ 1 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 0 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_copy_from_uint24_big_endian( byte_stream, value ) \
	( byte_stream )[ 0 ] = (uint8_t) ( ( ( value ) >> 16 ) & 0x0ff ); \
	( byte_stream )[ 1 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 2 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_copy_from_uint24_little_endian( byte_stream, value ) \
	( byte_stream )[ 2 ] = (uint8_t) ( ( ( value ) >> 16 ) & 0x0ff ); \
	( byte_stream )[ 1 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 0 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_copy_from_uint32_big_endian( byte_stream, value ) \
	( byte_stream )[ 0 ] = (uint8_t) ( ( ( value ) >> 24 ) & 0x0ff ); \
	( byte_stream )[ 1 ] = (uint8_t) ( ( ( value ) >> 16 ) & 0x0ff ); \
	( byte_stream )[ 2 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 3 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_copy_from_uint32_little_endian( byte_stream, value ) \
	( byte_stream )[ 3 ] = (uint8_t) ( ( ( value ) >> 24 ) & 0x0ff ); \
	( byte_stream )[ 2 ] = (uint8_t) ( ( ( value ) >> 16 ) & 0x0ff ); \
	( byte_stream )[ 1 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 0 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_copy_from_uint48_big_endian( byte_stream, value ) \
	( byte_stream )[ 0 ] = (uint8_t) ( ( ( value ) >> 40 ) & 0x0ff ); \
	( byte_stream )[ 1 ] = (uint8_t) ( ( ( value ) >> 32 ) & 0x0ff ); \
	( byte_stream )[ 2 ] = (uint8_t) ( ( ( value ) >> 24 ) & 0x0ff ); \
	( byte_stream )[ 3 ] = (uint8_t) ( ( ( value ) >> 16 ) & 0x0ff ); \
	( byte_stream )[ 4 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 5 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_copy_from_uint48_little_endian( byte_stream, value ) \
	( byte_stream )[ 5 ] = (uint8_t) ( ( ( value ) >> 40 ) & 0x0ff ); \
	( byte_stream )[ 4 ] = (uint8_t) ( ( ( value ) >> 32 ) & 0x0ff ); \
	( byte_stream )[ 3 ] = (uint8_t) ( ( ( value ) >> 24 ) & 0x0ff ); \
	( byte_stream )[ 2 ] = (uint8_t) ( ( ( value ) >> 16 ) & 0x0ff ); \
	( byte_stream )[ 1 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 0 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_copy_from_uint64_big_endian( byte_stream, value ) \
	( byte_stream )[ 0 ] = (uint8_t) ( ( ( value ) >> 56 ) & 0x0ff ); \
	( byte_stream )[ 1 ] = (uint8_t) ( ( ( value ) >> 48 ) & 0x0ff ); \
	( byte_stream )[ 2 ] = (uint8_t) ( ( ( value ) >> 40 ) & 0x0ff ); \
	( byte_stream )[ 3 ] = (uint8_t) ( ( ( value ) >> 32 ) & 0x0ff ); \
	( byte_stream )[ 4 ] = (uint8_t) ( ( ( value ) >> 24 ) & 0x0ff ); \
	( byte_stream )[ 5 ] = (uint8_t) ( ( ( value ) >> 16 ) & 0x0ff ); \
	( byte_stream )[ 6 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 7 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_copy_from_uint64_little_endian( byte_stream, value ) \
	( byte_stream )[ 7 ] = (uint8_t) ( ( ( value ) >> 56 ) & 0x0ff ); \
	( byte_stream )[ 6 ] = (uint8_t) ( ( ( value ) >> 48 ) & 0x0ff ); \
	( byte_stream )[ 5 ] = (uint8_t) ( ( ( value ) >> 40 ) & 0x0ff ); \
	( byte_stream )[ 4 ] = (uint8_t) ( ( ( value ) >> 32 ) & 0x0ff ); \
	( byte_stream )[ 3 ] = (uint8_t) ( ( ( value ) >> 24 ) & 0x0ff ); \
	( byte_stream )[ 2 ] = (uint8_t) ( ( ( value ) >> 16 ) & 0x0ff ); \
	( byte_stream )[ 1 ] = (uint8_t) ( ( ( value ) >> 8 ) & 0x0ff ); \
	( byte_stream )[ 0 ] = (uint8_t) ( ( value ) & 0x0ff )

#define byte_stream_bit_rotate_left_8bit( byte_stream, number_of_bits ) \
	( ( ( byte_stream ) << ( number_of_bits ) ) | ( ( byte_stream ) >> ( 8 - ( number_of_bits ) ) ) )

#define byte_stream_bit_rotate_right_8bit( byte_stream, number_of_bits ) \
	( ( ( byte_stream ) >> ( number_of_bits ) ) | ( ( byte_stream ) << ( 8 - ( number_of_bits ) ) ) )

#define byte_stream_bit_rotate_left_16bit( byte_stream, number_of_bits ) \
	( ( ( byte_stream ) << ( number_of_bits ) ) | ( ( byte_stream ) >> ( 16 - ( number_of_bits ) ) ) )

#define byte_stream_bit_rotate_right_16bit( byte_stream, number_of_bits ) \
	( ( ( byte_stream ) >> ( number_of_bits ) ) | ( ( byte_stream ) << ( 16 - ( number_of_bits ) ) ) )

#define byte_stream_bit_rotate_left_32bit( byte_stream, number_of_bits ) \
	( ( ( byte_stream ) << ( number_of_bits ) ) | ( ( byte_stream ) >> ( 32 - ( number_of_bits ) ) ) )

#define byte_stream_bit_rotate_right_32bit( byte_stream, number_of_bits ) \
	( ( ( byte_stream ) >> ( number_of_bits ) ) | ( ( byte_stream ) << ( 32 - ( number_of_bits ) ) ) )

#define byte_stream_bit_rotate_left_64bit( byte_stream, number_of_bits ) \
	( ( ( byte_stream ) << ( number_of_bits ) ) | ( ( byte_stream ) >> ( 64 - ( number_of_bits ) ) ) )

#define byte_stream_bit_rotate_right_64bit( byte_stream, number_of_bits ) \
	( ( ( byte_stream ) >> ( number_of_bits ) ) | ( ( byte_stream ) << ( 64 - ( number_of_bits ) ) ) )

#define byte_stream_bit_rotate_left( value, number_of_bits ) \
	( ( ( value ) << ( number_of_bits ) ) | ( ( value ) >> ( ( sizeof( value ) << 3 ) - ( number_of_bits ) ) ) )

#define byte_stream_bit_rotate_right( value, number_of_bits ) \
	( ( ( value ) >> ( number_of_bits ) ) | ( ( value ) << ( ( sizeof( value ) << 3 ) - ( number_of_bits ) ) ) )

#if defined( __cplusplus )
}
#endif

#endif /* !defined( _BYTE_STREAM_H ) */



================================================
FILE: common/common.h
================================================
/*
 * Common include file
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _COMMON_H )
#define _COMMON_H

#if defined( HAVE_CONFIG_H )
#include "config.h"
#endif

/* Include the Borland/CodeGear C++ Builder compiler specific configuration
 */
#if defined( __BORLANDC__ )
#include "config_borlandc.h"

/* Include the Microsoft Visual Studio C++ compiler specific configuration
 */
#elif defined( _MSC_VER )
#include "config_msc.h"
#endif

#include "config_winapi.h"

#endif /* !defined( _COMMON_H ) */



================================================
FILE: common/config_borlandc.h
================================================
/*
 * Configuration for the Borland/CodeGear C++ Builder compiler
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _CONFIG_BORLANDC_H )
#define _CONFIG_BORLANDC_H

#endif /* !defined( _CONFIG_BORLANDC_H ) */



================================================
FILE: common/config_msc.h
================================================
/*
 * Configuration for the Microsoft Visual Studio C++ compiler
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _CONFIG_MSC_H )
#define _CONFIG_MSC_H

/* Disable warning C4127: conditional expression is constant
 */
#pragma warning( disable : 4127 )

/* Disable warning C4201: nonstandard extension used : nameless struct/union
 */
#pragma warning( disable : 4201 )

#endif /* !defined( _CONFIG_MSC_H ) */



================================================
FILE: common/config_winapi.h
================================================
/*
 * Configuration file for WINAPI
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _CONFIG_WINAPI_H )
#define _CONFIG_WINAPI_H

/* Define the earliest supported WINAPI version
#define WINVER				0x0501
 */

/* If necessary make sure WINAPI is defined
 */
#if defined( HAVE_WINDOWS_H ) || defined( __BORLANDC__ ) || defined( _MSC_VER )
#include <windows.h>
#endif

#if defined( WINAPI )

/* Define to the address where bug reports for this package should be sent.
 */
#define PACKAGE_BUGREPORT		"joachim.metz@gmail.com"

/* Define the size of the integer for WINAPI
 */
#if !defined( SIZEOF_INT )
#define SIZEOF_INT			4
#endif

/* Define the size of size_t for WINAPI
 * Do not define when pyconfig.h has been included via python.h
 */
#if !defined( HAVE_PYCONFIG_H )

#if !defined( SIZEOF_SIZE_T )
#if __WORDSIZE == 64
#define SIZEOF_SIZE_T			8
#else
#define SIZEOF_SIZE_T			4
#endif
#endif

#endif /* !defined( HAVE_PYCONFIG_H ) */

/* Define the size of the wide character for WINAPI
 */
#if !defined( SIZEOF_WCHAR_T )
#define SIZEOF_WCHAR_T			2
#endif

/* Enable the DllMain function
 */
#define HAVE_DLLMAIN			1

/* Enable verbose output
#define HAVE_VERBOSE_OUTPUT		1
 */

/* Enable debug output
#define HAVE_DEBUG_OUTPUT		1
 */

/* Enable both the narrow and wide character functions
 */
#if !defined( HAVE_WIDE_CHARACTER_TYPE )
#define HAVE_WIDE_CHARACTER_TYPE	1
#endif

/* If not controlled by config.h enable multi-thread support
 */
#if !defined( HAVE_CONFIG_H ) && !defined( HAVE_MULTI_THREAD_SUPPORT )
#define HAVE_MULTI_THREAD_SUPPORT	1
#endif

#endif /* defined( WINAPI ) */

#endif /* !defined( _CONFIG_WINAPI_H ) */



================================================
FILE: common/file_stream.h
================================================
/*
 * FILE stream functions
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _FILE_STREAM_H )
#define _FILE_STREAM_H

#include "common.h"

#if defined( HAVE_GLIB_H )
#include <glib.h>
#include <glib/gstdio.h>
#endif

#include <stdio.h>

#if defined( __cplusplus )
extern "C" {
#endif

#define FILE_STREAM_OPEN_APPEND			"a"
#define FILE_STREAM_OPEN_READ			"r"
#define FILE_STREAM_OPEN_WRITE			"w"

#if defined( WINAPI )
#define FILE_STREAM_BINARY_OPEN_APPEND		"ab"
#define FILE_STREAM_BINARY_OPEN_READ		"rb"
#define FILE_STREAM_BINARY_OPEN_WRITE		"wb"

#else
#define FILE_STREAM_BINARY_OPEN_APPEND		"a"
#define FILE_STREAM_BINARY_OPEN_READ		"r"
#define FILE_STREAM_BINARY_OPEN_WRITE		"w"

#endif

/* narrow character FILE stream open
 */
#if defined( HAVE_GLIB_H )
#define file_stream_open( filename, mode ) \
	g_fopen( filename, mode )

#elif defined( HAVE_FOPEN ) || defined( WINAPI )
#define file_stream_open( filename, mode ) \
	fopen( filename, mode )
#endif

/* wide character FILE stream open
 */
#if defined( WINAPI )
#define file_stream_open_wide( filename, mode ) \
	_wfopen( filename, mode )
#endif

/* FILE stream close
 */
#if defined( HAVE_FCLOSE ) || defined( WINAPI )
#define file_stream_close( stream ) \
	fclose( stream )
#endif

/* FILE stream read
 */
#if defined( HAVE_FREAD ) || defined( WINAPI )
#define file_stream_read( stream, data, size ) \
	fread( data, 1, size, stream )
#endif

/* FILE stream write
 */
#if defined( HAVE_FWRITE ) || defined( WINAPI )
#define file_stream_write( stream, data, size ) \
	fwrite( data, 1, size, stream )
#endif

/* FILE stream seek
 */
#if defined( WINAPI )
#define file_stream_seek_offset( stream, offset, whence ) \
	fseek( stream, offset, whence )

#elif defined( HAVE_FSEEKO )
#define file_stream_seek_offset( stream, offset, whence ) \
	fseeko( stream, offset, whence )

#elif defined( HAVE_FSEEKO64 )
#define file_stream_seek_offset( stream, offset, whence ) \
	fseeko64( stream, offset, whence )
#endif

/* End of FILE stream
 */
#if defined( HAVE_FEOF ) || defined( WINAPI )
#define file_stream_at_end( stream ) \
        feof( stream )
#endif

/* Get narrow character string from FILE stream
 */
#if defined( HAVE_FGETS ) || defined( WINAPI )
#define file_stream_get_string( stream, string, size ) \
        fgets( string, size, stream )
#endif

/* Get wide characters string from FILE stream
 */
#if defined( HAVE_FGETWS ) || defined( WINAPI )
#define file_stream_get_string_wide( stream, string, size ) \
        fgetws( string, size, stream )
#endif

/* Variable arguments formatted print to stream function
 */
#if defined( HAVE_GLIB_H )
#define file_stream_vfprintf( stream, format, ... ) \
	g_vfprintf( stream, format, __VA_ARGS__ )

/* Borland BCC previous to version 5.6.0 cannot handle the macro form: MACRO( ... )
 */
#elif defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define file_stream_vfprintf \
	vfprintf

#elif defined( HAVE_VFPRINTF ) || defined( WINAPI )
#define file_stream_vfprintf( stream, format, ... ) \
	vfprintf( stream, format, __VA_ARGS__ )
#endif

#if defined( __cplusplus )
}
#endif

#endif /* !defined( _FILE_STREAM_H ) */



================================================
FILE: common/memory.h
================================================
/*
 * Memory functions
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _MEMORY_H )
#define _MEMORY_H

#include "common.h"

#if defined( HAVE_GLIB_H )
#include <glib.h>
#endif

#if defined( HAVE_STDLIB_H ) || defined( WINAPI )
#include <stdlib.h>
#endif

#if defined( HAVE_STRING_H ) || defined( WINAPI )
#include <string.h>
#endif

#if defined( __cplusplus )
extern "C" {
#endif

/* Note that 128 MiB is an arbitrary selected upper limit here
 */
#define MEMORY_MAXIMUM_ALLOCATION_SIZE \
	( 128 * 1024 * 1024 )

/* Memory allocation
 */
#if defined( HAVE_GLIB_H )
#define memory_allocate( size ) \
	g_malloc( (gsize) size )

#elif defined( WINAPI )
#define memory_allocate( size ) \
	HeapAlloc( GetProcessHeap(), 0, (SIZE_T) size )

#elif defined( HAVE_MALLOC )
#define memory_allocate( size ) \
	malloc( size )
#endif

#define memory_allocate_structure( type ) \
	(type *) memory_allocate( sizeof( type ) )

#define memory_allocate_structure_as_value( type ) \
	(intptr_t *) memory_allocate( sizeof( type ) )

/* Memory reallocation
 */
#if defined( HAVE_GLIB_H )
#define memory_reallocate( buffer, size ) \
	g_realloc( (gpointer) buffer, (gsize) size )

#elif defined( WINAPI )
/* HeapReAlloc does not allocate empty (NULL) buffers as realloc does
 */
#define memory_reallocate( buffer, size ) \
	( buffer == NULL ) ? \
	HeapAlloc( GetProcessHeap(), 0, (SIZE_T) size ) : \
	HeapReAlloc( GetProcessHeap(), 0, (LPVOID) buffer, (SIZE_T) size )

#elif defined( HAVE_REALLOC )
#define memory_reallocate( buffer, size ) \
	realloc( (void *) buffer, size )
#endif

/* Memory free
 */
#if defined( HAVE_GLIB_H )
#define memory_free( buffer ) \
	g_free( (gpointer) buffer )

#elif defined( WINAPI )
#define memory_free( buffer ) \
	( buffer == NULL ) ? TRUE : HeapFree( GetProcessHeap(), 0, (LPVOID) buffer )

#elif defined( HAVE_FREE )
#define memory_free( buffer ) \
	free( (void *) buffer )
#endif

/* Memory compare
 */
#if defined( HAVE_MEMCMP ) || defined( WINAPI )
#define memory_compare( buffer1, buffer2, size ) \
	memcmp( (const void *) buffer1, (const void *) buffer2, size )
#endif

/* Memory copy
 */
#if defined( HAVE_MEMCPY ) || defined( WINAPI )
#define memory_copy( destination, source, count ) \
	memcpy( (void *) destination, (void *) source, count )
#endif

/* Memory set
 */
#if defined( HAVE_MEMSET ) || defined( WINAPI )
#define memory_set( buffer, value, count ) \
	memset( (void *) buffer, (int) value, count )
#endif

#if defined( __cplusplus )
}
#endif

#endif /* !defined( _MEMORY_H ) */



================================================
FILE: common/narrow_string.h
================================================
/*
 * Narrow character string functions
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _NARROW_STRING_H )
#define _NARROW_STRING_H

#include "common.h"
#include "memory.h"
#include "types.h"

#if defined( HAVE_GLIB_H )
#include <glib.h>
#endif

#if defined( HAVE_STDLIB_H ) || defined( WINAPI )
#include <stdlib.h>
#endif

#if defined( HAVE_STRING_H ) || defined( WINAPI )
#include <string.h>
#endif

#if defined( __cplusplus )
extern "C" {
#endif

/* String allocation
 */
#define narrow_string_allocate( size ) \
	(char *) memory_allocate( sizeof( char ) * ( size ) )

/* String reallocation
 */
#define narrow_string_reallocate( string, size ) \
	(char *) memory_reallocate( string, ( sizeof( char ) * ( size ) ) )

/* String length
 */
#if defined( HAVE_STRLEN ) || defined( WINAPI )
#define narrow_string_length( string ) \
	strlen( string )
#endif

/* String compare
 */
#if defined( HAVE_MEMCMP ) || defined( WINAPI )
#define narrow_string_compare( string1, string2, size ) \
	memcmp( (void *) string1, (void *) string2, size )

#elif defined( HAVE_STRNCMP )
#define narrow_string_compare( string1, string2, size ) \
	strncmp( string1, string2, size )
#endif

/* Caseless string compare
 */
#if defined( HAVE_GLIB_H )
#define narrow_string_compare_no_case( string1, string2, size ) \
	g_ascii_strncasecmp( string1, string2, size )

#elif defined( _MSC_VER )
#define narrow_string_compare_no_case( string1, string2, size ) \
	_strnicmp( string1, string2, size )

#elif ( defined( WINAPI ) && !defined( __CYGWIN__ ) ) || defined( HAVE_STRNICMP )
#define narrow_string_compare_no_case( string1, string2, size ) \
	strnicmp( string1, string2, size )

#elif defined( HAVE_STRNCASECMP )
#define narrow_string_compare_no_case( string1, string2, size ) \
	strncasecmp( string1, string2, size )

#elif defined( HAVE_STRCASECMP )
#define narrow_string_compare_no_case( string1, string2, size ) \
	strcasecmp( string1, string2 )
#endif

/* String copy
 */
#if defined( HAVE_MEMCPY ) || defined( WINAPI )
#define narrow_string_copy( destination, source, size ) \
	(char *) memcpy( (void *) destination, (void *) source, size )

#elif defined( HAVE_STRNCPY )
#define narrow_string_copy( destination, source, size ) \
	strncpy( destination, source, size )
#endif

/* String character search
 */
#if defined( HAVE_MEMCHR ) || defined( WINAPI )
#define narrow_string_search_character( string, character, size ) \
	(char *) memchr( (void *) string, (int) character, size )

#elif defined( HAVE_STRCHR )
#define narrow_string_search_character( string, character, size ) \
	strchr( string, (int) character )
#endif

/* String reverse character search
 */
#if defined( HAVE_MEMRCHR ) && ( HAVE_DECL_MEMRCHR == 1 )
#define narrow_string_search_character_reverse( string, character, size ) \
	(char *) memrchr( (void *) string, (int) character, size )

#elif defined( HAVE_STRRCHR ) || defined( WINAPI )
/* (void)(size) is used to suppress unused variable warnings */
#define narrow_string_search_character_reverse( string, character, size ) \
	strrchr( string, (int) character ); (void)(size)
#endif

/* String sub-string search
 */
#if defined( HAVE_STRSTR ) || defined( WINAPI )
#define narrow_string_search_string( string, substring, size ) \
	strstr( string, substring )
#endif

/* String formatted print (snprintf)
 */
#if defined( HAVE_GLIB_H )
#define narrow_string_snprintf( target, size, ... ) \
	g_snprintf( target, size, __VA_ARGS__ )

#elif defined( _MSC_VER )
#define narrow_string_snprintf( target, size, ... ) \
	sprintf_s( target, size, __VA_ARGS__ )

#elif defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define narrow_string_snprintf \
	snprintf

#elif defined( HAVE_SNPRINTF ) || defined( WINAPI )
#define narrow_string_snprintf( target, size, ... ) \
	snprintf( target, size, __VA_ARGS__ )
#endif

/* String input conversion (sscanf)
 */
#if defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define narrow_string_sscanf \
	sscanf

#elif defined( HAVE_SSCANF ) || defined( WINAPI )
#define narrow_string_sscanf( string, format, ... ) \
	sscanf( string, format, __VA_ARGS__ )
#endif

/* Variable arguments formatted print to string function (vsnprintf)
 */
#if defined( HAVE_GLIB_H )
#define narrow_string_vsnprintf( string, size, format, ... ) \
	g_vsnprintf( string, size, format, __VA_ARGS__ )

#elif defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define narrow_string_vsnprintf \
	vsnprintf

#elif defined( HAVE_VSNPRINTF ) || defined( WINAPI )
#define narrow_string_vsnprintf( string, size, format, ... ) \
	vsnprintf( string, size, format, __VA_ARGS__ )
#endif

#if defined( __cplusplus )
}
#endif

#endif /* !defined( _NARROW_STRING_H ) */



================================================
FILE: common/system_string.h
================================================
/*
 * System character string functions
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _SYSTEM_STRING_H )
#define _SYSTEM_STRING_H

#include "common.h"
#include "narrow_string.h"
#include "types.h"
#include "wide_string.h"

#if defined( _cplusplus )
extern "C" {
#endif

#if defined( HAVE_WIDE_SYSTEM_CHARACTER )

#if SIZEOF_WCHAR_T != 2
#error Unsupported wide system character size
#endif

/* Intermediate version of the macro required
 * for correct evaluation predefined string
 */
#define _SYSTEM_STRING_INTERMEDIATE( string ) \
	L ## string

#define _SYSTEM_STRING( string ) \
	_SYSTEM_STRING_INTERMEDIATE( string )

#define system_string_allocate( size ) \
	wide_string_allocate( size )

#define system_string_reallocate( string, size ) \
	wide_string_reallocate( string, size )

#define system_string_compare( destination, source, size ) \
	wide_string_compare( destination, source, size )

#define system_string_compare_no_case( destination, source, size ) \
	wide_string_compare_no_case( destination, source, size )

#define system_string_copy( destination, source, size ) \
	wide_string_copy( destination, source, size )

#define system_string_length( string ) \
	wide_string_length( string )

#define system_string_search_character( string, character, size ) \
	wide_string_search_character( string, character, size )

#define system_string_search_character_reverse( string, character, size ) \
	wide_string_search_character_reverse( string, character, size )

#define system_string_search_string( string, substring, size ) \
	wide_string_search_string( string, substring, size )

#if defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define system_string_sprintf \
	wide_string_snwprintf

#else
#define system_string_sprintf( string, size, format, ... ) \
	wide_string_snwprintf( string, size, format, __VA_ARGS__ )
#endif

#if defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define system_string_vsnprintf \
	wide_string_vsnwprintf

#else
#define system_string_vsnprintf( string, size, format, ... ) \
	wide_string_vsnwprintf( string, size, format, __VA_ARGS__ )
#endif

#else

#define _SYSTEM_STRING( string ) \
	string

#define system_string_allocate( size ) \
	narrow_string_allocate( size )

#define system_string_reallocate( string, size ) \
	narrow_string_reallocate( string, size )

#define system_string_compare( destination, source, size ) \
	narrow_string_compare( destination, source, size )

#define system_string_compare_no_case( destination, source, size ) \
	narrow_string_compare_no_case( destination, source, size )

#define system_string_copy( destination, source, size ) \
	narrow_string_copy( destination, source, size )

#define system_string_length( string ) \
	narrow_string_length( string )

#define system_string_search_character( string, character, size ) \
	narrow_string_search_character( string, character, size )

#define system_string_search_character_reverse( string, character, size ) \
	narrow_string_search_character_reverse( string, character, size )

#define system_string_search_string( string, substring, size ) \
	narrow_string_search_string( string, substring, size )

#if defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define system_string_sprintf \
	narrow_string_snprintf

#else
#define system_string_sprintf( string, size, format, ... ) \
	narrow_string_snprintf( string, size, format, __VA_ARGS__ )
#endif

#if defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define system_string_vsnprintf \
	narrow_string_vsnprintf

#else
#define system_string_vsnprintf( string, size, format, ... ) \
	narrow_string_vsnprintf( string, size, format, __VA_ARGS__ )
#endif

#endif /* defined( HAVE_WIDE_SYSTEM_CHARACTER ) */

/* For backwards compatibility */
#define system_string_vsprintf system_string_vsnprintf

#if defined( _cplusplus )
}
#endif

#endif /* !defined( _SYSTEM_STRING_H ) */



================================================
FILE: common/types.h.in
================================================
/*
 * Type and type-support definitions
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _TYPES_H )
#define _TYPES_H

#include "common.h"

#if defined( HAVE_LIMITS_H ) || defined( WINAPI )
#include <limits.h>
#endif

/* Make sure to include inttypes.h or stdint.h before
 * PRI definitions are defined
 */
#include <@PACKAGE@/types.h>

#if defined( WINAPI ) && ( defined( _UNICODE ) || defined( UNICODE ) )

#define HAVE_WIDE_SYSTEM_CHARACTER 1

/* The system character type is wide
 * A system string contains either UTF-16 or UTF-32
 */
typedef wchar_t system_character_t;
typedef wint_t system_integer_t;

#define PRIc_SYSTEM "lc"
#define PRIs_SYSTEM "ls"

#else

/* The system character type is narrow
 * A system string contains either UTF-8 or extended ASCII with a codepage
 */
typedef char system_character_t;
typedef int system_integer_t;

#define PRIc_SYSTEM "c"
#define PRIs_SYSTEM "s"

#endif /* defined( WINAPI ) && ( defined( _UNICODE ) || defined( UNICODE ) ) */

/* Fallback for systems without PRI definitions
 * Do not define when pyconfig.h has been included via python.h
 */
#if !defined( HAVE_PYCONFIG_H )

#if !defined( PRId8 )
#define PRId8 "d"
#endif

#if !defined( PRId16 )
#define PRId16 "d"
#endif

#if !defined( PRId32 )
#if defined( WINAPI )
#define PRId32 "I32d"

#else
#define PRId32 "d"

#endif
#endif /* !defined( PRId32 ) */

#if !defined( PRId64 )
#if defined( WINAPI )
#define PRId64 "I64d"

#elif __WORDSIZE == 64
#define PRId64 "ld"

#else
#define PRId64 "lld"

#endif
#endif /* !defined( PRId64 ) */

#if !defined( PRIi8 )
#define PRIi8 "i"
#endif

#if !defined( PRIi16 )
#define PRIi16 "i"
#endif

#if !defined( PRIi32 )
#if defined( WINAPI )
#define PRIi32 "I32i"

#else
#define PRIi32 "i"

#endif
#endif /* !defined( PRIi32 ) */

#if !defined( PRIi64 )
#if defined( WINAPI )
#define PRIi64 "I64i"

#elif __WORDSIZE == 64
#define PRIi64 "li"

#else
#define PRIi64 "lli"

#endif
#endif /* !defined( PRIi64 ) */

#if !defined( PRIu8 )
#define PRIu8 "u"
#endif

#if !defined( PRIu16 )
#define PRIu16 "u"
#endif

#if !defined( PRIu32 )
#if defined( WINAPI )
#define PRIu32 "I32u"

#else
#define PRIu32 "u"

#endif
#endif /* !defined( PRIu32 ) */

#if !defined( PRIu64 )
#if defined( WINAPI )
#define PRIu64 "I64u"

#elif __WORDSIZE == 64
#define PRIu64 "lu"

#else
#define PRIu64 "llu"

#endif
#endif /* !defined( PRIu64 ) */

#if !defined( PRIo8 )
#define PRIo8 "o"
#endif

#if !defined( PRIo16 )
#define PRIo16 "o"
#endif

#if !defined( PRIo32 )
#if defined( WINAPI )
#define PRIo32 "I32o"

#else
#define PRIo32 "o"

#endif
#endif /* !defined( PRIo32 ) */

#if !defined( PRIo64 )
#if defined( WINAPI )
#define PRIo64 "I64o"

#elif __WORDSIZE == 64
#define PRIo64 "lo"

#else
#define PRIo64 "llo"

#endif
#endif /* !defined( PRIo64 ) */

#if !defined( PRIx8 )
#define PRIx8 "x"
#endif

#if !defined( PRIx16 )
#define PRIx16 "x"
#endif

#if !defined( PRIx32 )
#if defined( WINAPI )
#define PRIx32 "I32x"

#else
#define PRIx32 "x"

#endif
#endif /* !defined( PRIx32 ) */

#if !defined( PRIx64 )
#if defined( WINAPI )
#define PRIx64 "I64x"

#elif __WORDSIZE == 64
#define PRIx64 "lx"

#else
#define PRIx64 "llx"

#endif
#endif /* !defined( PRIx64 ) */

#endif /* !defined( HAVE_PYCONFIG_H ) */

/* Fallback for systems without printf %jd definition
 */
#if defined( HAVE_PRINTF_JD )
#define PRIjd	"jd"
#define PRIji	"ji"
#define PRIju	"ju"
#define PRIjx	"jx"

#elif SIZEOF_OFF_T == 8
#define PRIjd	PRId64
#define PRIji	PRIi64
#define PRIju	PRIu64
#define PRIjx	PRIx64

#else
#define PRIjd	PRId32
#define PRIji	PRIi32
#define PRIju	PRIu32
#define PRIjx	PRIx32

#endif /* defined( HAVE_PRINTF_JD ) */

/* Fallback for systems without printf %zd definition
 */
#if defined( HAVE_PRINTF_ZD )
#define PRIzd	"zd"
#define PRIzi	"zi"
#define PRIzu	"zu"
#define PRIzx	"zx"

#elif defined( _MSC_VER )
#define PRIzd	"Id"
#define PRIzi	"Ii"
#define PRIzu	"Iu"
#define PRIzx	"Ix"

#elif SIZEOF_SIZE_T == 8
#define PRIzd	PRId64
#define PRIzi	PRIi64
#define PRIzu	PRIu64
#define PRIzx	PRIx64

#else
#define PRIzd	PRId32
#define PRIzi	PRIi32
#define PRIzu	PRIu32
#define PRIzx	PRIx32

#endif /* defined( HAVE_PRINTF_ZD ) */

/* Fallback for systems without (U)INTx_MAX definitions
 */

/* The maximum signed 8-bit integer is 127 (0x7f)
 */
#if !defined( INT8_MAX )
#define INT8_MAX (0x7f)
#endif

/* The maximum unsigned 8-bit integer is 256 (0xff)
 */
#if !defined( UINT8_MAX )
#define UINT8_MAX (0xff)
#endif

/* The maximum signed 16-bit integer is 32767 (0x7ffff)
 */
#if !defined( INT16_MAX )
#define INT16_MAX (0x7fff)
#endif

/* The maximum unsigned 16-bit integer is 65535 (0xffff)
 */
#if !defined( UINT16_MAX )
#define UINT16_MAX (0xffff)
#endif

/* The maximum signed 32-bit integer is 2147483647 (0x7fffffff)
 */
#if !defined( INT32_MAX )
#define INT32_MAX (0x7fffffffL)
#endif

/* The maximum unsigned 32-bit integer is 4294967295 (0xffffffff)
 */
#if !defined( UINT32_MAX )
#define UINT32_MAX (0xffffffffUL)
#endif

/* The minimum signed 64-bit integer is -9223372036854775808 (0x8000000000000000)
 */
#if !defined( INT64_MIN )
#if defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define INT64_MIN (0x8000000000000000UL)
#else
#define INT64_MIN (0x8000000000000000ULL)
#endif
#endif /* !defined( INT64_MIN ) */

/* The maximum signed 64-bit integer is 9223372036854775807 (0x7fffffffffffffff)
 */
#if !defined( INT64_MAX )
#if defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define INT64_MAX (0x7fffffffffffffffUL)
#else
#define INT64_MAX (0x7fffffffffffffffULL)
#endif
#endif /* !defined( INT64_MAX ) */

/* The maximum unsigned 64-bit integer is 18446744073709551615 (0xffffffffffffffff)
 */
#if !defined( UINT64_MAX )
#if defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define UINT64_MAX (0xffffffffffffffffUL)
#else
#define UINT64_MAX (0xffffffffffffffffULL)
#endif
#endif /* !defined( UINT64_MAX ) */

/* The maximum signed integer
 */
#if !defined( INT_MAX )
#define INT_MAX INT32_MAX
#endif

/* The maximum unsigned integer
 */
#if !defined( UINT_MAX )
#define UINT_MAX UINT32_MAX
#endif

/* The maximum signed long integer
 */
#if !defined( LONG_MAX )
#define LONG_MAX INT32_MAX
#endif

/* The maximum unsigned long integer
 */
#if !defined( ULONG_MAX )
#define ULONG_MAX UINT32_MAX
#endif

/* The maximum signed size type is platform dependent
 */
#if !defined( SSIZE_MAX )

#if defined( WINAPI )

#if defined( _WIN64 )
#define SSIZE_MAX INT64_MAX
#else
#define SSIZE_MAX INT32_MAX
#endif

#else

#if __WORDSIZE == 64
#define SSIZE_MAX INT64_MAX
#else
#define SSIZE_MAX INT32_MAX
#endif

#endif /* WINAPI */

#endif /* SSIZE_MAX */

#endif /* !defined( _TYPES_H ) */



================================================
FILE: common/wide_string.h
================================================
/*
 * Wide character string functions
 *
 * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>
 *
 * Refer to AUTHORS for acknowledgements.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#if !defined( _WIDE_STRING_H )
#define _WIDE_STRING_H

#include "common.h"
#include "memory.h"
#include "types.h"

#if defined( HAVE_WCHAR_H ) || defined( WINAPI )
#include <wchar.h>
#endif

#if defined( __cplusplus )
extern "C" {
#endif

/* Intermediate version of the macro required
 * for correct evaluation predefined string
 */
#define _WIDE_STRING_INTERMEDIATE( string ) \
	L ## string

#define _WIDE_STRING( string ) \
	_WIDE_STRING_INTERMEDIATE( string )

/* String allocation
 */
#define wide_string_allocate( size ) \
	(wchar_t *) memory_allocate( sizeof( wchar_t ) * ( size ) )

/* String reallocation
 */
#define wide_string_reallocate( string, size ) \
	(wchar_t *) memory_reallocate( string, ( sizeof( wchar_t ) * ( size ) ) )

/* String length
 */
#if defined( HAVE_WCSLEN ) || defined( WINAPI )
#define wide_string_length( string ) \
	wcslen( string )
#endif

/* String compare
 */
#if defined( HAVE_WMEMCMP )
#define wide_string_compare( string1, string2, size ) \
	wmemcmp( (void *) string1, (void *) string2, size )

#elif defined( HAVE_WCSNCMP ) || defined( WINAPI )
#define wide_string_compare( string1, string2, size ) \
	wcsncmp( string1, string2, size )
#endif

/* Caseless string compare
 */
#if defined( _MSC_VER ) || ( defined( __BORLANDC__ ) && ( __BORLANDC__ >= 0x0551 ) )
#define wide_string_compare_no_case( string1, string2, size ) \
	_wcsnicmp( string1, string2, size )

#elif ( defined( WINAPI ) && !defined( __CYGWIN__ ) ) || defined( HAVE_WCSNICMP )
#define wide_string_compare_no_case( string1, string2, size ) \
	wcsnicmp( string1, string2, size )

#elif defined( HAVE_WCSNCASECMP )
#define wide_string_compare_no_case( string1, string2, size ) \
	wcsncasecmp( string1, string2, size )

#elif defined( HAVE_WCSCASECMP )
#define wide_string_compare_no_case( string1, string2, size ) \
	wcscasecmp( string1, string2 )
#endif

/* String copy
 */
#if defined( HAVE_WMEMCPY )
#define wide_string_copy( destination, source, size ) \
	(wchar_t *) wmemcpy( (void *) destination, (void *) source, size )

#elif defined( HAVE_WCSNCPY ) || defined( WINAPI )
#define wide_string_copy( destination, source, size ) \
	wcsncpy( destination, source, size )
#endif

/* String character search
 */
#if defined( HAVE_WMEMCHR )
#define wide_string_search_character( string, character, size ) \
	(wchar_t *) wmemchr( (void *) string, (wchar_t) character, size )

#elif defined( HAVE_WCSCHR ) || defined( WINAPI )
#define wide_string_search_character( string, character, size ) \
	wcschr( string, (wchar_t) character )

#endif

/* String reverse character search
 */
#if defined( HAVE_WMEMRCHR )
#define wide_string_search_character_reverse( string, character, size ) \
	(wchar_t *) wmemrchr( (void *) string, (wchar_t) character, size )

#elif defined( HAVE_WCSRCHR ) || defined( WINAPI )
/* (void)(size) is used to suppress unused variable warnings */
#define wide_string_search_character_reverse( string, character, size ) \
	wcsrchr( string, (wchar_t) character ); (void)(size)
#endif

/* String sub-string search
 */
#if defined( HAVE_WCSSTR ) || defined( WINAPI )
#define wide_string_search_string( string, substring, size ) \
	wcsstr( string, substring )

#endif

/* String formatted print (snwprintf)
 */
#if defined( _MSC_VER )
#define wide_string_snwprintf( target, size, ... ) \
	swprintf_s( target, size, __VA_ARGS__ )

#elif defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define wide_string_snwprintf \
	snwprintf

#elif defined( WINAPI )
#define wide_string_snwprintf( target, size, ... ) \
	snwprintf( target, size, __VA_ARGS__ )

#elif defined( HAVE_SWPRINTF )
#define wide_string_snwprintf( target, size, ... ) \
	swprintf( target, size, __VA_ARGS__ )
#endif

/* Variable arguments formatted print to string function (vsnwprintf)
 */
#if defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x0560 )
#define wide_string_vsnwprintf \
	_vsnwprintf

#elif defined( WINAPI )
#define wide_string_vsnwprintf( string, size, format, ... ) \
	_vsnwprintf( string, size, format, __VA_ARGS__ )

#elif defined( HAVE_VSWPRINTF )
#define wide_string_vsnwprintf( string, size, format, ... ) \
	vswprintf( string, size, format, __VA_ARGS__ )
#endif

#if defined( __cplusplus )
}
#endif

#endif /* !defined( _WIDE_STRING_H ) */



================================================
FILE: configure.ac
================================================
AC_PREREQ([2.71])

AC_INIT(
  [libfsntfs],
  [20260208],
  [joachim.metz@gmail.com])

AC_CONFIG_SRCDIR(
  [include/libfsntfs.h.in])

AM_INIT_AUTOMAKE([gnu 1.6 tar-ustar])
AM_EXTRA_RECURSIVE_TARGETS([sources splint])

AC_CONFIG_MACRO_DIR([m4])

dnl Check for host type
AC_CANONICAL_HOST

dnl Check for libtool DLL support
LT_INIT([win32-dll])

dnl Checks for programs
AC_PROG_CC
AC_PROG_GCC_TRADITIONAL
AC_PROG_CXX
AC_PROG_MAKE_SET
AC_PROG_INSTALL

dnl Check for libtool
AC_SUBST(LIBTOOL_DEPS)

dnl Check for pkg-config
AC_PATH_PROG(PKGCONFIG,[pkg-config])

dnl Support of internationalization (i18n)
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.21])

dnl Check for compiler language support
AC_C_CONST
AC_C_VOLATILE

dnl Check for large file support
AC_SYS_LARGEFILE

dnl Check if shared library support should be disabled
AX_COMMON_CHECK_DISABLE_SHARED_LIBS

dnl Check if tools should be build as static executables
AX_COMMON_CHECK_ENABLE_STATIC_EXECUTABLES

dnl Check if WINAPI support should be enabled
AX_COMMON_CHECK_ENABLE_WINAPI

dnl Check if wide character type should be enabled
AX_COMMON_CHECK_ENABLE_WIDE_CHARACTER_TYPE

dnl Check if verbose output should be enabled
AX_COMMON_CHECK_ENABLE_VERBOSE_OUTPUT

dnl Check if debug output should be enabled
AX_COMMON_CHECK_ENABLE_DEBUG_OUTPUT

dnl Check for type definitions
AX_TYPES_CHECK_LOCAL

dnl Check if common required headers and functions are available
AX_COMMON_CHECK_LOCAL

dnl Check if libcerror or required headers and functions are available
AX_LIBCERROR_CHECK_ENABLE

dnl Check if libcthreads or required headers and functions are available
AX_LIBCTHREADS_CHECK_ENABLE

dnl Check if libcdata or required headers and functions are available
AX_LIBCDATA_CHECK_ENABLE

dnl Check if libclocale or required headers and functions are available
AX_LIBCLOCALE_CHECK_ENABLE

dnl Check if libcnotify or required headers and functions are available
AX_LIBCNOTIFY_CHECK_ENABLE

dnl Check if libcsplit or required headers and functions are available
AX_LIBCSPLIT_CHECK_ENABLE

dnl Check if libuna or required headers and functions are available
AX_LIBUNA_CHECK_ENABLE

dnl Check if libcfile or required headers and functions are available
AX_LIBCFILE_CHECK_ENABLE

dnl Check if libcpath or required headers and functions are available
AX_LIBCPATH_CHECK_ENABLE

dnl Check if libbfio or required headers and functions are available
AX_LIBBFIO_CHECK_ENABLE

dnl Check if libfcache or required headers and functions are available
AX_LIBFCACHE_CHECK_ENABLE

dnl Check if libfdata or required headers and functions are available
AX_LIBFDATA_CHECK_ENABLE

dnl Check if libfdatetime or required headers and functions are available
AX_LIBFDATETIME_CHECK_ENABLE

dnl Check if libfguid or required headers and functions are available
AX_LIBFGUID_CHECK_ENABLE

dnl Check if libfwnt or required headers and functions are available
AX_LIBFWNT_CHECK_ENABLE

dnl Check if libfsntfs required headers and functions are available
AX_LIBFSNTFS_CHECK_LOCAL

dnl Check if libfsntfs Python bindings (pyfsntfs) required headers and functions are available
AX_PYTHON_CHECK_ENABLE

AS_IF(
  [test "x${ac_cv_enable_python}" != xno],
  [dnl Headers included in pyfsntfs/pyfsntfs_error.c
  AC_CHECK_HEADERS([stdarg.h varargs.h])

  AS_IF(
    [test "x$ac_cv_header_stdarg_h" != xyes && test "x$ac_cv_header_varargs_h" != xyes],
    [AC_MSG_FAILURE(
      [Missing headers: stdarg.h and varargs.h],
      [1])
    ])
  ])

dnl Check if libfusn or required headers and functions are available
AX_LIBFUSN_CHECK_ENABLE

dnl Check if libhmac or required headers and functions are available
AX_LIBHMAC_CHECK_ENABLE

dnl Check if libfuse or required headers and functions are available
AX_LIBFUSE_CHECK_ENABLE

dnl Check if fsntfstools required headers and functions are available
AX_FSNTFSTOOLS_CHECK_LOCAL

dnl Check if DLL support is needed
AX_LIBFSNTFS_CHECK_DLL_SUPPORT

dnl Check if tests required headers and functions are available
AX_TESTS_CHECK_LOCAL
AX_TESTS_CHECK_OSSFUZZ

dnl Set additional compiler flags
CFLAGS="$CFLAGS -Wall";

dnl Check if requires and build requires should be set in spec file
AS_IF(
  [test "x$ac_cv_libcerror" = xyes || test "x$ac_cv_libcthreads" = xyes || test "x$ac_cv_libcdata" = xyes || test "x$ac_cv_libclocale" = xyes || test "x$ac_cv_libcnotify" = xyes || test "x$ac_cv_libcsplit" = xyes || test "x$ac_cv_libuna" = xyes || test "x$ac_cv_libcfile" = xyes || test "x$ac_cv_libcpath" = xyes || test "x$ac_cv_libbfio" = xyes || test "x$ac_cv_libfcache" = xyes || test "x$ac_cv_libfdata" = xyes || test "x$ac_cv_libfdatetime" = xyes || test "x$ac_cv_libfguid" = xyes || test "x$ac_cv_libfwnt" = xyes],
  [AC_SUBST(
    [libfsntfs_spec_requires],
    [Requires:])
  ])

AS_IF(
  [test "x$ac_cv_libfusn" = xyes || test "x$ac_cv_libhmac" = xyes || test "x$ac_cv_libcrypto" != xno || test "x$ac_cv_libfuse" != xno],
  [AC_SUBST(
    [libfsntfs_spec_tools_build_requires],
    [BuildRequires:])
  ])

dnl Set the date for the dpkg files
AC_SUBST(
  [DPKG_DATE],
  [`date -R 2> /dev/null`])

dnl Set the date for the spec file
AC_SUBST(
  [SPEC_DATE],
  [`date +"%a %b %e %Y" 2> /dev/null`])

dnl Generate Makefiles
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([include/Makefile])
AC_CONFIG_FILES([common/Makefile])
AC_CONFIG_FILES([libcerror/Makefile])
AC_CONFIG_FILES([libcthreads/Makefile])
AC_CONFIG_FILES([libcdata/Makefile])
AC_CONFIG_FILES([libclocale/Makefile])
AC_CONFIG_FILES([libcnotify/Makefile])
AC_CONFIG_FILES([libcsplit/Makefile])
AC_CONFIG_FILES([libuna/Makefile])
AC_CONFIG_FILES([libcfile/Makefile])
AC_CONFIG_FILES([libcpath/Makefile])
AC_CONFIG_FILES([libbfio/Makefile])
AC_CONFIG_FILES([libfcache/Makefile])
AC_CONFIG_FILES([libfdata/Makefile])
AC_CONFIG_FILES([libfdatetime/Makefile])
AC_CONFIG_FILES([libfguid/Makefile])
AC_CONFIG_FILES([libfwnt/Makefile])
AC_CONFIG_FILES([libfsntfs/Makefile])
AC_CONFIG_FILES([pyfsntfs/Makefile])
AC_CONFIG_FILES([libfusn/Makefile])
AC_CONFIG_FILES([libhmac/Makefile])
AC_CONFIG_FILES([fsntfstools/Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_CONFIG_FILES([po/Makevars])
AC_CONFIG_FILES([manuals/Makefile])
AC_CONFIG_FILES([tests/Makefile])
AC_CONFIG_FILES([ossfuzz/Makefile])
AC_CONFIG_FILES([msvscpp/Makefile])
dnl Generate header files
AC_CONFIG_FILES([include/libfsntfs.h])
AC_CONFIG_FILES([include/libfsntfs/definitions.h])
AC_CONFIG_FILES([include/libfsntfs/features.h])
AC_CONFIG_FILES([include/libfsntfs/types.h])
AC_CONFIG_FILES([libfsntfs/libfsntfs_definitions.h])
dnl Generate distribution specific files
AC_CONFIG_FILES([common/types.h])
AC_CONFIG_FILES([dpkg/changelog])
AC_CONFIG_FILES([libfsntfs/libfsntfs.rc])
AC_CONFIG_FILES([libfsntfs.pc])
AC_CONFIG_FILES([libfsntfs.spec])
AC_CONFIG_FILES([setup.cfg])
dnl Generate a source configuration file
AC_CONFIG_HEADERS([common/config.h])

AC_OUTPUT

dnl Print a summary
AC_MSG_NOTICE([
Building:
   libcerror support:                           $ac_cv_libcerror
   libcthreads support:                         $ac_cv_libcthreads
   libcdata support:                            $ac_cv_libcdata
   libclocale support:                          $ac_cv_libclocale
   libcnotify support:                          $ac_cv_libcnotify
   libcsplit support:                           $ac_cv_libcsplit
   libuna support:                              $ac_cv_libuna
   libcfile support:                            $ac_cv_libcfile
   libcpath support:                            $ac_cv_libcpath
   libbfio support:                             $ac_cv_libbfio
   libfcache support:                           $ac_cv_libfcache
   libfdata support:                            $ac_cv_libfdata
   libfdatetime support:                        $ac_cv_libfdatetime
   libfguid support:                            $ac_cv_libfguid
   libfwnt support:                             $ac_cv_libfwnt
   libfusn support:                             $ac_cv_libfusn
   libhmac support:                             $ac_cv_libhmac
   MD5 support:                                 $ac_cv_libhmac_md5
   FUSE support:                                $ac_cv_libfuse

Features:
   Multi-threading support:                     $ac_cv_libcthreads_multi_threading
   Wide character type support:                 $ac_cv_enable_wide_character_type
   fsntfstools are build as static executables: $ac_cv_enable_static_executables
   Python (pyfsntfs) support:                   $ac_cv_enable_python
   Verbose output:                              $ac_cv_enable_verbose_output
   Debug output:                                $ac_cv_enable_debug_output
]);



================================================
FILE: documentation/New Technologies File System (NTFS).asciidoc
================================================
= New Technologies File System (NTFS)
Analysis of NTFS

:toc:
:toclevels: 4

:numbered!:
[abstract]
== Summary

NTFS is the primary file system for Microsoft Windows versions that are based
on Windows NT. This specification is based on publicly available work on the
format and was enhanced by analyzing test data.

This document is intended as a working document of the data format specification
for the libfsntfs project.

[preface]
== Document information

[cols="1,5"]
|===
| Author(s): | Joachim Metz <joachim.metz@gmail.com>
| Abstract: | This document contains information about the New Technologies File System (NTFS)
| Classification: | Public
| Keywords: | New Technologies File System, NTFS
|===

[preface]
== License

....
Copyright (C) 2009-2025, Joachim Metz <joachim.metz@gmail.com>.
Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.3 or any later version
published by the Free Software Foundation; with no Invariant Sections, no
Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included
in the section entitled "GNU Free Documentation License".
....

[preface]
== Revision history

[cols="1,1,1,5",options="header"]
|===
| Version | Author | Date | Comments
| 0.0.1 | J.B. Metz | August 2009 +
September 2010 +
October 2010 +
November 2010 +
December 2010 | Initial version, based on earlier notes.
| 0.0.2 | J.B. Metz | March 2011 | Additional information about multi data run MFT.
| 0.0.3 | J.B. Metz | May 2012 | Additional information.
| 0.0.4 | J.B. Metz | February 2014 | Additional information.
| 0.0.5 | J.B. Metz | July 2014 +
August 2014 | Textual changes and additional information.
| 0.0.6 | J.B. Metz | March 2015 | Additional information and switched to asciidoc format.
| 0.0.7 | J.B. Metz | May 2015 | Additional information.
| 0.0.8 | J.B. Metz | July 2015 | Textual changes.
| 0.0.9 | J.B. Metz | August 2015 | Additional information.
| 0.0.10 | J.B. Metz | August 2015 | Additional information regarding index and security descriptors.
| 0.0.11 | J.B. Metz | January 2016 | Additional information about common alternate data stream.
| 0.0.12 | J.B. Metz | January 2016 | Additional information about extended attributes.
| 0.0.13 | J.B. Metz | March 2016 | Small changes.
| 0.0.14 | J.B. Metz | April 2016 | Small changes.
| 0.0.15 | J.B. Metz | June 2018 | Corrected typos.
| 0.0.16 | J.B. Metz | January 2019 | Changes to format.
| 0.0.17 | J.B. Metz | August 2019 | Additional information regarding volumes created by Windows 10 (1903) and mkntfs.
| 0.0.18 | J.B. Metz | September 2019 | Additional information regarding Windows Overlay Filter (WOF) compressed data.
| 0.0.19 | J.B. Metz | November 2019 | Additional information regarding short file names.
| 0.0.20 | J.B. Metz | January 2020 | Additional information regarding $STANDARD_INFORMATION and $ATTRIBUTE_LIST attributes.
| 0.0.21 | J.B. Metz | April 2020 | Additional information regarding compressed data runs.
| 0.0.22 | J.B. Metz | May 2020 | Additional information regarding LZNT1 compressed block corruption scenarios.
| 0.0.23 | J.B. Metz | December 2020 | Additional information regarding reparse point tag values.
| 0.0.24 | J.B. Metz | October 2021 | Small changes.
| 0.0.25 | J.B. Metz | February 2022 | Additional information regarding index entry size.
| 0.0.26 | J.B. Metz | December 2022 | Additional information regarding $VOLUME_INFORMATION flags.
| 0.0.27 | J.B. Metz | July 2023 | Additional information file name UTF-16 strings.
| 0.0.28 | J.B. Metz | January 2025 | Textual changes.
|===

:numbered:
== Overview

NTFS is the primary file system for Microsoft Windows versions that are based
on Windows NT.

[yellow-background]*TODO describe relation to OS2 HPFS*

[cols="1,5",options="header"]
|===
| Characteristics | Description
| Byte order | little-endian
| Date and time values | FILETIME in UTC
| Character strings | ASCII strings are Single Byte Character (SBC) or Multi Byte Character (MBC) string stored with a codepage. Sometimes referred to as ANSI string representation. +
Though technically maybe incorrect, this document will use term (extended) ASCII string. +
Unicode strings are stored in UTF-16 little-endian without the byte order mark (BOM).
|===

=== Versions

There are multiple version of NTFS.

[cols="1,5",options="header"]
|===
| NTFS version | Remarks
| 1.0 | Introduced in Windows NT 3.1
| 1.1 | Introduced in Windows NT 3.5, also seen to be used by Windows NT 3.1
| 1.2 | Introduced in Windows NT 3.51
| 3.0 | Introduced in Windows 2000
| 3.1 | Introduced in Windows XP
|===

[yellow-background]*Need test images for version 1.0 and 1.1*

[NOTE]
The versions mentioned above are the version as used by NTFS. Another common
versioning schema uses the Windows version, e.g. NTFS 5.0 is the version of
NTFS used on Windows XP which is version 3.1 in schema mentioned above.

=== Test version

The following version of programs were used to test the information within this
document:

* Windows NT 3.1 (version 1.1)
* Windows NT4 (version 1.2)
* Windows 2000 (version 3.0)
* Windows XP SP3 (version 3.1)
* Windows 2003 (version 3.1)
* Windows Vista (version 3.1)
* Windows 2008 (version 3.1)
* Windows 7 (version 3.1)
* Windows 8 (version 3.1)
* Windows 10 (1809, 1903) (version 3.1)
* Windows 11 (21H2) (version 3.1)
* NTFS-3G

[NOTE]
Windows 10 (1809) has been observed to use NTFS version 1.2 for 64k cluster
block size.

== Terminology

=== Cluster

NTFS refers to it file system blocks as clusters. Note that these are not the
same as the physical clusters of a harddisk. For clarity these are referred to
as cluster blocks. In other sources they are also referred to as logical
clusters which are numbered globally (or absolute).

Typically the cluster block is 8 sectors (8 x 512 = 4096 bytes) in size.

=== Virtual cluster

The term virtual cluster refers to cluster blocks which are numbered locally
(or relative).

=== Long and short (file) name

In Windows terminology the name of a file (or directory) can either be short or
long. The short name is an equivalent of the filename in the (DOS) 8.3 format.
The long name is actual the (full) name of the file. The term long refers to
the aspect that the name is longer than the short variant. Because most
documentation refer to the (full) name as the long name, for clarity sake so
will this document.

== The volume

Everything on an NTFS volume is a file. There are two types of files:

* files that contain volume and file system metadata (referred to as metadata files);
* files that contain data (referred to as files).

=== The metadata files

NTFS uses the Master File Table (MFT) to store information about files and
directories. The MFT entries reference the different volume and file system
metadata. There are several predefined metadata files.

The following metadata files are predefined and use a fixed MFT entry index.

[cols="1,1,5",options="header"]
|===
| MFT entry index | Filename | Description
| 0 | $MFT | Master File Table
| 1 | $MFTMirr | Back up of the first 4 entries of the Master File Table
| 2 | $LogFile | Metadata transaction journal
| 3 | $Volume | Volume information
| 4 | $AttrDef | MFT entry attribute definitions
| 5 | . | Root directory
| 6 | $Bitmap | Cluster block allocation bitmap
| 7 | $Boot | Boot record (or boot code)
| 8 | $BadClus | Bad clusters
| 9 | $Quota | Quota information +
Last used in NTFS version 1.2
| 9 | $Secure | Security and access control information +
Introduced in NTFS version 3.0
| 10 | $UpCase | Table of uppercase characters used for ensuring case insensitivity in Windows and DOS name spaces.
| 11 | $Extend | A directory containing extended metadata files
| 12-15 | | [yellow-background]*Unknown (Reserved)* +
Marked as in use but empty
| 16-23 | | Unused +
Marked as unused
3+| _As of NTFS version 3.0_
| 24 | $Extend\$Quota | Quota information +
Was MFT entry 9 in Windows NT 4
| 25 | $Extend\$ObjId | Unique file identifiers for distributed link tracking
| 26 | $Extend\$Reparse | Backreferences to reparse points
3+| _As of Windows Vista_ ([yellow-background]*or server 2003?*) +
_Transactional NTFS metadata (See section: <<transactional_ntfs,Transactional NTFS (TxF)>>)_
| 27 | $Extend\$RmMetadata | Resource manager metadata directory
| 28 | $Extend\$RmMetadata\$Repair | Repair information
| 29 or 30 | $Extend\$RmMetadata\$TxfLog | Transactional NTFS (TxF) log metadata directory
| 30 or 31 | $Extend\$RmMetadata\$Txf | Transactional NTFS (TxF) metadata directory
| 31 or 32 | $Extend\$RmMetadata\$TxfLog\$Tops | TxF Old Page Stream (TOPS) file +
Used to store data that has been overwritten inside a currently active transaction
| 32 or 33 | $Extend\$RmMetadata\$TxfLog\$TxfLog.blf | Transactional NTFS (TxF) base log metadata file
3+| _As of Windows 10_
| 29 | $Extend\$Deleted | Temporary location for files that have an open handle but a request has been made to delete them
3+| _Common_
| | ... | A file or directory
|===

The following metadata files are predefined, however the MFT entry index is
commonly used but not fixed.

[cols="1,1,5",options="header"]
|===
| MFT entry index | Filename | Description
| | $Extend\$UsnJrnl | USN change journal +
See section: <<usn_change_journal,USN change journal>> +
[yellow-background]*Has this file been added in Windows XP SP3? Otherwise what are reasons for it to not be present?*
|===

== The volume header

The volume header is stored at the start of the volume (in the $Boot metadata
file) and contains:

* the volume signature
* the BIOS parameter block
* the boot loader

The volume header is 512 bytes in size and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | 3 | | Boot entry point +
Often contains: +
eb52   jmp 0x52 +
90       nop +
This is a jump instruction to the bootcode at offset 84 followed by a no-operation.
| 3 | 8 | "NTFS\x20\x20\x20\x20" | File system signature +
(Also known as OEM and/or dummy identifier) +
4+| _DOS version 2.0 BIOS parameter block (BPB)_
| 11 | 2 | | Bytes per sector +
Values supported by mkntfs: 256, 512, 1024, 2048 and 4096
| 13 | 1 | | Sectors per cluster block +
See below.
| 14 | 2 | 0x00 | [yellow-background]*Unknown (Reserved Sectors)* +
not used by NTFS and must be 0 `[MSDN]`
| 16 | 1 | 0x00 | Number of File Allocation Tables (FATs) +
not used by NTFS and must be 0 `[MSDN]`
| 17 | 2 | 0 | Root directory entries +
not used by NTFS and must be 0 `[MSDN]`
| 19 | 2 | | [yellow-background]*Unknown (Total number of sectors (16-bit))* +
[yellow-background]*Used if the total of number of sectors fits in 16-bit?*
| 21 | 1 | | Media descriptor +
See section: <<media_descriptor,Media descriptor>>
| 22 | 2 | 0x00 | Sectors Per File Allocation Table (FAT) +
not used by NTFS and must be 0 `[MSDN]`
4+| _DOS version 3.4 BIOS parameter block (BPB)_
| 24 | 2 | 0x3f | Sectors per track +
Not used by NTFS `[MSDN]`
| 26 | 2 | 0xff | Number of heads +
Not used by NTFS `[MSDN]`
| 28 | 4 | 0x3f | Number of hidden sectors +
Not used by NTFS `[MSDN]`
| 32 | 4 | 0x00 | [yellow-background]*Unknown (Total number of sectors (32-bit))* +
[yellow-background]*Used if the total of number of sectors fits in 32-bit?* +
Not used by NTFS must be 0 `[MSDN]`
4+| _NTFS version 8.0 BIOS parameter block (BPB) or extended BPB_ +
_Introduced in Windows NT version 3.1_
| 36 | 1 | 0x80 | [yellow-background]*Unknown (Disc unit number)* +
Not used by NTFS `[MSDN]`
| 37 | 1 | 0x00 | [yellow-background]*Unknown (Flags)* +
Not used by NTFS `[MSDN]`
| 38 | 1 | 0x80 | [yellow-background]*Unknown (BPB version signature byte)* +
Not used by NTFS `[MSDN]`
| 39 | 1 | 0x00 | [yellow-background]*Unknown (Reserved)* +
Not used by NTFS `[MSDN]`
| 40 | 8 | | Total number of sectors (64-bit)
| 48 | 8 | | Master File Table (MFT) cluster block number
| 56 | 8 | | Mirror MFT cluster block number
| 64 | 1 | | MFT entry size +
See below.
| 65 | 3 | | [yellow-background]*Unknown* +
Not used by NTFS `[MSDN]`
| 68 | 1 | | Index entry size +
See below.
| 69 | 3 | | [yellow-background]*Unknown* +
Not used by NTFS `[MSDN]`
| 72 | 8 | | NTFS volume serial number +
See below.
| 80 | 4 | 0x00 | Checksum +
not used by NTFS `[MSDN]`
4+|
| 84 | 426 | | Bootcode +
[yellow-background]*What is the exact end of the bootcode and are there no trailing values?*
| 510 | 2 | 0x55 0xaa | Sector signature
|===

The sectors per cluster block value as used by mkntfs is defined as following:

* Values 0 to 128 represent sizes of 0 to 128 sectors.
* Values 244 to 255 represent sizes of `2^(256-n)` sectors.
* Other values are unknown.

The MFT entry size and index entry size are defined as following:

* Values 0 to 127 represent sizes of 0 to 127 cluster blocks.
* Values 128 to 255 represent sizes of `2^(256-n)` bytes; or `2^(-n)` if considered as a signed byte.
* Other values are not considered valid.

The cluster block size can be determined as following:

....
cluster block size = bytes per sector x sectors per cluster block
....

[NOTE]
Different NTFS implementations support different cluster block sizes.

Known supported cluster block size:

[cols="1,1,5",options="header"]
|===
| Cluster block size | Bytes per sector | Supported by
| 256 | 256 | mkntfs
| 512 | 256 - 512 | mkntfs, ntfs3g, Windows
| 1024 | 256 - 1024 | mkntfs, ntfs3g, Windows
| 2048 | 256 - 2048 | mkntfs, ntfs3g, Windows
| 4096 | 256 - 4096 | mkntfs, ntfs3g, Windows
| 8192 | 256 - 4096 | mkntfs, ntfs3g, Windows
| 16K (16384) | 256 - 4096 | mkntfs, ntfs3g, Windows
| 32K (32768) | 256 - 4096 | mkntfs, ntfs3g, Windows
| 64K (65536) | 256 - 4096 | mkntfs, ntfs3g, Windows
| 128K (131072) | 256 - 4096 | mkntfs, ntfs3g, Windows 10 (1903)
| 256K (262144) | 256 - 4096 | mkntfs, ntfs3g, Windows 10 (1903)
| 512K (524288) | 256 - 4096 | mkntfs, ntfs3g, Windows 10 (1903)
| 1M (1048576) | 256 - 4096 | mkntfs, ntfs3g, Windows 10 (1903)
| 2M (2097152) | 512 - 4096 | mkntfs, ntfs3g, Windows 10 (1903)
|===

[NOTE]
Windows 10 (1903) requires the partition containing the NTFS file system to be
aligned with the cluster block size. For example for a cluster block size of 128k
the partition must 128 KiB aligned. The default partition partition alignment
appears to be 64 KiB.

[NOTE]
mkntfs restricts the cluster size to: bytes per sector >= cluster size > 4096 * bytes per sector

The MFT offset can be determined as following:

....
MFT offset = volume header offset
           + ( MFT cluster block number x Cluster block size )
....

Note that the lower 32-bit part of the NTFS volume serial number is the WINAPI
volume serial number. E.g. compare the output of:

....
fsutil fsinfo volumeinfo C:
fsutil fsinfo ntfsinfo C:
....

Often the volume will be smaller than the underlying partition. A (nearly
identical) backup of the volume header is stored in last sector of cluster
block, that follows the last cluster block of the volume. Often this is the 512
bytes after the last sector of the volume, but not necessarily. The backup
volume header is not included in the volume size.

=== BitLocker Drive Encryption (BDE)

BitLocker Drive Encryption (BDE) uses the file system signature: "-FVE-FS-".
Where FVE is an abbreviation of Full Volume Encryption.

The data structures of BDE on Windows Vista and 7 differ.

A Windows Vista BDE volume starts with:

....
eb 52 90 2d 46 56 45 26 46 53 2d
....

A Windows 7 BDE volume starts with:

....
eb 58 90 2d 46 56 45 26 46 53 2d
....

BDE is largely a stand-alone but has some integration with NTFS. For more
information about BDE see https://github.com/libyal/libbde/blob/main/documentation/BitLocker%20Drive%20Encryption%20(BDE)%20format.asciidoc[[LIBBDE\]].

=== Volume Shadow Snapshots (VSS)

Volume Shadow Snapshots (VSS) uses the GUID
3808876b-c176-4e48-b7ae-04046e6cc752 (stored in little-endian) to identify its
data. VSS is largely a stand-alone but has some integration with NTFS.

For more information about VSS see https://github.com/libyal/libvshadow/blob/main/documentation/Volume%20Shadow%20Snapshot%20(VSS)%20format.asciidoc[[LIBVSHADOW\]].

=== [[media_descriptor]]Media descriptor

[cols="1,1,5",options="header"]
|===
| Bit(s) | Identifier | Description
| 0 | | Sides: +
0 => single-sided +
1 => double-sided
| 1 | | Track size: +
0 => 9 sectors per track +
1 => 8 sectors per track
| 2 | | Density: +
0 => 80 tracks +
1 => 40 tracks
| 3 | | Type: +
0 => Fixed disc +
1 => Removable disc
| 4 – 7 | | Always set to 1
|===

=== The boot loader

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 512 | | | [yellow-background]*Windows NT (boot) loader* +
[yellow-background]*NTLDR/BOOTMGR*
|===

== The Master File Table (MFT)

The MFT consist of an array of MFT entries. The offset of the MFT table can be
found in the volume header and the size of the MFT is defined by the MFT entry
of the $MFT metadata file.

[NOTE]
The MFT can consists of multiple data ranges, defined by the data runs in the
$MFT metadata file.

=== MFT entry

Although the size of a MFT entry is defined in the volume header is commonly
1024 bytes in size and consists of:

* The MFT entry header
* The fix-up values
* An array of MFT attribute values
* Padding, which should contain 0-byte values

[NOTE]
The MFT entry can be filled entirely with 0-byte values. Seen in Windows XP
for MFT entry indexes 16 - 23.

==== MFT entry header

The MFT entry header (FILE_RECORD_SEGMENT_HEADER) is 42 or 48 bytes in size
and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
4+| _MULTI_SECTOR_HEADER_
| 0 | 4 | "BAAD" +
"FILE" | Signature
| 4 | 2 | | The fix-up values offset +
Contains an offset relative from the start of the MFT entry +
According to `[MSDN]` this value is the update sequence array offset
| 6 | 2 | | The number of fix-up values +
According to `[MSDN]` this value is the update sequence array size.
4+|
| 8 | 8 | | Metadata transaction journal sequence number +
Contains a $LogFile Sequence Number (LSN)
| 16 | 2 | | Sequence (number)
| 18 | 2 | | Reference (link) count
| 20 | 2 | | Attributes offset (or first attribute offset) +
Contains an offset relative from the start of the MFT entry
| 22 | 2 | | Entry flags +
See section: <<mft_entry_flags,MFT entry flags>>
| 24 | 4 | | Used entry size +
Contains the number of bytes of the MFT entry that are in use
| 28 | 4 | | Total entry size +
Contains the number of bytes of the MFT entry
[yellow-background]*Could this be used to store data larger than 1024 - header continuously?*
| 32 | 8 | | Base record file reference +
See section: <<file_reference,The file reference>>
| 40 | 2 | | First available attribute identifier
4+| _Version 3.0_
| 42 | 2 | | [yellow-background]*Unknown (wfixupPattern)*
| 44 | 4 | | [yellow-background]*Unknown*
4+| _Version 3.1_
| 42 | 2 | | [yellow-background]*Unknown (wfixupPattern)*
| 44 | 4 | | MFT entry index
|===

The base record file reference indicates if the MFT entry is used to store
additional attributes for another MFT entry, e.g. for attribute list attributes.

According to `[MSDN]` the sequence number is incremented each time that a file
record segment is freed; it is 0 if the segment is not used.

`[MSDN]` states that the update sequence array must end before the last USHORT
value in the first sector. It also claims the update sequence array size value
contains the number of bytes. It seems to be more likely to the number of words.

The "BAAD" signature presumably indicates a bad MFT entry. `[RUSSON05]` states
that during chkdsk, if NTFS finds a multi-sector item where the multi-sector
header does not match the values at the end of the sector, it marks the item as
"BAAD" and fill it with 0-byte values except for a fix-up value at the end of
the first sector. The "BAAD" signature has been seen to be used on Windows NT4
and XP.

In NT4 (version 1.2) the MFT entry is 42 bytes in size and the fix-up values
are stored at offset 42. This is likely where the field name wfixupPattern
originates from.

=== [[mft_entry_flags]]MFT entry flags

[cols="1,1,5",options="header"]
|===
| Value | Identifier | Description
| 0x0001 | FILE_RECORD_SEGMENT_IN_USE +
MFT_RECORD_IN_USE | In use
| 0x0002 | FILE_NAME_INDEX_PRESENT +
MFT_RECORD_IS_DIRECTORY | Has file name (or $I30) index +
When this flag is set the file entry represents a directory (that contains sub file entries)
| 0x0004 | MFT_RECORD_IN_EXTEND | [yellow-background]*Unknown* +
According to `[APPLE06]` this is set for all system files present in the $Extend directory
| 0x0008 | MFT_RECORD_IS_VIEW_INDEX | Is index +
When this flag is set the file entry represents an index +
According to `[APPLE06]` this is set for all indices other than $I30
|===

=== [[file_reference]]The file reference

The file reference (FILE_REFERENCE or MFT_SEGMENT_REFERENCE) is 8 bytes in size
and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | 6 | | MFT entry index +
Note that the index value in the MFT entry is only 32-bit in size.
| 6 | 2 | | Sequence number
|===

=== [[fix_up_values]]The fix-up values

The fix-up values are of variable size and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | 2 | | Fix-up placeholder value
| 2 | 2 x number of fix-up values | | Fix-up (original) value array
|===

On disk the last 2 bytes for each 512 bytes block is replaced by the fix-up
placeholder value. The original value is stored in the corresponding fix-up
(original) value array entry.

[NOTE]
There can be more fix-up values than the amount of sectors in the data.

See `[CARRIER05]` and/or `[RUSSON05]` for examples on applying the fix-up values.

=== MFT attribute

The MFT attribute consist of:

* the attribute header
* the attribute resident or non-resident data
* the <<attribute_name,attribute name>>
* [yellow-background]*unknown data likely alignment padding (4-byte alignment)*
* the attribute data runs or data
* alignment padding (8-byte alignment), can contain remnant data

==== MFT attribute header

The MFT attribute header (ATTRIBUTE_RECORD_HEADER) is 16 bytes in size and
consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | 4 | | Attribute type (or type code) +
See section: <<attribute_types,The attribute types>>
| 4 | 4 | | Size (or record length) +
The size of the attribute including the 8 bytes of the attribute type and size
| 8 | 1 | | Non-resident flag (or form code) +
0 => RESIDENT_FORM +
1 => NONRESIDENT_FORM
| 9 | 1 | | Name size (or name length) +
Contains the number of characters without the end-of-string character
| 10 | 2 | | Name offset +
Contains an offset relative from the start of the MFT attribute
| 12 | 2 | | Attribute data flags +
See section: <<mft_attribute_data_flags,MFT attribute data flags>>
| 14 | 2 | | Attribute identifier (or instance) +
[yellow-background]*An unique identifier to distinguish between attributes that contain segmented data.*
|===

===== Notes

[yellow-background]*Size (or record length) upper 2 bytes overloaded or remnant data?*

....
type					: 0x000000a0 ($INDEX_ALLOCATION)
size					: 458832 (0x70050)
non resident flag			: 0x01
name size				: 4
name offset				: 64
data flags				: 0x0000

identifier				: 4
....

===== [[mft_attribute_data_flags]]MFT attribute data flags

[cols="1,1,5",options="header"]
|===
| Value | Identifier | Description
| 0x0001 | | Is compressed
| | |
| 0x00ff | ATTRIBUTE_FLAG_COMPRESSION_MASK |
| | |
| 0x4000 | ATTRIBUTE_FLAG_ENCRYPTED | Is encrypted
| 0x8000 | ATTRIBUTE_FLAG_SPARSE | Is sparse
|===

[yellow-background]*Does 0x0001 indicate the LZNT1 compression method?
Do other values indicate other compression values?*

==== Resident MFT attribute

The resident MFT attribute data is present when the non-resident flag is not
set (0). The resident data is 8 bytes in size and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | 4 | | Data size (or value length)
| 4 | 2 | | Data offset (or value size) +
Contains an offset relative from the start of the MFT attribute
| 6 | 1 | | Indexed flag +
[yellow-background]*Only the lower bit is used, do the other bits have any significance?*
| 7 | 1 | 0x00 | Padding +
Contains an empty byte
|===

===== Notes

[yellow-background]*What meaning has ATTRIBUTE_FLAG_COMPRESSION_MASK in
$INDEX_ROOT attribute? The attribute data is uncompressed.*

Seen on Windows 10 (NTFS version 3.1)

....
type                                 : 0x00000090 ($INDEX_ROOT)
size                                 : 88
non resident flag                    : 0x00
name size                            : 4
name offset                          : 24
data flags                           : 0x0001
        Is compressed
....

==== Non-resident MFT attribute

The non-resident MFT attribute data is present when the non-resident flag is
set (1). The non-resident data is 48 or 56 bytes in size and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | 8 | | First (or lowest) Virtual Cluster Number (VCN) of the data
| 8 | 8 | | Last (or highest) Virtual Cluster Number (VCN) of the data +
[yellow-background]*Seen this value to be -1 in combination with data size of 0*
| 16 | 2 | | Data runs offset (or mappings pairs offset) +
Contains an offset relative from the start of the MFT attribute
| 18 | 2 | | Compression unit size +
Contains the compression unit size as `2^(n)` number of cluster blocks. +
This value is used for compressed data in the data runs. +
[yellow-background]*A value of 0 indicates the attribute data is uncompressed.?* +
[yellow-background]*Seen on XP, compressed MFT attribute data with compression unit size of 0.* +
[yellow-background]*So it looks more the default compression unit size (16 cluster blocks) should be used.*
| 20 | 4 | | Padding +
Contains zero-bytes
| 24 | 8 | | Allocated data size (or allocated length) +
Contains the allocated data size in number of bytes. +
This value is not valid if the first VCN is nonzero.
| 32 | 8 | | Data size (or file size) +
Contains the data size in number of bytes. +
This value is not valid if the first VCN is nonzero.
| 40 | 8 | | Valid data size (or valid data length) +
Contains the valid data size in number of bytes.
This value is not valid if the first VCN is nonzero.
4+| _If compression unit size > 0_
| 48 | 8 | | Total allocated size +
Contains the total allocated size in number of cluster blocks.
|===

[NOTE]
The total size of the data runs should be larger or equal to the data size.

[NOTE]
Windows will fill data ranges beyond the valid data size with 0-byte values.
The data size remains unchanged. This applies to compressed and uncompressed
data. If the first VCN is zero a valid data size of 0 represents a file
entirely filled with 0-byte values.

==== [[attribute_name]]Attribute name

The attribute name is of variable size and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | ... | | Name +
Contains an UTF-16 little-endian without end-of-string character
|===

==== Data runs

The data runs are stored in a variable size (data) runlist. This runlist
consists of runlist elements.

A runlist element is of variable size and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0.0  | 4 bits | | Number of cluster blocks value size +
Contains the number of bytes used to store the data run size
| 0.4 | 4 bits | | Cluster block number value size +
Contains the number of bytes used to store the data run size
| 1 | Size value size | | Data run number of cluster blocks +
Contains the number of cluster blocks
| ... | Cluster block number value size | | Data run cluster block number +
See below.
|===

The data run cluster block number is a singed value, where the MSB is the
singed bit, e.g. if the data run cluster block contains \'dbc8' it corresponds
to the 64-bit value 0xffffffffffffdbc8.

The first data run offset contains the absolute cluster block number where
successive data run offsets are relative to the last data run offset.

[NOTE]
The cluster block number byte size is the first nibble when reading the byte
stream, but here it is represented as the upper nibble of the first byte.

The last runlist element is an empty value size tuple; in other words a 0 byte.

[yellow-background]*Does a data run with a "number of cluster blocks value size"
of 0 represent this as well?*

The MFT attribute data flag (ATTRIBUTE_FLAG_SPARSE) indicates if the data
stream is sparse or not.

A sparse data run has a "cluster block number value size" 0, representing there
is no offset (cluster block number). A sparse data run should be filled with
0-byte values.

[NOTE]
Compressed files also define sparse data runs without setting the sparse flag.

[yellow-background]*TODO: what about data runs with a cluster block number
value size of 0 but without the necessary flags? Seen in ADS: $BadClus:$Bad.
Assuming for now the data run is sparse.*

The MFT attribute data flags (0x00ff) indicate if the data stream is compressed
or not. The currently known value for LZNT1 compression is 1.

[NOTE]
Windows 10 supports Windows Overlay Filter (WOF) compressed data, which stores
the LZXPRESS Huffman or LZX compressed data in alternate data stream named
WofCompressedData and links it to the default data stream using a reparse point.

The data is stored in compression unit blocks. A compression unit typically
consists of 16 cluster blocks. However the actual value is stored in the
non-resident MFT attribute. See <<compression,Compression>> for more
information on how to determine which data runs store the compressed and which
do not.

[NOTE]
Compression is supported upto NTFS file systems with a cluster block size of
4096 bytes or less.

The compression is specified on a pre attribute basis. Where an attribute
chain can consists of attribute with compressed and uncompressed attribute
data. [yellow-background]*Note that it is unknown if mixing compressed and
uncompressed attributes is supported by the Windows implementation.*

According to `[RUSSON05]` the size of the runlist is rounded up to the next
multitude of 4 bytes. The size of the trailing data can be even larger than 3
and are not always zero-bytes.

See `[CARRIER05]` and/or `[RUSSON05]` for examples on reading the runlist.

== The attributes

=== [[attribute_types]]The attribute types

Technically the attribute types are stored in the `$AttrDef` metadata file.
Also see section: <<attribute_definitions,The attribute definitions>>

[cols="1,1,5",options="header"]
|===
| Value | Identifier | Description
| 0x00000000 | | Unused
| 0x00000010 | $STANDARD_INFORMATION | Standard information
| 0x00000020 | $ATTRIBUTE_LIST | Attributes list
| 0x00000030 | $FILE_NAME | The file or directory name
| 0x00000040 | $VOLUME_VERSION | Volume version +
Removed in NTFS version 3.0
| 0x00000040 | $OBJECT_ID | Object identifier +
Introduced in NTFS version 3.0
| 0x00000050 | $SECURITY_DESCRIPTOR | Security descriptor
| 0x00000060 | $VOLUME_NAME | Volume name
| 0x00000070 | $VOLUME_INFORMATION | Volume information
| 0x00000080 | $DATA | Data stream
| 0x00000090 | $INDEX_ROOT | Index root
| 0x000000a0 | $INDEX_ALLOCATION | Index allocation
| 0x000000b0 | $BITMAP | Bitmap
| 0x000000c0 | $SYMBOLIC_LINK | Symbolic link +
Removed in NTFS version 3.0
| 0x000000c0 | $REPARSE_POINT | Reparse point +
Introduced in NTFS version 3.0
| 0x000000d0 | $EA_INFORMATION | (HPFS) extended attribute information
| 0x000000e0 | $EA | (HPFS) extended attribute
| 0x000000f0 | $PROPERTY_SET | Property set +
Removed in NTFS version 3.0
| 0x00000100 | $LOGGED_UTILITY_STREAM | Logged utility stream +
Introduced in NTFS version 3.0
| | |
| 0x00001000 | | First user defined attribute
| | |
| 0xffffffff | | End of attributes marker
|===

=== The standard information attribute

The standard information attribute ($STANDARD_INFORMATION) contains the basic
file entry metadata. It is stored as a resident MFT attribute.

The standard information data (STANDARD_INFORMATION) is either 48 or 72 bytes
in size and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | 8 | | Creation date and time +
Contains a FILETIME
| 8 | 8 | | Last modification date and time +
(Also referred to as last written date and time) +
Contains a FILETIME
| 16 | 8 | | MFT entry last modification date and time +
Contains a FILETIME
| 24 | 8 | | Last access date and time +
Contains a FILETIME
| 32 | 4 | | File attribute flags +
See section: <<file_attribute_flags,File attribute flags>>
| 36 | 4 | | [yellow-background]*Unknown (Maximum number of versions)* +
[yellow-background]*What does it contain and what is it used for?*
| 40 | 4 | | [yellow-background]*Unknown (Version number)* +
[yellow-background]*What does it contain and what is it used for?* +
[yellow-background]*On Windows 10 does a value of 1 indicate case-senstive folder?*
| 44 | 4 | | [yellow-background]*Unknown (Class identifier)* +
[yellow-background]*What does it contain and what is it used for?*
4+| _Introduced in NTFS version 3.0_
| 48 | 4 | | Owner identifier +
[yellow-background]*What does it contain and what is it used for?*
| 52 | 4 | | Security descriptor identifier +
Contains the entry number in the security ID index ($Secure:$SII) +
See section: <<access_control,Access Control>>
| 56 | 8 | | Quota charged +
[yellow-background]*What does it contain and what is it used for?* +
[yellow-background]*Does this value correspond to StorageReservedID in fsutil layout output?*
| 64 | 8 | | Update Sequence Number (USN) +
[yellow-background]*What does it contain and what is it used for?*
|===

[NOTE]
MFT entries without a $STANDARD_INFORMATION attribute but with other attributes,
such as $FILE_NAME, and an $I30 index have been observed.

=== The attribute list attribute

The attribute list attribute ($ATTRIBUTE_LIST) is a list of attributes in an
MFT entry. The attributes stored in the list are placeholders for other
attributes. Some of these attributes could not be stored in the MFT entry due
to space limitations. The attribute list attribute can be stored as either a
resident (for a small amount of data) and non-resident MFT attribute.

The attribute list data contains an array of attribute list entries and stored
as a continous stream accross one or more cluster blocks.

Note that MFT entry 0 also can contain an attribute list and allows to store
listed attributes beyond the first data run.

==== The attribute list entry

The attribute list entry consists of:

* the attribute list entry header
* the <<attribute_name,attribute name>>
* alignment padding (8-byte alignment), can contain remnant data

===== The attribute list entry header

The attribute list entry header (ATTRIBUTE_LIST_ENTRY) is 26 bytes in size and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | 4 | | Attribute type (or type code) +
See section: <<attribute_types,The attribute types>>
| 4 | 2 | | Size (or record length) +
The size of the attribute including the 6 bytes of the attribute type and size
| 6 | 1 | | Name size (or name length) +
Contains the number of characters without the end-of-string character
| 7 | 1 | | Name offset +
Contains an offset relative from the start of the attribute list entry
| 8 | 8 | | Data first (or lowest) VCN
| 16 | 8 | | File reference (or segment reference) +
The file reference to the MFT entry that contains (part of) the attribute data +
See section: <<file_reference,The file reference>>
| 24 | 2 | | Attribute identifier +
[yellow-background]*An unique identifier to distinguish between attributes that contain segmented data.*
|===

The data first VCN is used when the attribute data is stored. The attribute list
contains an attribute list entry for every cluster block. The corresponding
cluster block will contain an MFT attribute containing the attribute data. See
`[CARRIER05]` pages 365 and 366 for more information.

=== [[file_name_attribute]]The file name attribute

The file name attribute ($FILE_NAME) contains the basic file system
information, like the parent file entry, MAC times and filename. It is stored
as a resident MFT attribute.

The file name data (FILE_NAME) is of variable size and consists of:

[cols="1,1,1,5",options="header"]
|===
| Offset | Size | Value | Description
| 0 | 8 | 
Download .txt
gitextract_g0xxxb8w/

├── .codecov.yml
├── .github/
│   └── workflows/
│       ├── build.yml
│       ├── build_freebsd.yml
│       ├── build_macos.yml
│       ├── build_ossfuzz.yml
│       ├── build_shared.yml
│       └── build_wheel.yml
├── .gitignore
├── AUTHORS
├── COPYING
├── COPYING.LESSER
├── ChangeLog
├── Makefile.am
├── NEWS
├── README
├── acinclude.m4
├── appveyor.yml
├── autogen.ps1
├── autogen.sh
├── build.ps1
├── builddokan.ps1
├── common/
│   ├── Makefile.am
│   ├── byte_stream.h
│   ├── common.h
│   ├── config_borlandc.h
│   ├── config_msc.h
│   ├── config_winapi.h
│   ├── file_stream.h
│   ├── memory.h
│   ├── narrow_string.h
│   ├── system_string.h
│   ├── types.h.in
│   └── wide_string.h
├── configure.ac
├── documentation/
│   └── New Technologies File System (NTFS).asciidoc
├── dpkg/
│   ├── changelog.in
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── libfsntfs-dev.install
│   ├── libfsntfs-python3.install
│   ├── libfsntfs-tools.install
│   ├── libfsntfs.install
│   ├── rules
│   └── source/
│       └── format
├── fsntfstools/
│   ├── Makefile.am
│   ├── bodyfile.c
│   ├── bodyfile.h
│   ├── digest_hash.c
│   ├── digest_hash.h
│   ├── fsntfsinfo.c
│   ├── fsntfsmount.c
│   ├── fsntfstools_getopt.c
│   ├── fsntfstools_getopt.h
│   ├── fsntfstools_i18n.h
│   ├── fsntfstools_libbfio.h
│   ├── fsntfstools_libcerror.h
│   ├── fsntfstools_libclocale.h
│   ├── fsntfstools_libcnotify.h
│   ├── fsntfstools_libcpath.h
│   ├── fsntfstools_libfcache.h
│   ├── fsntfstools_libfdata.h
│   ├── fsntfstools_libfdatetime.h
│   ├── fsntfstools_libfguid.h
│   ├── fsntfstools_libfsntfs.h
│   ├── fsntfstools_libfusn.h
│   ├── fsntfstools_libfwnt.h
│   ├── fsntfstools_libhmac.h
│   ├── fsntfstools_libuna.h
│   ├── fsntfstools_output.c
│   ├── fsntfstools_output.h
│   ├── fsntfstools_signal.c
│   ├── fsntfstools_signal.h
│   ├── fsntfstools_unused.h
│   ├── info_handle.c
│   ├── info_handle.h
│   ├── mount_dokan.c
│   ├── mount_dokan.h
│   ├── mount_file_entry.c
│   ├── mount_file_entry.h
│   ├── mount_file_system.c
│   ├── mount_file_system.h
│   ├── mount_fuse.c
│   ├── mount_fuse.h
│   ├── mount_handle.c
│   ├── mount_handle.h
│   ├── mount_path_string.c
│   ├── mount_path_string.h
│   ├── path_string.c
│   └── path_string.h
├── include/
│   ├── Makefile.am
│   ├── libfsntfs/
│   │   ├── codepage.h
│   │   ├── definitions.h.in
│   │   ├── error.h
│   │   ├── extern.h
│   │   ├── features.h.in
│   │   └── types.h.in
│   └── libfsntfs.h.in
├── libfsntfs/
│   ├── Makefile.am
│   ├── fsntfs_file_name.h
│   ├── fsntfs_index.h
│   ├── fsntfs_logged_utility_stream.h
│   ├── fsntfs_mft_attribute.h
│   ├── fsntfs_mft_attribute_list.h
│   ├── fsntfs_mft_entry.h
│   ├── fsntfs_object_identifier.h
│   ├── fsntfs_reparse_point.h
│   ├── fsntfs_secure.h
│   ├── fsntfs_standard_information.h
│   ├── fsntfs_txf_data.h
│   ├── fsntfs_volume_header.h
│   ├── fsntfs_volume_information.h
│   ├── libfsntfs.c
│   ├── libfsntfs.rc.in
│   ├── libfsntfs_attribute.c
│   ├── libfsntfs_attribute.h
│   ├── libfsntfs_attribute_list_attribute.c
│   ├── libfsntfs_attribute_list_attribute.h
│   ├── libfsntfs_attribute_list_entry.c
│   ├── libfsntfs_attribute_list_entry.h
│   ├── libfsntfs_bitmap_values.c
│   ├── libfsntfs_bitmap_values.h
│   ├── libfsntfs_buffer_data_handle.c
│   ├── libfsntfs_buffer_data_handle.h
│   ├── libfsntfs_cluster_block.c
│   ├── libfsntfs_cluster_block.h
│   ├── libfsntfs_cluster_block_data.c
│   ├── libfsntfs_cluster_block_data.h
│   ├── libfsntfs_cluster_block_stream.c
│   ├── libfsntfs_cluster_block_stream.h
│   ├── libfsntfs_cluster_block_vector.c
│   ├── libfsntfs_cluster_block_vector.h
│   ├── libfsntfs_compressed_block.c
│   ├── libfsntfs_compressed_block.h
│   ├── libfsntfs_compressed_block_data_handle.c
│   ├── libfsntfs_compressed_block_data_handle.h
│   ├── libfsntfs_compressed_block_vector.c
│   ├── libfsntfs_compressed_block_vector.h
│   ├── libfsntfs_compressed_data_handle.c
│   ├── libfsntfs_compressed_data_handle.h
│   ├── libfsntfs_compression.c
│   ├── libfsntfs_compression.h
│   ├── libfsntfs_compression_unit_data_handle.c
│   ├── libfsntfs_compression_unit_data_handle.h
│   ├── libfsntfs_compression_unit_descriptor.c
│   ├── libfsntfs_compression_unit_descriptor.h
│   ├── libfsntfs_data_run.c
│   ├── libfsntfs_data_run.h
│   ├── libfsntfs_data_stream.c
│   ├── libfsntfs_data_stream.h
│   ├── libfsntfs_debug.c
│   ├── libfsntfs_debug.h
│   ├── libfsntfs_definitions.h.in
│   ├── libfsntfs_directory_entries_tree.c
│   ├── libfsntfs_directory_entries_tree.h
│   ├── libfsntfs_directory_entry.c
│   ├── libfsntfs_directory_entry.h
│   ├── libfsntfs_error.c
│   ├── libfsntfs_error.h
│   ├── libfsntfs_extent.c
│   ├── libfsntfs_extent.h
│   ├── libfsntfs_extern.h
│   ├── libfsntfs_file_entry.c
│   ├── libfsntfs_file_entry.h
│   ├── libfsntfs_file_name_attribute.c
│   ├── libfsntfs_file_name_attribute.h
│   ├── libfsntfs_file_name_values.c
│   ├── libfsntfs_file_name_values.h
│   ├── libfsntfs_file_system.c
│   ├── libfsntfs_file_system.h
│   ├── libfsntfs_fixup_values.c
│   ├── libfsntfs_fixup_values.h
│   ├── libfsntfs_index.c
│   ├── libfsntfs_index.h
│   ├── libfsntfs_index_entry.c
│   ├── libfsntfs_index_entry.h
│   ├── libfsntfs_index_entry_header.c
│   ├── libfsntfs_index_entry_header.h
│   ├── libfsntfs_index_entry_vector.c
│   ├── libfsntfs_index_entry_vector.h
│   ├── libfsntfs_index_node.c
│   ├── libfsntfs_index_node.h
│   ├── libfsntfs_index_node_header.c
│   ├── libfsntfs_index_node_header.h
│   ├── libfsntfs_index_root_header.c
│   ├── libfsntfs_index_root_header.h
│   ├── libfsntfs_index_value.c
│   ├── libfsntfs_index_value.h
│   ├── libfsntfs_io_handle.c
│   ├── libfsntfs_io_handle.h
│   ├── libfsntfs_libbfio.h
│   ├── libfsntfs_libcdata.h
│   ├── libfsntfs_libcerror.h
│   ├── libfsntfs_libclocale.h
│   ├── libfsntfs_libcnotify.h
│   ├── libfsntfs_libcthreads.h
│   ├── libfsntfs_libfcache.h
│   ├── libfsntfs_libfdata.h
│   ├── libfsntfs_libfdatetime.h
│   ├── libfsntfs_libfguid.h
│   ├── libfsntfs_libfwnt.h
│   ├── libfsntfs_libuna.h
│   ├── libfsntfs_logged_utility_stream_values.c
│   ├── libfsntfs_logged_utility_stream_values.h
│   ├── libfsntfs_mft.c
│   ├── libfsntfs_mft.h
│   ├── libfsntfs_mft_attribute.c
│   ├── libfsntfs_mft_attribute.h
│   ├── libfsntfs_mft_attribute_list.c
│   ├── libfsntfs_mft_attribute_list.h
│   ├── libfsntfs_mft_attribute_list_entry.c
│   ├── libfsntfs_mft_attribute_list_entry.h
│   ├── libfsntfs_mft_entry.c
│   ├── libfsntfs_mft_entry.h
│   ├── libfsntfs_mft_entry_header.c
│   ├── libfsntfs_mft_entry_header.h
│   ├── libfsntfs_mft_metadata_file.c
│   ├── libfsntfs_mft_metadata_file.h
│   ├── libfsntfs_name.c
│   ├── libfsntfs_name.h
│   ├── libfsntfs_notify.c
│   ├── libfsntfs_notify.h
│   ├── libfsntfs_object_identifier_attribute.c
│   ├── libfsntfs_object_identifier_attribute.h
│   ├── libfsntfs_object_identifier_values.c
│   ├── libfsntfs_object_identifier_values.h
│   ├── libfsntfs_path_hint.c
│   ├── libfsntfs_path_hint.h
│   ├── libfsntfs_profiler.c
│   ├── libfsntfs_profiler.h
│   ├── libfsntfs_reparse_point_attribute.c
│   ├── libfsntfs_reparse_point_attribute.h
│   ├── libfsntfs_reparse_point_values.c
│   ├── libfsntfs_reparse_point_values.h
│   ├── libfsntfs_sds_index_value.c
│   ├── libfsntfs_sds_index_value.h
│   ├── libfsntfs_security_descriptor_attribute.c
│   ├── libfsntfs_security_descriptor_attribute.h
│   ├── libfsntfs_security_descriptor_index.c
│   ├── libfsntfs_security_descriptor_index.h
│   ├── libfsntfs_security_descriptor_index_value.c
│   ├── libfsntfs_security_descriptor_index_value.h
│   ├── libfsntfs_security_descriptor_values.c
│   ├── libfsntfs_security_descriptor_values.h
│   ├── libfsntfs_standard_information_attribute.c
│   ├── libfsntfs_standard_information_attribute.h
│   ├── libfsntfs_standard_information_values.c
│   ├── libfsntfs_standard_information_values.h
│   ├── libfsntfs_support.c
│   ├── libfsntfs_support.h
│   ├── libfsntfs_txf_data_values.c
│   ├── libfsntfs_txf_data_values.h
│   ├── libfsntfs_types.h
│   ├── libfsntfs_unused.h
│   ├── libfsntfs_usn_change_journal.c
│   ├── libfsntfs_usn_change_journal.h
│   ├── libfsntfs_volume.c
│   ├── libfsntfs_volume.h
│   ├── libfsntfs_volume_header.c
│   ├── libfsntfs_volume_header.h
│   ├── libfsntfs_volume_information_attribute.c
│   ├── libfsntfs_volume_information_attribute.h
│   ├── libfsntfs_volume_information_values.c
│   ├── libfsntfs_volume_information_values.h
│   ├── libfsntfs_volume_name_attribute.c
│   ├── libfsntfs_volume_name_attribute.h
│   ├── libfsntfs_volume_name_values.c
│   └── libfsntfs_volume_name_values.h
├── libfsntfs.ini
├── libfsntfs.nuspec
├── libfsntfs.pc.in
├── libfsntfs.spec.in
├── m4/
│   ├── common.m4
│   ├── libbfio.m4
│   ├── libcdata.m4
│   ├── libcerror.m4
│   ├── libcfile.m4
│   ├── libclocale.m4
│   ├── libcnotify.m4
│   ├── libcpath.m4
│   ├── libcrypto.m4
│   ├── libcsplit.m4
│   ├── libcthreads.m4
│   ├── libfcache.m4
│   ├── libfdata.m4
│   ├── libfdatetime.m4
│   ├── libfguid.m4
│   ├── libfuse.m4
│   ├── libfusn.m4
│   ├── libfwnt.m4
│   ├── libhmac.m4
│   ├── libuna.m4
│   ├── pthread.m4
│   ├── python.m4
│   ├── tests.m4
│   └── types.m4
├── manuals/
│   ├── Makefile.am
│   ├── fsntfsinfo.1
│   └── libfsntfs.3
├── msvscpp/
│   ├── Makefile.am
│   ├── fsntfs_test_attribute/
│   │   └── fsntfs_test_attribute.vcproj
│   ├── fsntfs_test_attribute_list_entry/
│   │   └── fsntfs_test_attribute_list_entry.vcproj
│   ├── fsntfs_test_bitmap_values/
│   │   └── fsntfs_test_bitmap_values.vcproj
│   ├── fsntfs_test_buffer_data_handle/
│   │   └── fsntfs_test_buffer_data_handle.vcproj
│   ├── fsntfs_test_cluster_block/
│   │   └── fsntfs_test_cluster_block.vcproj
│   ├── fsntfs_test_cluster_block_data/
│   │   └── fsntfs_test_cluster_block_data.vcproj
│   ├── fsntfs_test_cluster_block_stream/
│   │   └── fsntfs_test_cluster_block_stream.vcproj
│   ├── fsntfs_test_cluster_block_vector/
│   │   └── fsntfs_test_cluster_block_vector.vcproj
│   ├── fsntfs_test_compressed_block/
│   │   └── fsntfs_test_compressed_block.vcproj
│   ├── fsntfs_test_compressed_block_data_handle/
│   │   └── fsntfs_test_compressed_block_data_handle.vcproj
│   ├── fsntfs_test_compressed_block_vector/
│   │   └── fsntfs_test_compressed_block_vector.vcproj
│   ├── fsntfs_test_compressed_data_handle/
│   │   └── fsntfs_test_compressed_data_handle.vcproj
│   ├── fsntfs_test_compression/
│   │   └── fsntfs_test_compression.vcproj
│   ├── fsntfs_test_compression_unit_data_handle/
│   │   └── fsntfs_test_compression_unit_data_handle.vcproj
│   ├── fsntfs_test_compression_unit_descriptor/
│   │   └── fsntfs_test_compression_unit_descriptor.vcproj
│   ├── fsntfs_test_data_run/
│   │   └── fsntfs_test_data_run.vcproj
│   ├── fsntfs_test_data_stream/
│   │   └── fsntfs_test_data_stream.vcproj
│   ├── fsntfs_test_directory_entries_tree/
│   │   └── fsntfs_test_directory_entries_tree.vcproj
│   ├── fsntfs_test_directory_entry/
│   │   └── fsntfs_test_directory_entry.vcproj
│   ├── fsntfs_test_error/
│   │   └── fsntfs_test_error.vcproj
│   ├── fsntfs_test_extent/
│   │   └── fsntfs_test_extent.vcproj
│   ├── fsntfs_test_file_entry/
│   │   └── fsntfs_test_file_entry.vcproj
│   ├── fsntfs_test_file_name_attribute/
│   │   └── fsntfs_test_file_name_attribute.vcproj
│   ├── fsntfs_test_file_name_values/
│   │   └── fsntfs_test_file_name_values.vcproj
│   ├── fsntfs_test_file_system/
│   │   └── fsntfs_test_file_system.vcproj
│   ├── fsntfs_test_fixup_values/
│   │   └── fsntfs_test_fixup_values.vcproj
│   ├── fsntfs_test_index/
│   │   └── fsntfs_test_index.vcproj
│   ├── fsntfs_test_index_entry/
│   │   └── fsntfs_test_index_entry.vcproj
│   ├── fsntfs_test_index_entry_header/
│   │   └── fsntfs_test_index_entry_header.vcproj
│   ├── fsntfs_test_index_entry_vector/
│   │   └── fsntfs_test_index_entry_vector.vcproj
│   ├── fsntfs_test_index_node/
│   │   └── fsntfs_test_index_node.vcproj
│   ├── fsntfs_test_index_node_header/
│   │   └── fsntfs_test_index_node_header.vcproj
│   ├── fsntfs_test_index_root_header/
│   │   └── fsntfs_test_index_root_header.vcproj
│   ├── fsntfs_test_index_value/
│   │   └── fsntfs_test_index_value.vcproj
│   ├── fsntfs_test_io_handle/
│   │   └── fsntfs_test_io_handle.vcproj
│   ├── fsntfs_test_logged_utility_stream_values/
│   │   └── fsntfs_test_logged_utility_stream_values.vcproj
│   ├── fsntfs_test_mft/
│   │   └── fsntfs_test_mft.vcproj
│   ├── fsntfs_test_mft_attribute/
│   │   └── fsntfs_test_mft_attribute.vcproj
│   ├── fsntfs_test_mft_attribute_list/
│   │   └── fsntfs_test_mft_attribute_list.vcproj
│   ├── fsntfs_test_mft_attribute_list_entry/
│   │   └── fsntfs_test_mft_attribute_list_entry.vcproj
│   ├── fsntfs_test_mft_entry/
│   │   └── fsntfs_test_mft_entry.vcproj
│   ├── fsntfs_test_mft_entry_header/
│   │   └── fsntfs_test_mft_entry_header.vcproj
│   ├── fsntfs_test_mft_metadata_file/
│   │   └── fsntfs_test_mft_metadata_file.vcproj
│   ├── fsntfs_test_name/
│   │   └── fsntfs_test_name.vcproj
│   ├── fsntfs_test_notify/
│   │   └── fsntfs_test_notify.vcproj
│   ├── fsntfs_test_object_identifier_values/
│   │   └── fsntfs_test_object_identifier_values.vcproj
│   ├── fsntfs_test_path_hint/
│   │   └── fsntfs_test_path_hint.vcproj
│   ├── fsntfs_test_profiler/
│   │   └── fsntfs_test_profiler.vcproj
│   ├── fsntfs_test_reparse_point_attribute/
│   │   └── fsntfs_test_reparse_point_attribute.vcproj
│   ├── fsntfs_test_reparse_point_values/
│   │   └── fsntfs_test_reparse_point_values.vcproj
│   ├── fsntfs_test_sds_index_value/
│   │   └── fsntfs_test_sds_index_value.vcproj
│   ├── fsntfs_test_security_descriptor_index/
│   │   └── fsntfs_test_security_descriptor_index.vcproj
│   ├── fsntfs_test_security_descriptor_index_value/
│   │   └── fsntfs_test_security_descriptor_index_value.vcproj
│   ├── fsntfs_test_security_descriptor_values/
│   │   └── fsntfs_test_security_descriptor_values.vcproj
│   ├── fsntfs_test_standard_information_values/
│   │   └── fsntfs_test_standard_information_values.vcproj
│   ├── fsntfs_test_support/
│   │   └── fsntfs_test_support.vcproj
│   ├── fsntfs_test_tools_bodyfile/
│   │   └── fsntfs_test_tools_bodyfile.vcproj
│   ├── fsntfs_test_tools_digest_hash/
│   │   └── fsntfs_test_tools_digest_hash.vcproj
│   ├── fsntfs_test_tools_info_handle/
│   │   └── fsntfs_test_tools_info_handle.vcproj
│   ├── fsntfs_test_tools_mount_path_string/
│   │   └── fsntfs_test_tools_mount_path_string.vcproj
│   ├── fsntfs_test_tools_output/
│   │   └── fsntfs_test_tools_output.vcproj
│   ├── fsntfs_test_tools_path_string/
│   │   └── fsntfs_test_tools_path_string.vcproj
│   ├── fsntfs_test_tools_signal/
│   │   └── fsntfs_test_tools_signal.vcproj
│   ├── fsntfs_test_txf_data_values/
│   │   └── fsntfs_test_txf_data_values.vcproj
│   ├── fsntfs_test_usn_change_journal/
│   │   └── fsntfs_test_usn_change_journal.vcproj
│   ├── fsntfs_test_volume/
│   │   └── fsntfs_test_volume.vcproj
│   ├── fsntfs_test_volume_header/
│   │   └── fsntfs_test_volume_header.vcproj
│   ├── fsntfs_test_volume_information_attribute/
│   │   └── fsntfs_test_volume_information_attribute.vcproj
│   ├── fsntfs_test_volume_information_values/
│   │   └── fsntfs_test_volume_information_values.vcproj
│   ├── fsntfs_test_volume_name_attribute/
│   │   └── fsntfs_test_volume_name_attribute.vcproj
│   ├── fsntfs_test_volume_name_values/
│   │   └── fsntfs_test_volume_name_values.vcproj
│   ├── fsntfsinfo/
│   │   └── fsntfsinfo.vcproj
│   ├── fsntfsmount/
│   │   └── fsntfsmount.vcproj
│   ├── libbfio/
│   │   └── libbfio.vcproj
│   ├── libcdata/
│   │   └── libcdata.vcproj
│   ├── libcerror/
│   │   └── libcerror.vcproj
│   ├── libcfile/
│   │   └── libcfile.vcproj
│   ├── libclocale/
│   │   └── libclocale.vcproj
│   ├── libcnotify/
│   │   └── libcnotify.vcproj
│   ├── libcpath/
│   │   └── libcpath.vcproj
│   ├── libcsplit/
│   │   └── libcsplit.vcproj
│   ├── libcthreads/
│   │   └── libcthreads.vcproj
│   ├── libfcache/
│   │   └── libfcache.vcproj
│   ├── libfdata/
│   │   └── libfdata.vcproj
│   ├── libfdatetime/
│   │   └── libfdatetime.vcproj
│   ├── libfguid/
│   │   └── libfguid.vcproj
│   ├── libfsntfs/
│   │   └── libfsntfs.vcproj
│   ├── libfsntfs.sln
│   ├── libfusn/
│   │   └── libfusn.vcproj
│   ├── libfwnt/
│   │   └── libfwnt.vcproj
│   ├── libhmac/
│   │   └── libhmac.vcproj
│   ├── libuna/
│   │   └── libuna.vcproj
│   └── pyfsntfs/
│       └── pyfsntfs.vcproj
├── ossfuzz/
│   ├── Makefile.am
│   ├── file_entry_fuzzer.cc
│   ├── mft_metadata_file_fuzzer.cc
│   ├── ossfuzz_libbfio.h
│   ├── ossfuzz_libfsntfs.h
│   └── volume_fuzzer.cc
├── po/
│   ├── ChangeLog
│   ├── Makevars.in
│   └── POTFILES.in
├── pyfsntfs/
│   ├── Makefile.am
│   ├── pyfsntfs.c
│   ├── pyfsntfs.h
│   ├── pyfsntfs_attribute.c
│   ├── pyfsntfs_attribute.h
│   ├── pyfsntfs_attribute_types.c
│   ├── pyfsntfs_attribute_types.h
│   ├── pyfsntfs_attributes.c
│   ├── pyfsntfs_attributes.h
│   ├── pyfsntfs_data_stream.c
│   ├── pyfsntfs_data_stream.h
│   ├── pyfsntfs_data_streams.c
│   ├── pyfsntfs_data_streams.h
│   ├── pyfsntfs_datetime.c
│   ├── pyfsntfs_datetime.h
│   ├── pyfsntfs_error.c
│   ├── pyfsntfs_error.h
│   ├── pyfsntfs_file_attribute_flags.c
│   ├── pyfsntfs_file_attribute_flags.h
│   ├── pyfsntfs_file_entries.c
│   ├── pyfsntfs_file_entries.h
│   ├── pyfsntfs_file_entry.c
│   ├── pyfsntfs_file_entry.h
│   ├── pyfsntfs_file_name_attribute.c
│   ├── pyfsntfs_file_name_attribute.h
│   ├── pyfsntfs_file_object_io_handle.c
│   ├── pyfsntfs_file_object_io_handle.h
│   ├── pyfsntfs_guid.c
│   ├── pyfsntfs_guid.h
│   ├── pyfsntfs_integer.c
│   ├── pyfsntfs_integer.h
│   ├── pyfsntfs_libbfio.h
│   ├── pyfsntfs_libcerror.h
│   ├── pyfsntfs_libclocale.h
│   ├── pyfsntfs_libfguid.h
│   ├── pyfsntfs_libfsntfs.h
│   ├── pyfsntfs_libuna.h
│   ├── pyfsntfs_mft_metadata_file.c
│   ├── pyfsntfs_mft_metadata_file.h
│   ├── pyfsntfs_mft_metadata_file_entries.c
│   ├── pyfsntfs_mft_metadata_file_entries.h
│   ├── pyfsntfs_object_identifier_attribute.c
│   ├── pyfsntfs_object_identifier_attribute.h
│   ├── pyfsntfs_python.h
│   ├── pyfsntfs_reparse_point_attribute.c
│   ├── pyfsntfs_reparse_point_attribute.h
│   ├── pyfsntfs_security_descriptor_attribute.c
│   ├── pyfsntfs_security_descriptor_attribute.h
│   ├── pyfsntfs_standard_information_attribute.c
│   ├── pyfsntfs_standard_information_attribute.h
│   ├── pyfsntfs_string.c
│   ├── pyfsntfs_string.h
│   ├── pyfsntfs_unused.h
│   ├── pyfsntfs_usn_change_journal.c
│   ├── pyfsntfs_usn_change_journal.h
│   ├── pyfsntfs_volume.c
│   ├── pyfsntfs_volume.h
│   ├── pyfsntfs_volume_file_entries.c
│   ├── pyfsntfs_volume_file_entries.h
│   ├── pyfsntfs_volume_information_attribute.c
│   ├── pyfsntfs_volume_information_attribute.h
│   ├── pyfsntfs_volume_name_attribute.c
│   └── pyfsntfs_volume_name_attribute.h
├── pyproject.toml
├── runtests.ps1
├── runtests.sh
├── setup.cfg.in
├── setup.py
├── syncdokan.ps1
├── synclibs.ps1
├── synclibs.sh
├── synctestdata.ps1
├── synctestdata.sh
├── tests/
│   ├── Makefile.am
│   ├── build.sh
│   ├── data/
│   │   ├── attribute_list.1
│   │   ├── attribute_list_entry.1
│   │   ├── index_node_data.1
│   │   ├── mft_attribute.1
│   │   ├── mft_attribute.2
│   │   ├── mft_entry.1
│   │   ├── mft_entry.2
│   │   ├── mft_entry_header.1
│   │   ├── mft_entry_header.2
│   │   ├── mft_metadata_file.1
│   │   ├── security_descriptor_index_value_data.1
│   │   └── volume_header.1
│   ├── fsntfs_test_attribute.c
│   ├── fsntfs_test_attribute_list_entry.c
│   ├── fsntfs_test_bitmap_values.c
│   ├── fsntfs_test_buffer_data_handle.c
│   ├── fsntfs_test_cluster_block.c
│   ├── fsntfs_test_cluster_block_data.c
│   ├── fsntfs_test_cluster_block_stream.c
│   ├── fsntfs_test_cluster_block_vector.c
│   ├── fsntfs_test_compressed_block.c
│   ├── fsntfs_test_compressed_block_data_handle.c
│   ├── fsntfs_test_compressed_block_vector.c
│   ├── fsntfs_test_compressed_data_handle.c
│   ├── fsntfs_test_compression.c
│   ├── fsntfs_test_compression_unit_data_handle.c
│   ├── fsntfs_test_compression_unit_descriptor.c
│   ├── fsntfs_test_data_run.c
│   ├── fsntfs_test_data_stream.c
│   ├── fsntfs_test_directory_entries_tree.c
│   ├── fsntfs_test_directory_entry.c
│   ├── fsntfs_test_error.c
│   ├── fsntfs_test_extent.c
│   ├── fsntfs_test_file_entry.c
│   ├── fsntfs_test_file_name_attribute.c
│   ├── fsntfs_test_file_name_values.c
│   ├── fsntfs_test_file_system.c
│   ├── fsntfs_test_fixup_values.c
│   ├── fsntfs_test_functions.c
│   ├── fsntfs_test_functions.h
│   ├── fsntfs_test_getopt.c
│   ├── fsntfs_test_getopt.h
│   ├── fsntfs_test_index.c
│   ├── fsntfs_test_index_entry.c
│   ├── fsntfs_test_index_entry_header.c
│   ├── fsntfs_test_index_entry_vector.c
│   ├── fsntfs_test_index_node.c
│   ├── fsntfs_test_index_node_header.c
│   ├── fsntfs_test_index_root_header.c
│   ├── fsntfs_test_index_value.c
│   ├── fsntfs_test_io_handle.c
│   ├── fsntfs_test_libbfio.h
│   ├── fsntfs_test_libcdata.h
│   ├── fsntfs_test_libcerror.h
│   ├── fsntfs_test_libclocale.h
│   ├── fsntfs_test_libcnotify.h
│   ├── fsntfs_test_libcpath.h
│   ├── fsntfs_test_libcthreads.h
│   ├── fsntfs_test_libfcache.h
│   ├── fsntfs_test_libfdata.h
│   ├── fsntfs_test_libfsntfs.h
│   ├── fsntfs_test_libuna.h
│   ├── fsntfs_test_logged_utility_stream_values.c
│   ├── fsntfs_test_macros.h
│   ├── fsntfs_test_memory.c
│   ├── fsntfs_test_memory.h
│   ├── fsntfs_test_mft.c
│   ├── fsntfs_test_mft_attribute.c
│   ├── fsntfs_test_mft_attribute_list.c
│   ├── fsntfs_test_mft_attribute_list_entry.c
│   ├── fsntfs_test_mft_entry.c
│   ├── fsntfs_test_mft_entry_header.c
│   ├── fsntfs_test_mft_metadata_file.c
│   ├── fsntfs_test_name.c
│   ├── fsntfs_test_notify.c
│   ├── fsntfs_test_object_identifier_values.c
│   ├── fsntfs_test_path_hint.c
│   ├── fsntfs_test_profiler.c
│   ├── fsntfs_test_reparse_point_attribute.c
│   ├── fsntfs_test_reparse_point_values.c
│   ├── fsntfs_test_rwlock.c
│   ├── fsntfs_test_rwlock.h
│   ├── fsntfs_test_sds_index_value.c
│   ├── fsntfs_test_security_descriptor_index.c
│   ├── fsntfs_test_security_descriptor_index_value.c
│   ├── fsntfs_test_security_descriptor_values.c
│   ├── fsntfs_test_standard_information_values.c
│   ├── fsntfs_test_support.c
│   ├── fsntfs_test_tools_bodyfile.c
│   ├── fsntfs_test_tools_digest_hash.c
│   ├── fsntfs_test_tools_info_handle.c
│   ├── fsntfs_test_tools_mount_path_string.c
│   ├── fsntfs_test_tools_output.c
│   ├── fsntfs_test_tools_path_string.c
│   ├── fsntfs_test_tools_signal.c
│   ├── fsntfs_test_txf_data_values.c
│   ├── fsntfs_test_unused.h
│   ├── fsntfs_test_usn_change_journal.c
│   ├── fsntfs_test_volume.c
│   ├── fsntfs_test_volume_header.c
│   ├── fsntfs_test_volume_information_attribute.c
│   ├── fsntfs_test_volume_information_values.c
│   ├── fsntfs_test_volume_name_attribute.c
│   ├── fsntfs_test_volume_name_values.c
│   ├── lsan.suppressions
│   ├── pkgbuild.sh
│   ├── pyfsntfs_test_attribute.py
│   ├── pyfsntfs_test_file_entry.py
│   ├── pyfsntfs_test_support.py
│   ├── pyfsntfs_test_volume.py
│   ├── runtests.py
│   ├── runtests.sh
│   ├── syncsharedlibs.sh
│   ├── test_fsntfsinfo.ps1
│   ├── test_fsntfsinfo.sh
│   ├── test_fsntfsinfo_bodyfile.ps1
│   ├── test_fsntfsinfo_bodyfile.sh
│   ├── test_library.ps1
│   ├── test_library.sh
│   ├── test_manpage.sh
│   ├── test_python_module.sh
│   ├── test_runner.sh
│   ├── test_tools.ps1
│   └── test_tools.sh
└── tox.ini
Download .txt
SYMBOL INDEX (1767 symbols across 281 files)

FILE: common/byte_stream.h
  type byte_stream_float32_t (line 40) | typedef union byte_stream_float32
  type byte_stream_float64_t (line 47) | typedef union byte_stream_float64

FILE: fsntfstools/bodyfile.c
  function bodyfile_path_string_copy_from_file_entry_path (line 37) | int bodyfile_path_string_copy_from_file_entry_path(

FILE: fsntfstools/digest_hash.c
  function digest_hash_copy_to_string (line 31) | int digest_hash_copy_to_string(

FILE: fsntfstools/fsntfsinfo.c
  type FSNTFSINFO_MODES (line 54) | enum FSNTFSINFO_MODES
  function usage_fprint (line 68) | void usage_fprint(
  function fsntfsinfo_signal_handler (line 98) | void fsntfsinfo_signal_handler(
  function main (line 145) | int main( int argc, char * const argv[] )

FILE: fsntfstools/fsntfsmount.c
  function usage_fprint (line 60) | void usage_fprint(
  function fsntfsmount_signal_handler (line 85) | void fsntfsmount_signal_handler(
  function main (line 132) | int main( int argc, char * const argv[] )

FILE: fsntfstools/fsntfstools_getopt.c
  function system_integer_t (line 59) | system_integer_t fsntfstools_getopt(

FILE: fsntfstools/fsntfstools_output.c
  function fsntfstools_output_initialize (line 45) | int fsntfstools_output_initialize(
  function fsntfstools_output_copyright_fprint (line 102) | void fsntfstools_output_copyright_fprint(
  function fsntfstools_output_version_fprint (line 134) | void fsntfstools_output_version_fprint(
  function fsntfstools_output_version_detailed_fprint (line 155) | void fsntfstools_output_version_detailed_fprint(

FILE: fsntfstools/fsntfstools_signal.c
  function BOOL (line 42) | BOOL WINAPI fsntfstools_signal_handler(
  function fsntfstools_signal_initialize_memory_debug (line 70) | void fsntfstools_signal_initialize_memory_debug(
  function fsntfstools_signal_attach (line 95) | int fsntfstools_signal_attach(
  function fsntfstools_signal_detach (line 176) | int fsntfstools_signal_detach(
  function fsntfstools_signal_attach (line 204) | int fsntfstools_signal_attach(
  function fsntfstools_signal_detach (line 240) | int fsntfstools_signal_detach(

FILE: fsntfstools/fsntfstools_signal.h
  type fsntfstools_signal_t (line 39) | typedef unsigned long fsntfstools_signal_t;
  type fsntfstools_signal_t (line 42) | typedef int fsntfstools_signal_t;

FILE: fsntfstools/info_handle.c
  function fsntfstools_system_string_copy_decimal_to_integer_64_bit (line 76) | int fsntfstools_system_string_copy_decimal_to_integer_64_bit(
  function info_handle_file_attribute_flags_fprint (line 187) | void info_handle_file_attribute_flags_fprint(
  function info_handle_volume_information_flags_fprint (line 300) | void info_handle_volume_information_flags_fprint(
  function info_handle_initialize (line 458) | int info_handle_initialize(
  function info_handle_free (line 558) | int info_handle_free(
  function info_handle_signal_abort (line 650) | int info_handle_signal_abort(
  function info_handle_set_bodyfile (line 691) | int info_handle_set_bodyfile(
  function info_handle_set_volume_offset (line 757) | int info_handle_set_volume_offset(
  function info_handle_open_input (line 803) | int info_handle_open_input(
  function info_handle_close_input (line 977) | int info_handle_close_input(
  function info_handle_file_entry_calculate_md5 (line 1032) | int info_handle_file_entry_calculate_md5(
  function info_handle_name_value_fprint (line 1203) | int info_handle_name_value_fprint(
  function info_handle_filetime_value_fprint (line 1273) | int info_handle_filetime_value_fprint(
  function info_handle_security_descriptor_fprint (line 1404) | int info_handle_security_descriptor_fprint(
  function info_handle_attribute_fprint (line 2040) | int info_handle_attribute_fprint(
  function info_handle_attribute_list_attribute_fprint (line 2501) | int info_handle_attribute_list_attribute_fprint(
  function info_handle_bitmap_attribute_fprint (line 2792) | int info_handle_bitmap_attribute_fprint(
  function info_handle_data_attribute_fprint (line 2977) | int info_handle_data_attribute_fprint(
  function info_handle_file_name_attribute_fprint (line 3182) | int info_handle_file_name_attribute_fprint(
  function info_handle_object_identifier_attribute_fprint (line 3541) | int info_handle_object_identifier_attribute_fprint(
  function info_handle_reparse_point_attribute_fprint (line 3866) | int info_handle_reparse_point_attribute_fprint(
  function info_handle_security_descriptor_attribute_fprint (line 4137) | int info_handle_security_descriptor_attribute_fprint(
  function info_handle_standard_information_attribute_fprint (line 4239) | int info_handle_standard_information_attribute_fprint(
  function info_handle_volume_information_attribute_fprint (line 4473) | int info_handle_volume_information_attribute_fprint(
  function info_handle_volume_name_attribute_fprint (line 4543) | int info_handle_volume_name_attribute_fprint(
  function info_handle_file_entry_value_fprint (line 4668) | int info_handle_file_entry_value_fprint(
  function info_handle_bodyfile_name_value_fprint (line 5126) | int info_handle_bodyfile_name_value_fprint(
  function info_handle_bodyfile_file_name_attribute_fprint (line 5196) | int info_handle_bodyfile_file_name_attribute_fprint(
  function info_handle_bodyfile_i30_entry_fprint (line 5453) | int info_handle_bodyfile_i30_entry_fprint(
  function info_handle_bodyfile_index_root_attribute_fprint (line 5728) | int info_handle_bodyfile_index_root_attribute_fprint(
  function info_handle_bodyfile_file_entry_value_fprint (line 6113) | int info_handle_bodyfile_file_entry_value_fprint(
  function info_handle_bodyfile_mft_entry_fprint (line 6572) | int info_handle_bodyfile_mft_entry_fprint(
  function info_handle_file_entry_fprint (line 6870) | int info_handle_file_entry_fprint(
  function info_handle_file_system_hierarchy_fprint_file_entry (line 7501) | int info_handle_file_system_hierarchy_fprint_file_entry(
  function info_handle_mft_entry_fprint (line 7852) | int info_handle_mft_entry_fprint(
  function info_handle_mft_entries_fprint (line 8183) | int info_handle_mft_entries_fprint(
  function info_handle_file_entry_fprint_by_path (line 8272) | int info_handle_file_entry_fprint_by_path(
  function info_handle_file_system_hierarchy_fprint (line 8475) | int info_handle_file_system_hierarchy_fprint(
  function info_handle_usn_record_update_reason_flags_fprint (line 8565) | void info_handle_usn_record_update_reason_flags_fprint(
  function info_handle_usn_record_update_source_flags_fprint (line 8709) | void info_handle_usn_record_update_source_flags_fprint(
  function info_handle_usn_record_fprint (line 8737) | int info_handle_usn_record_fprint(
  function info_handle_usn_change_journal_fprint (line 9049) | int info_handle_usn_change_journal_fprint(
  function info_handle_volume_fprint (line 9276) | int info_handle_volume_fprint(

FILE: fsntfstools/info_handle.h
  type info_handle_t (line 38) | typedef struct info_handle info_handle_t;
  type info_handle (line 40) | struct info_handle

FILE: fsntfstools/mount_dokan.c
  function mount_dokan_set_file_information (line 63) | int mount_dokan_set_file_information(
  function mount_dokan_set_find_data (line 114) | int mount_dokan_set_find_data(
  function mount_dokan_filldir (line 164) | int mount_dokan_filldir(
  function mount_dokan_CreateFile (line 370) | int __stdcall mount_dokan_CreateFile(
  function NTSTATUS (line 504) | NTSTATUS __stdcall mount_dokan_ZwCreateFile(
  function mount_dokan_OpenDirectory (line 615) | int __stdcall mount_dokan_OpenDirectory(
  function NTSTATUS (line 712) | NTSTATUS __stdcall mount_dokan_CloseFile(
  function NTSTATUS (line 799) | NTSTATUS __stdcall mount_dokan_ReadFile(
  function NTSTATUS (line 946) | NTSTATUS __stdcall mount_dokan_FindFiles(
  function NTSTATUS (line 1270) | NTSTATUS __stdcall mount_dokan_GetFileInformation(
  function NTSTATUS (line 1479) | NTSTATUS __stdcall mount_dokan_GetVolumeInformation(
  function mount_dokan_Unmount (line 1594) | int __stdcall mount_dokan_Unmount(

FILE: fsntfstools/mount_file_entry.c
  function mount_file_entry_initialize (line 54) | int mount_file_entry_initialize(
  function mount_file_entry_free (line 203) | int mount_file_entry_free(
  function mount_file_entry_get_parent_file_entry (line 252) | int mount_file_entry_get_parent_file_entry(
  function mount_file_entry_get_creation_time (line 302) | int mount_file_entry_get_creation_time(
  function mount_file_entry_get_access_time (line 369) | int mount_file_entry_get_access_time(
  function mount_file_entry_get_modification_time (line 436) | int mount_file_entry_get_modification_time(
  function mount_file_entry_get_inode_change_time (line 503) | int mount_file_entry_get_inode_change_time(
  function mount_file_entry_get_file_mode (line 568) | int mount_file_entry_get_file_mode(
  function mount_file_entry_get_name_size (line 665) | int mount_file_entry_get_name_size(
  function mount_file_entry_get_name (line 703) | int mount_file_entry_get_name(
  function mount_file_entry_get_symbolic_link_target (line 789) | int mount_file_entry_get_symbolic_link_target(
  function mount_file_entry_get_number_of_sub_file_entries (line 840) | int mount_file_entry_get_number_of_sub_file_entries(
  function mount_file_entry_get_sub_file_entry_by_index (line 878) | int mount_file_entry_get_sub_file_entry_by_index(
  function mount_file_entry_read_buffer_at_offset (line 998) | ssize_t mount_file_entry_read_buffer_at_offset(
  function mount_file_entry_get_size (line 1067) | int mount_file_entry_get_size(

FILE: fsntfstools/mount_file_entry.h
  type mount_file_entry_t (line 36) | typedef struct mount_file_entry mount_file_entry_t;
  type mount_file_entry (line 38) | struct mount_file_entry

FILE: fsntfstools/mount_file_system.c
  function mount_file_system_initialize (line 48) | int mount_file_system_initialize(
  function mount_file_system_free (line 213) | int mount_file_system_free(
  function mount_file_system_signal_abort (line 244) | int mount_file_system_signal_abort(
  function mount_file_system_set_volume (line 283) | int mount_file_system_set_volume(
  function mount_file_system_get_volume (line 309) | int mount_file_system_get_volume(
  function mount_file_system_get_mounted_timestamp (line 348) | int mount_file_system_get_mounted_timestamp(
  function mount_file_system_get_file_entry_by_path (line 385) | int mount_file_system_get_file_entry_by_path(
  function mount_file_system_get_filename_from_file_entry (line 484) | int mount_file_system_get_filename_from_file_entry(

FILE: fsntfstools/mount_file_system.h
  type mount_file_system_t (line 35) | typedef struct mount_file_system mount_file_system_t;
  type mount_file_system (line 37) | struct mount_file_system

FILE: fsntfstools/mount_fuse.c
  function mount_fuse_set_stat_info (line 57) | int mount_fuse_set_stat_info(
  function mount_fuse_filldir (line 127) | int mount_fuse_filldir(
  function mount_fuse_open (line 288) | int mount_fuse_open(
  function mount_fuse_read (line 391) | int mount_fuse_read(
  function mount_fuse_release (line 500) | int mount_fuse_release(
  function mount_fuse_opendir (line 577) | int mount_fuse_opendir(
  type fuse_file_info (line 673) | struct fuse_file_info
  type fuse_readdir_flags (line 674) | enum fuse_readdir_flags
  function mount_fuse_readdir (line 676) | int mount_fuse_readdir(
  function mount_fuse_releasedir (line 1007) | int mount_fuse_releasedir(
  type stat (line 1073) | struct stat
  type fuse_file_info (line 1074) | struct fuse_file_info
  function mount_fuse_getattr (line 1076) | int mount_fuse_getattr(
  function mount_fuse_readlink (line 1307) | int mount_fuse_readlink(
  function mount_fuse_destroy (line 1416) | void mount_fuse_destroy(

FILE: fsntfstools/mount_fuse.h
  type stat (line 64) | struct stat
  type stat (line 76) | struct stat
  type fuse_file_info (line 82) | struct fuse_file_info
  type fuse_file_info (line 89) | struct fuse_file_info
  type fuse_file_info (line 93) | struct fuse_file_info
  type fuse_file_info (line 97) | struct fuse_file_info
  type fuse_file_info (line 105) | struct fuse_file_info
  type fuse_readdir_flags (line 106) | enum fuse_readdir_flags
  type fuse_file_info (line 113) | struct fuse_file_info
  type fuse_file_info (line 118) | struct fuse_file_info
  type stat (line 123) | struct stat
  type fuse_file_info (line 124) | struct fuse_file_info
  type stat (line 128) | struct stat

FILE: fsntfstools/mount_handle.c
  function mount_handle_system_string_copy_from_64_bit_in_decimal (line 51) | int mount_handle_system_string_copy_from_64_bit_in_decimal(
  function mount_handle_initialize (line 162) | int mount_handle_initialize(
  function mount_handle_free (line 247) | int mount_handle_free(
  function mount_handle_signal_abort (line 291) | int mount_handle_signal_abort(
  function mount_handle_set_offset (line 327) | int mount_handle_set_offset(
  function mount_handle_open (line 373) | int mount_handle_open(
  function mount_handle_close (line 527) | int mount_handle_close(
  function mount_handle_get_file_entry_by_path (line 642) | int mount_handle_get_file_entry_by_path(

FILE: fsntfstools/mount_handle.h
  type mount_handle_t (line 39) | typedef struct mount_handle mount_handle_t;
  type mount_handle (line 41) | struct mount_handle

FILE: fsntfstools/mount_path_string.c
  function mount_path_string_copy_hexadecimal_to_integer_32_bit (line 44) | int mount_path_string_copy_hexadecimal_to_integer_32_bit(
  function mount_path_string_copy_from_file_entry_path (line 136) | int mount_path_string_copy_from_file_entry_path(
  function mount_path_string_copy_to_file_entry_path (line 428) | int mount_path_string_copy_to_file_entry_path(

FILE: fsntfstools/path_string.c
  function path_string_copy_hexadecimal_to_integer_32_bit (line 37) | int path_string_copy_hexadecimal_to_integer_32_bit(
  function path_string_copy_from_file_entry_path (line 122) | int path_string_copy_from_file_entry_path(
  function path_string_copy_to_file_entry_path (line 386) | int path_string_copy_to_file_entry_path(

FILE: include/libfsntfs/codepage.h
  type LIBFSNTFS_CODEPAGES (line 33) | enum LIBFSNTFS_CODEPAGES

FILE: include/libfsntfs/error.h
  type libfsntfs_error_t (line 29) | typedef intptr_t libfsntfs_error_t;
  type LIBFSNTFS_ERROR_DOMAINS (line 33) | enum LIBFSNTFS_ERROR_DOMAINS
  type LIBFSNTFS_ARGUMENT_ERROR (line 48) | enum LIBFSNTFS_ARGUMENT_ERROR
  type LIBFSNTFS_CONVERSION_ERROR (line 93) | enum LIBFSNTFS_CONVERSION_ERROR
  type LIBFSNTFS_COMPRESSION_ERROR (line 109) | enum LIBFSNTFS_COMPRESSION_ERROR
  type LIBFSNTFS_IO_ERROR (line 125) | enum LIBFSNTFS_IO_ERROR
  type LIBFSNTFS_INPUT_ERROR (line 169) | enum LIBFSNTFS_INPUT_ERROR
  type LIBFSNTFS_MEMORY_ERROR (line 194) | enum LIBFSNTFS_MEMORY_ERROR
  type LIBFSNTFS_OUTPUT_ERROR (line 213) | enum LIBFSNTFS_OUTPUT_ERROR
  type LIBFSNTFS_RUNTIME_ERROR (line 225) | enum LIBFSNTFS_RUNTIME_ERROR

FILE: libfsntfs/fsntfs_file_name.h
  type fsntfs_file_name_t (line 32) | typedef struct fsntfs_file_name fsntfs_file_name_t;
  type fsntfs_file_name (line 34) | struct fsntfs_file_name

FILE: libfsntfs/fsntfs_index.h
  type fsntfs_index_root_header_t (line 32) | typedef struct fsntfs_index_root_header fsntfs_index_root_header_t;
  type fsntfs_index_root_header (line 34) | struct fsntfs_index_root_header
  type fsntfs_index_entry_header_t (line 57) | typedef struct fsntfs_index_entry_header fsntfs_index_entry_header_t;
  type fsntfs_index_entry_header (line 59) | struct fsntfs_index_entry_header
  type fsntfs_index_node_header_t (line 88) | typedef struct fsntfs_index_node_header fsntfs_index_node_header_t;
  type fsntfs_index_node_header (line 90) | struct fsntfs_index_node_header
  type fsntfs_index_value_t (line 117) | typedef struct fsntfs_index_value fsntfs_index_value_t;
  type fsntfs_index_value (line 119) | struct fsntfs_index_value

FILE: libfsntfs/fsntfs_logged_utility_stream.h
  type fsntfs_logged_utility_stream_t (line 32) | typedef struct fsntfs_logged_utility_stream fsntfs_logged_utility_stream_t;
  type fsntfs_logged_utility_stream (line 34) | struct fsntfs_logged_utility_stream

FILE: libfsntfs/fsntfs_mft_attribute.h
  type fsntfs_mft_attribute_header_t (line 32) | typedef struct fsntfs_mft_attribute_header fsntfs_mft_attribute_header_t;
  type fsntfs_mft_attribute_header (line 34) | struct fsntfs_mft_attribute_header
  type fsntfs_mft_attribute_resident_t (line 72) | typedef struct fsntfs_mft_attribute_resident fsntfs_mft_attribute_reside...
  type fsntfs_mft_attribute_resident (line 74) | struct fsntfs_mft_attribute_resident
  type fsntfs_mft_attribute_non_resident_t (line 97) | typedef struct fsntfs_mft_attribute_non_resident fsntfs_mft_attribute_no...
  type fsntfs_mft_attribute_non_resident (line 99) | struct fsntfs_mft_attribute_non_resident
  type fsntfs_mft_attribute_non_resident_compressed_t (line 142) | typedef struct fsntfs_mft_attribute_non_resident_compressed fsntfs_mft_a...
  type fsntfs_mft_attribute_non_resident_compressed (line 144) | struct fsntfs_mft_attribute_non_resident_compressed

FILE: libfsntfs/fsntfs_mft_attribute_list.h
  type fsntfs_mft_attribute_list_entry_header_t (line 32) | typedef struct fsntfs_mft_attribute_list_entry_header fsntfs_mft_attribu...
  type fsntfs_mft_attribute_list_entry_header (line 34) | struct fsntfs_mft_attribute_list_entry_header

FILE: libfsntfs/fsntfs_mft_entry.h
  type fsntfs_mft_entry_header_t (line 32) | typedef struct fsntfs_mft_entry_header fsntfs_mft_entry_header_t;
  type fsntfs_mft_entry_header (line 34) | struct fsntfs_mft_entry_header

FILE: libfsntfs/fsntfs_object_identifier.h
  type fsntfs_object_identifier_t (line 32) | typedef struct fsntfs_object_identifier fsntfs_object_identifier_t;
  type fsntfs_object_identifier (line 34) | struct fsntfs_object_identifier

FILE: libfsntfs/fsntfs_reparse_point.h
  type fsntfs_reparse_point_t (line 32) | typedef struct fsntfs_reparse_point fsntfs_reparse_point_t;
  type fsntfs_reparse_point (line 34) | struct fsntfs_reparse_point
  type fsntfs_mount_point_reparse_data_t (line 52) | typedef struct fsntfs_mount_point_reparse_data fsntfs_mount_point_repars...
  type fsntfs_mount_point_reparse_data (line 54) | struct fsntfs_mount_point_reparse_data
  type fsntfs_symbolic_link_reparse_data_t (line 77) | typedef struct fsntfs_symbolic_link_reparse_data fsntfs_symbolic_link_re...
  type fsntfs_symbolic_link_reparse_data (line 79) | struct fsntfs_symbolic_link_reparse_data

FILE: libfsntfs/fsntfs_secure.h
  type fsntfs_secure_hash_index_key_t (line 32) | typedef struct fsntfs_secure_hash_index_key fsntfs_secure_hash_index_key_t;
  type fsntfs_secure_hash_index_key (line 34) | struct fsntfs_secure_hash_index_key
  type fsntfs_secure_identifier_index_key_t (line 47) | typedef struct fsntfs_secure_identifier_index_key fsntfs_secure_identifi...
  type fsntfs_secure_identifier_index_key (line 49) | struct fsntfs_secure_identifier_index_key
  type fsntfs_secure_index_value_t (line 57) | typedef struct fsntfs_secure_index_value fsntfs_secure_index_value_t;
  type fsntfs_secure_index_value (line 59) | struct fsntfs_secure_index_value

FILE: libfsntfs/fsntfs_standard_information.h
  type fsntfs_standard_information_t (line 32) | typedef struct fsntfs_standard_information fsntfs_standard_information_t;
  type fsntfs_standard_information (line 34) | struct fsntfs_standard_information

FILE: libfsntfs/fsntfs_txf_data.h
  type fsntfs_txf_data_t (line 33) | typedef struct fsntfs_txf_data fsntfs_txf_data_t;
  type fsntfs_txf_data (line 35) | struct fsntfs_txf_data

FILE: libfsntfs/fsntfs_volume_header.h
  type fsntfs_volume_header_t (line 32) | typedef struct fsntfs_volume_header fsntfs_volume_header_t;
  type fsntfs_volume_header (line 34) | struct fsntfs_volume_header

FILE: libfsntfs/fsntfs_volume_information.h
  type fsntfs_volume_information_t (line 32) | typedef struct fsntfs_volume_information fsntfs_volume_information_t;
  type fsntfs_volume_information (line 34) | struct fsntfs_volume_information

FILE: libfsntfs/libfsntfs.c
  function BOOL (line 42) | BOOL WINAPI DllMain(
  function libfsntfs_is_dll (line 71) | int libfsntfs_is_dll(

FILE: libfsntfs/libfsntfs_attribute.c
  function libfsntfs_attribute_initialize (line 55) | int libfsntfs_attribute_initialize(
  function libfsntfs_attribute_free (line 160) | int libfsntfs_attribute_free(
  function libfsntfs_internal_attribute_free (line 187) | int libfsntfs_internal_attribute_free(
  function libfsntfs_internal_attribute_read_value (line 270) | int libfsntfs_internal_attribute_read_value(
  function libfsntfs_internal_attribute_get_type (line 687) | int libfsntfs_internal_attribute_get_type(
  function libfsntfs_attribute_get_type (line 725) | int libfsntfs_attribute_get_type(
  function libfsntfs_attribute_get_data_flags (line 797) | int libfsntfs_attribute_get_data_flags(
  function libfsntfs_internal_attribute_get_value (line 888) | int libfsntfs_internal_attribute_get_value(
  function libfsntfs_attribute_get_utf8_name_size (line 926) | int libfsntfs_attribute_get_utf8_name_size(
  function libfsntfs_attribute_get_utf8_name (line 999) | int libfsntfs_attribute_get_utf8_name(
  function libfsntfs_attribute_get_utf16_name_size (line 1074) | int libfsntfs_attribute_get_utf16_name_size(
  function libfsntfs_attribute_get_utf16_name (line 1147) | int libfsntfs_attribute_get_utf16_name(
  function libfsntfs_attribute_get_data_vcn_range (line 1221) | int libfsntfs_attribute_get_data_vcn_range(
  function libfsntfs_internal_attribute_get_data_size (line 1324) | int libfsntfs_internal_attribute_get_data_size(
  function libfsntfs_attribute_get_data_size (line 1380) | int libfsntfs_attribute_get_data_size(
  function libfsntfs_attribute_get_valid_data_size (line 1452) | int libfsntfs_attribute_get_valid_data_size(

FILE: libfsntfs/libfsntfs_attribute.h
  type libfsntfs_internal_attribute_t (line 42) | typedef struct libfsntfs_internal_attribute libfsntfs_internal_attribute_t;
  type libfsntfs_internal_attribute (line 44) | struct libfsntfs_internal_attribute

FILE: libfsntfs/libfsntfs_attribute_list_attribute.c
  function libfsntfs_attribute_list_attribute_get_number_of_entries (line 39) | int libfsntfs_attribute_list_attribute_get_number_of_entries(
  function libfsntfs_attribute_list_attribute_get_entry_by_index (line 156) | int libfsntfs_attribute_list_attribute_get_entry_by_index(

FILE: libfsntfs/libfsntfs_attribute_list_entry.c
  function libfsntfs_attribute_list_entry_initialize (line 36) | int libfsntfs_attribute_list_entry_initialize(
  function libfsntfs_attribute_list_entry_free (line 141) | int libfsntfs_attribute_list_entry_free(
  function libfsntfs_attribute_list_entry_get_attribute_type (line 191) | int libfsntfs_attribute_list_entry_get_attribute_type(
  function libfsntfs_attribute_list_entry_get_file_reference (line 263) | int libfsntfs_attribute_list_entry_get_file_reference(
  function libfsntfs_attribute_list_entry_get_utf8_name_size (line 336) | int libfsntfs_attribute_list_entry_get_utf8_name_size(
  function libfsntfs_attribute_list_entry_get_utf8_name (line 409) | int libfsntfs_attribute_list_entry_get_utf8_name(
  function libfsntfs_attribute_list_entry_get_utf16_name_size (line 484) | int libfsntfs_attribute_list_entry_get_utf16_name_size(
  function libfsntfs_attribute_list_entry_get_utf16_name (line 557) | int libfsntfs_attribute_list_entry_get_utf16_name(

FILE: libfsntfs/libfsntfs_attribute_list_entry.h
  type libfsntfs_internal_attribute_list_entry_t (line 38) | typedef struct libfsntfs_internal_attribute_list_entry libfsntfs_interna...
  type libfsntfs_internal_attribute_list_entry (line 40) | struct libfsntfs_internal_attribute_list_entry

FILE: libfsntfs/libfsntfs_bitmap_values.c
  function libfsntfs_bitmap_values_initialize (line 41) | int libfsntfs_bitmap_values_initialize(
  function libfsntfs_bitmap_values_free (line 131) | int libfsntfs_bitmap_values_free(
  function libfsntfs_bitmap_values_read_data (line 176) | int libfsntfs_bitmap_values_read_data(
  function libfsntfs_bitmap_values_read_from_mft_attribute (line 397) | int libfsntfs_bitmap_values_read_from_mft_attribute(

FILE: libfsntfs/libfsntfs_bitmap_values.h
  type libfsntfs_bitmap_values_t (line 38) | typedef struct libfsntfs_bitmap_values libfsntfs_bitmap_values_t;
  type libfsntfs_bitmap_values (line 40) | struct libfsntfs_bitmap_values

FILE: libfsntfs/libfsntfs_buffer_data_handle.c
  function libfsntfs_buffer_data_handle_initialize (line 34) | int libfsntfs_buffer_data_handle_initialize(
  function libfsntfs_buffer_data_handle_free (line 136) | int libfsntfs_buffer_data_handle_free(
  function libfsntfs_buffer_data_handle_read_segment_data (line 167) | ssize_t libfsntfs_buffer_data_handle_read_segment_data(
  function off64_t (line 274) | off64_t libfsntfs_buffer_data_handle_seek_segment_offset(

FILE: libfsntfs/libfsntfs_buffer_data_handle.h
  type libfsntfs_buffer_data_handle_t (line 34) | typedef struct libfsntfs_buffer_data_handle libfsntfs_buffer_data_handle_t;
  type libfsntfs_buffer_data_handle (line 36) | struct libfsntfs_buffer_data_handle

FILE: libfsntfs/libfsntfs_cluster_block.c
  function libfsntfs_cluster_block_initialize (line 35) | int libfsntfs_cluster_block_initialize(
  function libfsntfs_cluster_block_free (line 141) | int libfsntfs_cluster_block_free(
  function libfsntfs_cluster_block_clear (line 174) | int libfsntfs_cluster_block_clear(
  function libfsntfs_cluster_block_read_file_io_handle (line 222) | int libfsntfs_cluster_block_read_file_io_handle(

FILE: libfsntfs/libfsntfs_cluster_block.h
  type libfsntfs_cluster_block_t (line 35) | typedef struct libfsntfs_cluster_block libfsntfs_cluster_block_t;
  type libfsntfs_cluster_block (line 37) | struct libfsntfs_cluster_block

FILE: libfsntfs/libfsntfs_cluster_block_data.c
  function libfsntfs_cluster_block_data_read_segment_data (line 36) | ssize_t libfsntfs_cluster_block_data_read_segment_data(
  function off64_t (line 122) | off64_t libfsntfs_cluster_block_data_seek_segment_offset(

FILE: libfsntfs/libfsntfs_cluster_block_stream.c
  function libfsntfs_cluster_block_stream_initialize_from_data (line 40) | int libfsntfs_cluster_block_stream_initialize_from_data(
  function libfsntfs_cluster_block_stream_initialize_from_data_runs (line 142) | int libfsntfs_cluster_block_stream_initialize_from_data_runs(
  function libfsntfs_cluster_block_stream_initialize_from_compressed_data_runs (line 497) | int libfsntfs_cluster_block_stream_initialize_from_compressed_data_runs(
  function libfsntfs_cluster_block_stream_initialize_from_compressed_stream (line 640) | int libfsntfs_cluster_block_stream_initialize_from_compressed_stream(
  function libfsntfs_cluster_block_stream_initialize (line 799) | int libfsntfs_cluster_block_stream_initialize(

FILE: libfsntfs/libfsntfs_cluster_block_vector.c
  function libfsntfs_cluster_block_vector_initialize (line 40) | int libfsntfs_cluster_block_vector_initialize(
  function libfsntfs_cluster_block_vector_read_element_data (line 354) | int libfsntfs_cluster_block_vector_read_element_data(

FILE: libfsntfs/libfsntfs_compressed_block.c
  function libfsntfs_compressed_block_initialize (line 33) | int libfsntfs_compressed_block_initialize(
  function libfsntfs_compressed_block_free (line 139) | int libfsntfs_compressed_block_free(

FILE: libfsntfs/libfsntfs_compressed_block.h
  type libfsntfs_compressed_block_t (line 34) | typedef struct libfsntfs_compressed_block libfsntfs_compressed_block_t;
  type libfsntfs_compressed_block (line 36) | struct libfsntfs_compressed_block

FILE: libfsntfs/libfsntfs_compressed_block_data_handle.c
  function libfsntfs_compressed_block_data_handle_initialize (line 42) | int libfsntfs_compressed_block_data_handle_initialize(
  function libfsntfs_compressed_block_data_handle_free (line 181) | int libfsntfs_compressed_block_data_handle_free(
  function libfsntfs_compressed_block_data_handle_read_segment_data (line 239) | ssize_t libfsntfs_compressed_block_data_handle_read_segment_data(
  function off64_t (line 426) | off64_t libfsntfs_compressed_block_data_handle_seek_segment_offset(

FILE: libfsntfs/libfsntfs_compressed_block_data_handle.h
  type libfsntfs_compressed_block_data_handle_t (line 39) | typedef struct libfsntfs_compressed_block_data_handle libfsntfs_compress...
  type libfsntfs_compressed_block_data_handle (line 41) | struct libfsntfs_compressed_block_data_handle

FILE: libfsntfs/libfsntfs_compressed_block_vector.c
  function libfsntfs_compressed_block_vector_initialize (line 42) | int libfsntfs_compressed_block_vector_initialize(
  function libfsntfs_compressed_block_vector_read_element_data (line 222) | int libfsntfs_compressed_block_vector_read_element_data(

FILE: libfsntfs/libfsntfs_compressed_data_handle.c
  function libfsntfs_compressed_data_handle_initialize (line 40) | int libfsntfs_compressed_data_handle_initialize(
  function libfsntfs_compressed_data_handle_free (line 209) | int libfsntfs_compressed_data_handle_free(
  function libfsntfs_compressed_data_handle_get_compressed_block_offsets (line 260) | int libfsntfs_compressed_data_handle_get_compressed_block_offsets(
  function libfsntfs_compressed_data_handle_read_segment_data (line 554) | ssize_t libfsntfs_compressed_data_handle_read_segment_data(
  function off64_t (line 838) | off64_t libfsntfs_compressed_data_handle_seek_segment_offset(

FILE: libfsntfs/libfsntfs_compressed_data_handle.h
  type libfsntfs_compressed_data_handle_t (line 36) | typedef struct libfsntfs_compressed_data_handle libfsntfs_compressed_dat...
  type libfsntfs_compressed_data_handle (line 38) | struct libfsntfs_compressed_data_handle

FILE: libfsntfs/libfsntfs_compression.c
  function libfsntfs_decompress_data (line 38) | int libfsntfs_decompress_data(

FILE: libfsntfs/libfsntfs_compression_unit_data_handle.c
  function libfsntfs_compression_unit_data_handle_initialize (line 39) | int libfsntfs_compression_unit_data_handle_initialize(
  function libfsntfs_compression_unit_data_handle_free (line 665) | int libfsntfs_compression_unit_data_handle_free(
  function libfsntfs_compression_unit_data_handle_get_number_of_descriptors (line 710) | int libfsntfs_compression_unit_data_handle_get_number_of_descriptors(
  function libfsntfs_compression_unit_data_handle_get_descriptor_by_index (line 748) | int libfsntfs_compression_unit_data_handle_get_descriptor_by_index(

FILE: libfsntfs/libfsntfs_compression_unit_data_handle.h
  type libfsntfs_compression_unit_data_handle_t (line 37) | typedef struct libfsntfs_compression_unit_data_handle libfsntfs_compress...
  type libfsntfs_compression_unit_data_handle (line 39) | struct libfsntfs_compression_unit_data_handle

FILE: libfsntfs/libfsntfs_compression_unit_descriptor.c
  function libfsntfs_compression_unit_descriptor_initialize (line 36) | int libfsntfs_compression_unit_descriptor_initialize(
  function libfsntfs_compression_unit_descriptor_free (line 134) | int libfsntfs_compression_unit_descriptor_free(
  function libfsntfs_compression_unit_descriptor_append_data_segment (line 178) | int libfsntfs_compression_unit_descriptor_append_data_segment(
  function libfsntfs_compression_unit_descriptor_print (line 227) | int libfsntfs_compression_unit_descriptor_print(

FILE: libfsntfs/libfsntfs_compression_unit_descriptor.h
  type libfsntfs_compression_unit_descriptor_t (line 37) | typedef struct libfsntfs_compression_unit_descriptor libfsntfs_compressi...
  type libfsntfs_compression_unit_descriptor (line 39) | struct libfsntfs_compression_unit_descriptor

FILE: libfsntfs/libfsntfs_data_run.c
  function libfsntfs_data_run_initialize (line 36) | int libfsntfs_data_run_initialize(
  function libfsntfs_data_run_free (line 113) | int libfsntfs_data_run_free(
  function libfsntfs_data_run_clone (line 143) | int libfsntfs_data_run_clone(
  function libfsntfs_data_run_read_data (line 222) | ssize_t libfsntfs_data_run_read_data(

FILE: libfsntfs/libfsntfs_data_run.h
  type libfsntfs_data_run_t (line 35) | typedef struct libfsntfs_data_run libfsntfs_data_run_t;
  type libfsntfs_data_run (line 37) | struct libfsntfs_data_run

FILE: libfsntfs/libfsntfs_data_stream.c
  function libfsntfs_data_stream_initialize (line 43) | int libfsntfs_data_stream_initialize(
  function libfsntfs_data_stream_free (line 196) | int libfsntfs_data_stream_free(
  function libfsntfs_data_stream_get_utf8_name_size (line 274) | int libfsntfs_data_stream_get_utf8_name_size(
  function libfsntfs_data_stream_get_utf8_name (line 347) | int libfsntfs_data_stream_get_utf8_name(
  function libfsntfs_data_stream_get_utf16_name_size (line 422) | int libfsntfs_data_stream_get_utf16_name_size(
  function libfsntfs_data_stream_get_utf16_name (line 495) | int libfsntfs_data_stream_get_utf16_name(
  function libfsntfs_data_stream_read_buffer (line 569) | ssize_t libfsntfs_data_stream_read_buffer(
  function libfsntfs_data_stream_read_buffer_at_offset (line 647) | ssize_t libfsntfs_data_stream_read_buffer_at_offset(
  function off64_t (line 727) | off64_t libfsntfs_data_stream_seek_offset(
  function libfsntfs_data_stream_get_offset (line 802) | int libfsntfs_data_stream_get_offset(
  function libfsntfs_data_stream_get_size (line 874) | int libfsntfs_data_stream_get_size(
  function libfsntfs_data_stream_get_number_of_extents (line 946) | int libfsntfs_data_stream_get_number_of_extents(
  function libfsntfs_data_stream_get_extent_by_index (line 1018) | int libfsntfs_data_stream_get_extent_by_index(

FILE: libfsntfs/libfsntfs_data_stream.h
  type libfsntfs_internal_data_stream_t (line 42) | typedef struct libfsntfs_internal_data_stream libfsntfs_internal_data_st...
  type libfsntfs_internal_data_stream (line 44) | struct libfsntfs_internal_data_stream

FILE: libfsntfs/libfsntfs_debug.c
  function libfsntfs_debug_print_mft_attribute_data_flags (line 42) | void libfsntfs_debug_print_mft_attribute_data_flags(
  function libfsntfs_debug_print_mft_entry_flags (line 65) | void libfsntfs_debug_print_mft_entry_flags(
  function libfsntfs_debug_print_file_attribute_flags (line 92) | void libfsntfs_debug_print_file_attribute_flags(
  function libfsntfs_debug_print_index_node_flags (line 187) | void libfsntfs_debug_print_index_node_flags(
  function libfsntfs_debug_print_index_value_flags (line 199) | void libfsntfs_debug_print_index_value_flags(
  function libfsntfs_debug_print_reparse_point_tag (line 216) | void libfsntfs_debug_print_reparse_point_tag(
  function libfsntfs_debug_print_volume_information_flags (line 284) | void libfsntfs_debug_print_volume_information_flags(
  function libfsntfs_debug_print_filetime_value (line 469) | int libfsntfs_debug_print_filetime_value(
  function libfsntfs_debug_print_guid_value (line 562) | int libfsntfs_debug_print_guid_value(
  function libfsntfs_debug_print_utf16_string_value (line 655) | int libfsntfs_debug_print_utf16_string_value(
  function libfsntfs_debug_print_read_offsets (line 788) | int libfsntfs_debug_print_read_offsets(

FILE: libfsntfs/libfsntfs_directory_entries_tree.c
  function libfsntfs_directory_entries_tree_initialize (line 47) | int libfsntfs_directory_entries_tree_initialize(
  function libfsntfs_directory_entries_tree_free (line 119) | int libfsntfs_directory_entries_tree_free(
  function libfsntfs_directory_entries_tree_insert_index_value (line 215) | int libfsntfs_directory_entries_tree_insert_index_value(
  function libfsntfs_directory_entries_tree_read_from_index_node (line 479) | int libfsntfs_directory_entries_tree_read_from_index_node(
  function libfsntfs_directory_entries_tree_read_from_i30_index (line 759) | int libfsntfs_directory_entries_tree_read_from_i30_index(
  function libfsntfs_directory_entries_tree_get_number_of_entries (line 1066) | int libfsntfs_directory_entries_tree_get_number_of_entries(
  function libfsntfs_directory_entries_tree_get_entry_by_index (line 1123) | int libfsntfs_directory_entries_tree_get_entry_by_index(
  function libfsntfs_directory_entries_tree_get_entry_from_index_node_by_utf8_name (line 1184) | int libfsntfs_directory_entries_tree_get_entry_from_index_node_by_utf8_n...
  function libfsntfs_directory_entries_tree_get_entry_by_utf8_name (line 1574) | int libfsntfs_directory_entries_tree_get_entry_by_utf8_name(
  function libfsntfs_directory_entries_tree_get_entry_from_index_node_by_utf16_name (line 1635) | int libfsntfs_directory_entries_tree_get_entry_from_index_node_by_utf16_...
  function libfsntfs_directory_entries_tree_get_entry_by_utf16_name (line 2025) | int libfsntfs_directory_entries_tree_get_entry_by_utf16_name(
  function libfsntfs_directory_entries_tree_read_element_data (line 2086) | int libfsntfs_directory_entries_tree_read_element_data(

FILE: libfsntfs/libfsntfs_directory_entries_tree.h
  type libfsntfs_directory_entries_tree_t (line 43) | typedef struct libfsntfs_directory_entries_tree libfsntfs_directory_entr...
  type libfsntfs_directory_entries_tree (line 45) | struct libfsntfs_directory_entries_tree

FILE: libfsntfs/libfsntfs_directory_entry.c
  function libfsntfs_directory_entry_initialize (line 38) | int libfsntfs_directory_entry_initialize(
  function libfsntfs_directory_entry_free (line 115) | int libfsntfs_directory_entry_free(
  function libfsntfs_directory_entry_clone (line 178) | int libfsntfs_directory_entry_clone(
  function libfsntfs_directory_entry_compare_by_file_reference (line 271) | int libfsntfs_directory_entry_compare_by_file_reference(
  function libfsntfs_directory_entry_get_mft_entry_index (line 332) | int libfsntfs_directory_entry_get_mft_entry_index(
  function libfsntfs_directory_entry_get_file_reference (line 380) | int libfsntfs_directory_entry_get_file_reference(
  function libfsntfs_directory_entry_get_parent_file_reference (line 417) | int libfsntfs_directory_entry_get_parent_file_reference(
  function libfsntfs_directory_entry_get_creation_time (line 455) | int libfsntfs_directory_entry_get_creation_time(
  function libfsntfs_directory_entry_get_modification_time (line 493) | int libfsntfs_directory_entry_get_modification_time(
  function libfsntfs_directory_entry_get_access_time (line 531) | int libfsntfs_directory_entry_get_access_time(
  function libfsntfs_directory_entry_get_entry_modification_time (line 569) | int libfsntfs_directory_entry_get_entry_modification_time(
  function libfsntfs_directory_entry_get_size (line 607) | int libfsntfs_directory_entry_get_size(
  function libfsntfs_directory_entry_get_file_attribute_flags (line 645) | int libfsntfs_directory_entry_get_file_attribute_flags(
  function libfsntfs_directory_entry_get_utf8_name_size (line 685) | int libfsntfs_directory_entry_get_utf8_name_size(
  function libfsntfs_directory_entry_get_utf8_name (line 725) | int libfsntfs_directory_entry_get_utf8_name(
  function libfsntfs_directory_entry_get_utf16_name_size (line 767) | int libfsntfs_directory_entry_get_utf16_name_size(
  function libfsntfs_directory_entry_get_utf16_name (line 807) | int libfsntfs_directory_entry_get_utf16_name(

FILE: libfsntfs/libfsntfs_directory_entry.h
  type libfsntfs_directory_entry_t (line 35) | typedef struct libfsntfs_directory_entry libfsntfs_directory_entry_t;
  type libfsntfs_directory_entry (line 37) | struct libfsntfs_directory_entry

FILE: libfsntfs/libfsntfs_error.c
  function libfsntfs_error_free (line 33) | void libfsntfs_error_free(
  function libfsntfs_error_fprint (line 43) | int libfsntfs_error_fprint(
  function libfsntfs_error_sprint (line 60) | int libfsntfs_error_sprint(
  function libfsntfs_error_backtrace_fprint (line 78) | int libfsntfs_error_backtrace_fprint(
  function libfsntfs_error_backtrace_sprint (line 95) | int libfsntfs_error_backtrace_sprint(

FILE: libfsntfs/libfsntfs_extent.c
  function libfsntfs_extent_initialize (line 33) | int libfsntfs_extent_initialize(
  function libfsntfs_extent_free (line 110) | int libfsntfs_extent_free(
  function libfsntfs_extent_get_values (line 140) | int libfsntfs_extent_get_values(

FILE: libfsntfs/libfsntfs_extent.h
  type libfsntfs_extent_t (line 34) | typedef struct libfsntfs_extent libfsntfs_extent_t;
  type libfsntfs_extent (line 36) | struct libfsntfs_extent

FILE: libfsntfs/libfsntfs_file_entry.c
  function libfsntfs_file_entry_initialize (line 53) | int libfsntfs_file_entry_initialize(
  function libfsntfs_file_entry_free (line 379) | int libfsntfs_file_entry_free(
  function libfsntfs_file_entry_is_empty (line 542) | int libfsntfs_file_entry_is_empty(
  function libfsntfs_file_entry_is_allocated (line 614) | int libfsntfs_file_entry_is_allocated(
  function libfsntfs_file_entry_is_corrupted (line 686) | int libfsntfs_file_entry_is_corrupted(
  function libfsntfs_internal_file_entry_get_attribute_by_index (line 758) | int libfsntfs_internal_file_entry_get_attribute_by_index(
  function libfsntfs_internal_file_entry_get_reparse_point_attribute (line 945) | int libfsntfs_internal_file_entry_get_reparse_point_attribute(
  function libfsntfs_internal_file_entry_get_security_descriptor_attribute (line 1018) | int libfsntfs_internal_file_entry_get_security_descriptor_attribute(
  function libfsntfs_internal_file_entry_get_standard_information_attribute (line 1090) | int libfsntfs_internal_file_entry_get_standard_information_attribute(
  function libfsntfs_file_entry_get_file_reference (line 1163) | int libfsntfs_file_entry_get_file_reference(
  function libfsntfs_file_entry_get_base_record_file_reference (line 1246) | int libfsntfs_file_entry_get_base_record_file_reference(
  function libfsntfs_file_entry_get_parent_file_reference (line 1321) | int libfsntfs_file_entry_get_parent_file_reference(
  function libfsntfs_file_entry_get_parent_file_reference_by_attribute_index (line 1398) | int libfsntfs_file_entry_get_parent_file_reference_by_attribute_index(
  function libfsntfs_file_entry_get_journal_sequence_number (line 1489) | int libfsntfs_file_entry_get_journal_sequence_number(
  function libfsntfs_file_entry_get_creation_time (line 1562) | int libfsntfs_file_entry_get_creation_time(
  function libfsntfs_file_entry_get_modification_time (line 1670) | int libfsntfs_file_entry_get_modification_time(
  function libfsntfs_file_entry_get_access_time (line 1778) | int libfsntfs_file_entry_get_access_time(
  function libfsntfs_file_entry_get_entry_modification_time (line 1886) | int libfsntfs_file_entry_get_entry_modification_time(
  function libfsntfs_file_entry_get_file_attribute_flags (line 1994) | int libfsntfs_file_entry_get_file_attribute_flags(
  function libfsntfs_file_entry_get_i30_file_reference (line 2102) | int libfsntfs_file_entry_get_i30_file_reference(
  function libfsntfs_file_entry_get_i30_creation_time (line 2191) | int libfsntfs_file_entry_get_i30_creation_time(
  function libfsntfs_file_entry_get_i30_modification_time (line 2269) | int libfsntfs_file_entry_get_i30_modification_time(
  function libfsntfs_file_entry_get_i30_access_time (line 2347) | int libfsntfs_file_entry_get_i30_access_time(
  function libfsntfs_file_entry_get_i30_entry_modification_time (line 2425) | int libfsntfs_file_entry_get_i30_entry_modification_time(
  function libfsntfs_file_entry_get_i30_size (line 2503) | int libfsntfs_file_entry_get_i30_size(
  function libfsntfs_file_entry_get_i30_file_attribute_flags (line 2581) | int libfsntfs_file_entry_get_i30_file_attribute_flags(
  function libfsntfs_file_entry_get_utf8_name_size (line 2661) | int libfsntfs_file_entry_get_utf8_name_size(
  function libfsntfs_file_entry_get_utf8_name (line 2741) | int libfsntfs_file_entry_get_utf8_name(
  function libfsntfs_file_entry_get_utf16_name_size (line 2823) | int libfsntfs_file_entry_get_utf16_name_size(
  function libfsntfs_file_entry_get_utf16_name (line 2903) | int libfsntfs_file_entry_get_utf16_name(
  function libfsntfs_file_entry_get_name_attribute_index (line 2982) | int libfsntfs_file_entry_get_name_attribute_index(
  function libfsntfs_file_entry_get_utf8_name_size_by_attribute_index (line 3140) | int libfsntfs_file_entry_get_utf8_name_size_by_attribute_index(
  function libfsntfs_file_entry_get_utf8_name_by_attribute_index (line 3233) | int libfsntfs_file_entry_get_utf8_name_by_attribute_index(
  function libfsntfs_file_entry_get_utf16_name_size_by_attribute_index (line 3328) | int libfsntfs_file_entry_get_utf16_name_size_by_attribute_index(
  function libfsntfs_file_entry_get_utf16_name_by_attribute_index (line 3420) | int libfsntfs_file_entry_get_utf16_name_by_attribute_index(
  function libfsntfs_internal_file_entry_get_path_hint (line 3513) | int libfsntfs_internal_file_entry_get_path_hint(
  function libfsntfs_file_entry_get_utf8_path_hint_size (line 3773) | int libfsntfs_file_entry_get_utf8_path_hint_size(
  function libfsntfs_file_entry_get_utf8_path_hint (line 3866) | int libfsntfs_file_entry_get_utf8_path_hint(
  function libfsntfs_file_entry_get_utf16_path_hint_size (line 3961) | int libfsntfs_file_entry_get_utf16_path_hint_size(
  function libfsntfs_file_entry_get_utf16_path_hint (line 4054) | int libfsntfs_file_entry_get_utf16_path_hint(
  function libfsntfs_file_entry_get_utf8_symbolic_link_target_size (line 4150) | int libfsntfs_file_entry_get_utf8_symbolic_link_target_size(
  function libfsntfs_file_entry_get_utf8_symbolic_link_target (line 4271) | int libfsntfs_file_entry_get_utf8_symbolic_link_target(
  function libfsntfs_file_entry_get_utf16_symbolic_link_target_size (line 4394) | int libfsntfs_file_entry_get_utf16_symbolic_link_target_size(
  function libfsntfs_file_entry_get_utf16_symbolic_link_target (line 4515) | int libfsntfs_file_entry_get_utf16_symbolic_link_target(
  function libfsntfs_file_entry_get_security_descriptor_size (line 4636) | int libfsntfs_file_entry_get_security_descriptor_size(
  function libfsntfs_file_entry_get_security_descriptor (line 4809) | int libfsntfs_file_entry_get_security_descriptor(
  function libfsntfs_file_entry_get_number_of_attributes (line 4984) | int libfsntfs_file_entry_get_number_of_attributes(
  function libfsntfs_file_entry_get_attribute_by_index (line 5056) | int libfsntfs_file_entry_get_attribute_by_index(
  function libfsntfs_file_entry_has_i30_entry (line 5154) | int libfsntfs_file_entry_has_i30_entry(
  function libfsntfs_file_entry_has_directory_entries_index (line 5185) | int libfsntfs_file_entry_has_directory_entries_index(
  function libfsntfs_file_entry_has_default_data_stream (line 5257) | int libfsntfs_file_entry_has_default_data_stream(
  function libfsntfs_file_entry_is_symbolic_link (line 5329) | int libfsntfs_file_entry_is_symbolic_link(
  function libfsntfs_file_entry_get_number_of_alternate_data_streams (line 5430) | int libfsntfs_file_entry_get_number_of_alternate_data_streams(
  function libfsntfs_file_entry_get_alternate_data_stream_by_index (line 5502) | int libfsntfs_file_entry_get_alternate_data_stream_by_index(
  function libfsntfs_file_entry_has_alternate_data_stream_by_utf8_name (line 5620) | int libfsntfs_file_entry_has_alternate_data_stream_by_utf8_name(
  function libfsntfs_file_entry_has_alternate_data_stream_by_utf16_name (line 5698) | int libfsntfs_file_entry_has_alternate_data_stream_by_utf16_name(
  function libfsntfs_file_entry_get_alternate_data_stream_by_utf8_name (line 5776) | int libfsntfs_file_entry_get_alternate_data_stream_by_utf8_name(
  function libfsntfs_file_entry_get_alternate_data_stream_by_utf16_name (line 5896) | int libfsntfs_file_entry_get_alternate_data_stream_by_utf16_name(
  function libfsntfs_file_entry_get_number_of_sub_file_entries (line 6016) | int libfsntfs_file_entry_get_number_of_sub_file_entries(
  function libfsntfs_file_entry_get_sub_file_entry_by_index (line 6107) | int libfsntfs_file_entry_get_sub_file_entry_by_index(
  function libfsntfs_file_entry_get_sub_file_entry_by_utf8_name (line 6256) | int libfsntfs_file_entry_get_sub_file_entry_by_utf8_name(
  function libfsntfs_file_entry_get_sub_file_entry_by_utf16_name (line 6407) | int libfsntfs_file_entry_get_sub_file_entry_by_utf16_name(
  function libfsntfs_file_entry_read_buffer (line 6558) | ssize_t libfsntfs_file_entry_read_buffer(
  function libfsntfs_file_entry_read_buffer_at_offset (line 6647) | ssize_t libfsntfs_file_entry_read_buffer_at_offset(
  function off64_t (line 6738) | off64_t libfsntfs_file_entry_seek_offset(
  function libfsntfs_file_entry_get_offset (line 6824) | int libfsntfs_file_entry_get_offset(
  function libfsntfs_file_entry_get_size (line 6907) | int libfsntfs_file_entry_get_size(
  function libfsntfs_file_entry_get_number_of_extents (line 6998) | int libfsntfs_file_entry_get_number_of_extents(
  function libfsntfs_file_entry_get_extent_by_index (line 7089) | int libfsntfs_file_entry_get_extent_by_index(

FILE: libfsntfs/libfsntfs_file_entry.h
  type libfsntfs_internal_file_entry_t (line 49) | typedef struct libfsntfs_internal_file_entry libfsntfs_internal_file_ent...
  type libfsntfs_internal_file_entry (line 51) | struct libfsntfs_internal_file_entry

FILE: libfsntfs/libfsntfs_file_name_attribute.c
  function libfsntfs_file_name_attribute_get_parent_file_reference (line 37) | int libfsntfs_file_name_attribute_get_parent_file_reference(
  function libfsntfs_file_name_attribute_get_creation_time (line 104) | int libfsntfs_file_name_attribute_get_creation_time(
  function libfsntfs_file_name_attribute_get_modification_time (line 171) | int libfsntfs_file_name_attribute_get_modification_time(
  function libfsntfs_file_name_attribute_get_access_time (line 238) | int libfsntfs_file_name_attribute_get_access_time(
  function libfsntfs_file_name_attribute_get_entry_modification_time (line 305) | int libfsntfs_file_name_attribute_get_entry_modification_time(
  function libfsntfs_file_name_attribute_get_file_attribute_flags (line 372) | int libfsntfs_file_name_attribute_get_file_attribute_flags(
  function libfsntfs_file_name_attribute_get_name_space (line 439) | int libfsntfs_file_name_attribute_get_name_space(
  function libfsntfs_file_name_attribute_get_utf8_name_size (line 508) | int libfsntfs_file_name_attribute_get_utf8_name_size(
  function libfsntfs_file_name_attribute_get_utf8_name (line 577) | int libfsntfs_file_name_attribute_get_utf8_name(
  function libfsntfs_file_name_attribute_get_utf16_name_size (line 648) | int libfsntfs_file_name_attribute_get_utf16_name_size(
  function libfsntfs_file_name_attribute_get_utf16_name (line 717) | int libfsntfs_file_name_attribute_get_utf16_name(

FILE: libfsntfs/libfsntfs_file_name_values.c
  function libfsntfs_file_name_values_initialize (line 47) | int libfsntfs_file_name_values_initialize(
  function libfsntfs_file_name_values_free (line 119) | int libfsntfs_file_name_values_free(
  function libfsntfs_file_name_values_clone (line 154) | int libfsntfs_file_name_values_clone(
  function libfsntfs_file_name_values_set_name (line 252) | int libfsntfs_file_name_values_set_name(
  function libfsntfs_file_name_values_read_data (line 353) | int libfsntfs_file_name_values_read_data(
  function libfsntfs_file_name_values_read_from_mft_attribute (line 686) | int libfsntfs_file_name_values_read_from_mft_attribute(
  function libfsntfs_file_name_values_get_parent_file_reference (line 795) | int libfsntfs_file_name_values_get_parent_file_reference(
  function libfsntfs_file_name_values_get_creation_time (line 832) | int libfsntfs_file_name_values_get_creation_time(
  function libfsntfs_file_name_values_get_modification_time (line 869) | int libfsntfs_file_name_values_get_modification_time(
  function libfsntfs_file_name_values_get_access_time (line 906) | int libfsntfs_file_name_values_get_access_time(
  function libfsntfs_file_name_values_get_entry_modification_time (line 943) | int libfsntfs_file_name_values_get_entry_modification_time(
  function libfsntfs_file_name_values_get_size (line 980) | int libfsntfs_file_name_values_get_size(
  function libfsntfs_file_name_values_get_file_attribute_flags (line 1017) | int libfsntfs_file_name_values_get_file_attribute_flags(
  function libfsntfs_file_name_values_get_name_space (line 1054) | int libfsntfs_file_name_values_get_name_space(
  function libfsntfs_file_name_values_get_utf8_name_size (line 1093) | int libfsntfs_file_name_values_get_utf8_name_size(
  function libfsntfs_file_name_values_get_utf8_name (line 1135) | int libfsntfs_file_name_values_get_utf8_name(
  function libfsntfs_file_name_values_get_utf16_name_size (line 1191) | int libfsntfs_file_name_values_get_utf16_name_size(
  function libfsntfs_file_name_values_get_utf16_name (line 1233) | int libfsntfs_file_name_values_get_utf16_name(

FILE: libfsntfs/libfsntfs_file_name_values.h
  type libfsntfs_file_name_values_t (line 35) | typedef struct libfsntfs_file_name_values libfsntfs_file_name_values_t;
  type libfsntfs_file_name_values (line 37) | struct libfsntfs_file_name_values

FILE: libfsntfs/libfsntfs_file_system.c
  function libfsntfs_file_system_initialize (line 49) | int libfsntfs_file_system_initialize(
  function libfsntfs_file_system_free (line 141) | int libfsntfs_file_system_free(
  function libfsntfs_file_system_read_mft (line 236) | int libfsntfs_file_system_read_mft(
  function libfsntfs_file_system_read_bitmap (line 759) | int libfsntfs_file_system_read_bitmap(
  function libfsntfs_file_system_read_security_descriptors (line 1106) | int libfsntfs_file_system_read_security_descriptors(
  function libfsntfs_file_system_get_number_of_mft_entries (line 1320) | int libfsntfs_file_system_get_number_of_mft_entries(
  function libfsntfs_file_system_get_mft_entry_by_index (line 1358) | int libfsntfs_file_system_get_mft_entry_by_index(
  function libfsntfs_file_system_get_mft_entry_by_index_no_cache (line 1402) | int libfsntfs_file_system_get_mft_entry_by_index_no_cache(
  function libfsntfs_file_system_get_security_descriptor_values_by_identifier (line 1446) | int libfsntfs_file_system_get_security_descriptor_values_by_identifier(
  function libfsntfs_file_system_get_path_hint (line 1495) | int libfsntfs_file_system_get_path_hint(

FILE: libfsntfs/libfsntfs_file_system.h
  type libfsntfs_file_system_t (line 42) | typedef struct libfsntfs_file_system libfsntfs_file_system_t;
  type libfsntfs_file_system (line 44) | struct libfsntfs_file_system

FILE: libfsntfs/libfsntfs_fixup_values.c
  function libfsntfs_fixup_values_apply (line 33) | int libfsntfs_fixup_values_apply(

FILE: libfsntfs/libfsntfs_index.c
  function libfsntfs_index_initialize (line 53) | int libfsntfs_index_initialize(
  function libfsntfs_index_free (line 203) | int libfsntfs_index_free(
  function libfsntfs_index_read (line 321) | int libfsntfs_index_read(
  function libfsntfs_index_read_root_header (line 633) | int libfsntfs_index_read_root_header(
  function libfsntfs_index_read_root_node (line 749) | int libfsntfs_index_read_root_node(
  function libfsntfs_index_read_bitmap (line 908) | int libfsntfs_index_read_bitmap(
  function libfsntfs_index_get_index_entry_size (line 1000) | int libfsntfs_index_get_index_entry_size(
  function libfsntfs_index_get_attribute_type (line 1038) | int libfsntfs_index_get_attribute_type(
  function libfsntfs_index_get_collation_type (line 1076) | int libfsntfs_index_get_collation_type(
  function libfsntfs_index_sub_node_is_allocated (line 1114) | int libfsntfs_index_sub_node_is_allocated(
  function libfsntfs_index_get_sub_node (line 1182) | int libfsntfs_index_get_sub_node(

FILE: libfsntfs/libfsntfs_index.h
  type libfsntfs_index_t (line 44) | typedef struct libfsntfs_index libfsntfs_index_t;
  type libfsntfs_index (line 46) | struct libfsntfs_index

FILE: libfsntfs/libfsntfs_index_entry.c
  function libfsntfs_index_entry_initialize (line 40) | int libfsntfs_index_entry_initialize(
  function libfsntfs_index_entry_free (line 117) | int libfsntfs_index_entry_free(
  function libfsntfs_index_entry_read_file_io_handle (line 164) | int libfsntfs_index_entry_read_file_io_handle(

FILE: libfsntfs/libfsntfs_index_entry.h
  type libfsntfs_index_entry_t (line 36) | typedef struct libfsntfs_index_entry libfsntfs_index_entry_t;
  type libfsntfs_index_entry (line 38) | struct libfsntfs_index_entry

FILE: libfsntfs/libfsntfs_index_entry_header.c
  function libfsntfs_index_entry_header_initialize (line 40) | int libfsntfs_index_entry_header_initialize(
  function libfsntfs_index_entry_header_free (line 112) | int libfsntfs_index_entry_header_free(
  function libfsntfs_index_entry_header_read_data (line 142) | int libfsntfs_index_entry_header_read_data(
  function libfsntfs_index_entry_header_get_fixup_values_offset (line 281) | int libfsntfs_index_entry_header_get_fixup_values_offset(
  function libfsntfs_index_entry_header_get_number_of_fixup_values (line 318) | int libfsntfs_index_entry_header_get_number_of_fixup_values(

FILE: libfsntfs/libfsntfs_index_entry_header.h
  type libfsntfs_index_entry_header_t (line 35) | typedef struct libfsntfs_index_entry_header libfsntfs_index_entry_header_t;
  type libfsntfs_index_entry_header (line 37) | struct libfsntfs_index_entry_header

FILE: libfsntfs/libfsntfs_index_entry_vector.c
  function libfsntfs_index_entry_vector_initialize (line 40) | int libfsntfs_index_entry_vector_initialize(
  function libfsntfs_index_entry_vector_read_element_data (line 366) | int libfsntfs_index_entry_vector_read_element_data(

FILE: libfsntfs/libfsntfs_index_node.c
  function libfsntfs_index_node_initialize (line 40) | int libfsntfs_index_node_initialize(
  function libfsntfs_index_node_free (line 131) | int libfsntfs_index_node_free(
  function libfsntfs_index_node_read_header (line 192) | int libfsntfs_index_node_read_header(
  function libfsntfs_index_node_read_values (line 290) | int libfsntfs_index_node_read_values(
  function libfsntfs_index_node_get_number_of_values (line 522) | int libfsntfs_index_node_get_number_of_values(
  function libfsntfs_index_node_get_value_by_index (line 560) | int libfsntfs_index_node_get_value_by_index(

FILE: libfsntfs/libfsntfs_index_node.h
  type libfsntfs_index_node_t (line 37) | typedef struct libfsntfs_index_node libfsntfs_index_node_t;
  type libfsntfs_index_node (line 39) | struct libfsntfs_index_node

FILE: libfsntfs/libfsntfs_index_node_header.c
  function libfsntfs_index_node_header_initialize (line 39) | int libfsntfs_index_node_header_initialize(
  function libfsntfs_index_node_header_free (line 116) | int libfsntfs_index_node_header_free(
  function libfsntfs_index_node_header_read_data (line 146) | int libfsntfs_index_node_header_read_data(

FILE: libfsntfs/libfsntfs_index_node_header.h
  type libfsntfs_index_node_header_t (line 34) | typedef struct libfsntfs_index_node_header libfsntfs_index_node_header_t;
  type libfsntfs_index_node_header (line 36) | struct libfsntfs_index_node_header

FILE: libfsntfs/libfsntfs_index_root_header.c
  function libfsntfs_index_root_header_initialize (line 38) | int libfsntfs_index_root_header_initialize(
  function libfsntfs_index_root_header_free (line 110) | int libfsntfs_index_root_header_free(
  function libfsntfs_index_root_header_read_data (line 140) | int libfsntfs_index_root_header_read_data(
  function libfsntfs_index_root_header_get_index_entry_size (line 251) | int libfsntfs_index_root_header_get_index_entry_size(
  function libfsntfs_index_root_header_get_attribute_type (line 288) | int libfsntfs_index_root_header_get_attribute_type(
  function libfsntfs_index_root_header_get_collation_type (line 325) | int libfsntfs_index_root_header_get_collation_type(

FILE: libfsntfs/libfsntfs_index_root_header.h
  type libfsntfs_index_root_header_t (line 35) | typedef struct libfsntfs_index_root_header libfsntfs_index_root_header_t;
  type libfsntfs_index_root_header (line 37) | struct libfsntfs_index_root_header

FILE: libfsntfs/libfsntfs_index_value.c
  function libfsntfs_index_value_initialize (line 39) | int libfsntfs_index_value_initialize(
  function libfsntfs_index_value_free (line 116) | int libfsntfs_index_value_free(
  function libfsntfs_index_value_read (line 156) | ssize_t libfsntfs_index_value_read(

FILE: libfsntfs/libfsntfs_index_value.h
  type libfsntfs_index_value_t (line 34) | typedef struct libfsntfs_index_value libfsntfs_index_value_t;
  type libfsntfs_index_value (line 36) | struct libfsntfs_index_value

FILE: libfsntfs/libfsntfs_io_handle.c
  function libfsntfs_io_handle_initialize (line 35) | int libfsntfs_io_handle_initialize(
  function libfsntfs_io_handle_free (line 150) | int libfsntfs_io_handle_free(
  function libfsntfs_io_handle_clear (line 210) | int libfsntfs_io_handle_clear(

FILE: libfsntfs/libfsntfs_io_handle.h
  type libfsntfs_io_handle_t (line 37) | typedef struct libfsntfs_io_handle libfsntfs_io_handle_t;
  type libfsntfs_io_handle (line 39) | struct libfsntfs_io_handle

FILE: libfsntfs/libfsntfs_logged_utility_stream_values.c
  function libfsntfs_logged_utility_stream_values_initialize (line 39) | int libfsntfs_logged_utility_stream_values_initialize(
  function libfsntfs_logged_utility_stream_values_free (line 111) | int libfsntfs_logged_utility_stream_values_free(
  function libfsntfs_logged_utility_stream_values_read_data (line 141) | int libfsntfs_logged_utility_stream_values_read_data(
  function libfsntfs_logged_utility_stream_values_read_from_mft_attribute (line 212) | int libfsntfs_logged_utility_stream_values_read_from_mft_attribute(

FILE: libfsntfs/libfsntfs_logged_utility_stream_values.h
  type libfsntfs_logged_utility_stream_values_t (line 35) | typedef struct libfsntfs_logged_utility_stream_values libfsntfs_logged_u...
  type libfsntfs_logged_utility_stream_values (line 37) | struct libfsntfs_logged_utility_stream_values

FILE: libfsntfs/libfsntfs_mft.c
  function libfsntfs_mft_initialize (line 41) | int libfsntfs_mft_initialize(
  function libfsntfs_mft_free (line 195) | int libfsntfs_mft_free(
  function libfsntfs_mft_read_list_data_mft_entries (line 282) | int libfsntfs_mft_read_list_data_mft_entries(
  function libfsntfs_mft_get_number_of_entries (line 487) | int libfsntfs_mft_get_number_of_entries(
  function libfsntfs_mft_get_mft_entry_by_index (line 524) | int libfsntfs_mft_get_mft_entry_by_index(
  function libfsntfs_mft_get_mft_entry_by_index_no_cache (line 613) | int libfsntfs_mft_get_mft_entry_by_index_no_cache(

FILE: libfsntfs/libfsntfs_mft.h
  type libfsntfs_mft_t (line 41) | typedef struct libfsntfs_mft libfsntfs_mft_t;
  type libfsntfs_mft (line 43) | struct libfsntfs_mft

FILE: libfsntfs/libfsntfs_mft_attribute.c
  function libfsntfs_mft_attribute_initialize (line 44) | int libfsntfs_mft_attribute_initialize(
  function libfsntfs_mft_attribute_free (line 116) | int libfsntfs_mft_attribute_free(
  function libfsntfs_mft_attribute_clone (line 174) | int libfsntfs_mft_attribute_clone(
  function libfsntfs_mft_attribute_read_data (line 348) | int libfsntfs_mft_attribute_read_data(
  function libfsntfs_mft_attribute_data_is_resident (line 1239) | int libfsntfs_mft_attribute_data_is_resident(
  function libfsntfs_mft_attribute_get_type (line 1266) | int libfsntfs_mft_attribute_get_type(
  function libfsntfs_mft_attribute_get_data_flags (line 1303) | int libfsntfs_mft_attribute_get_data_flags(
  function libfsntfs_mft_attribute_get_data_size (line 1340) | int libfsntfs_mft_attribute_get_data_size(
  function libfsntfs_mft_attribute_get_data_vcn_range (line 1377) | int libfsntfs_mft_attribute_get_data_vcn_range(
  function libfsntfs_mft_attribute_get_allocated_data_size (line 1431) | int libfsntfs_mft_attribute_get_allocated_data_size(
  function libfsntfs_mft_attribute_get_valid_data_size (line 1468) | int libfsntfs_mft_attribute_get_valid_data_size(
  function libfsntfs_mft_attribute_get_utf8_name_size (line 1506) | int libfsntfs_mft_attribute_get_utf8_name_size(
  function libfsntfs_mft_attribute_get_utf8_name (line 1566) | int libfsntfs_mft_attribute_get_utf8_name(
  function libfsntfs_mft_attribute_get_utf16_name_size (line 1620) | int libfsntfs_mft_attribute_get_utf16_name_size(
  function libfsntfs_mft_attribute_get_utf16_name (line 1680) | int libfsntfs_mft_attribute_get_utf16_name(
  function libfsntfs_mft_attribute_compare_name_with_utf8_string (line 1733) | int libfsntfs_mft_attribute_compare_name_with_utf8_string(
  function libfsntfs_mft_attribute_compare_name_with_utf16_string (line 1786) | int libfsntfs_mft_attribute_compare_name_with_utf16_string(
  function libfsntfs_mft_attribute_get_compression_unit_size (line 1839) | int libfsntfs_mft_attribute_get_compression_unit_size(
  function libfsntfs_mft_attribute_get_resident_data (line 1876) | int libfsntfs_mft_attribute_get_resident_data(
  function libfsntfs_mft_attribute_get_number_of_data_runs (line 1948) | int libfsntfs_mft_attribute_get_number_of_data_runs(
  function libfsntfs_mft_attribute_get_data_run_by_index (line 2004) | int libfsntfs_mft_attribute_get_data_run_by_index(
  function libfsntfs_mft_attribute_get_data_extents_array (line 2045) | int libfsntfs_mft_attribute_get_data_extents_array(
  function libfsntfs_mft_attribute_get_next_attribute (line 2349) | int libfsntfs_mft_attribute_get_next_attribute(
  function libfsntfs_mft_attribute_append_to_chain (line 2386) | int libfsntfs_mft_attribute_append_to_chain(

FILE: libfsntfs/libfsntfs_mft_attribute.h
  type libfsntfs_mft_attribute_t (line 37) | typedef struct libfsntfs_mft_attribute libfsntfs_mft_attribute_t;
  type libfsntfs_mft_attribute (line 39) | struct libfsntfs_mft_attribute

FILE: libfsntfs/libfsntfs_mft_attribute_list.c
  function libfsntfs_mft_attribute_list_initialize (line 46) | int libfsntfs_mft_attribute_list_initialize(
  function libfsntfs_mft_attribute_list_free (line 161) | int libfsntfs_mft_attribute_list_free(
  function libfsntfs_mft_attribute_list_file_reference_free (line 220) | int libfsntfs_mft_attribute_list_file_reference_free(
  function libfsntfs_mft_attribute_list_read_data (line 250) | int libfsntfs_mft_attribute_list_read_data(
  function libfsntfs_mft_attribute_list_read_from_attribute (line 390) | int libfsntfs_mft_attribute_list_read_from_attribute(
  function libfsntfs_mft_attribute_list_get_number_of_entries (line 575) | int libfsntfs_mft_attribute_list_get_number_of_entries(
  function libfsntfs_mft_attribute_list_get_entry_by_index (line 613) | int libfsntfs_mft_attribute_list_get_entry_by_index(
  function libfsntfs_mft_attribute_list_compare_by_base_record_file_reference (line 654) | int libfsntfs_mft_attribute_list_compare_by_base_record_file_reference(
  function libfsntfs_mft_attribute_list_get_number_of_file_references (line 702) | int libfsntfs_mft_attribute_list_get_number_of_file_references(
  function libfsntfs_mft_attribute_list_get_file_reference_by_index (line 740) | int libfsntfs_mft_attribute_list_get_file_reference_by_index(
  function libfsntfs_mft_attribute_list_compare_file_reference (line 795) | int libfsntfs_mft_attribute_list_compare_file_reference(
  function libfsntfs_mft_attribute_list_insert_file_reference (line 843) | int libfsntfs_mft_attribute_list_insert_file_reference(

FILE: libfsntfs/libfsntfs_mft_attribute_list.h
  type libfsntfs_mft_attribute_list_t (line 39) | typedef struct libfsntfs_mft_attribute_list libfsntfs_mft_attribute_list_t;
  type libfsntfs_mft_attribute_list (line 41) | struct libfsntfs_mft_attribute_list

FILE: libfsntfs/libfsntfs_mft_attribute_list_entry.c
  function libfsntfs_mft_attribute_list_entry_initialize (line 41) | int libfsntfs_mft_attribute_list_entry_initialize(
  function libfsntfs_mft_attribute_list_entry_free (line 113) | int libfsntfs_mft_attribute_list_entry_free(
  function libfsntfs_mft_attribute_list_entry_read_data (line 148) | int libfsntfs_mft_attribute_list_entry_read_data(
  function libfsntfs_mft_attribute_list_entry_get_attribute_type (line 455) | int libfsntfs_mft_attribute_list_entry_get_attribute_type(
  function libfsntfs_mft_attribute_list_entry_get_file_reference (line 493) | int libfsntfs_mft_attribute_list_entry_get_file_reference(
  function libfsntfs_mft_attribute_list_entry_get_utf8_name_size (line 531) | int libfsntfs_mft_attribute_list_entry_get_utf8_name_size(
  function libfsntfs_mft_attribute_list_entry_get_utf8_name (line 591) | int libfsntfs_mft_attribute_list_entry_get_utf8_name(
  function libfsntfs_mft_attribute_list_entry_get_utf16_name_size (line 645) | int libfsntfs_mft_attribute_list_entry_get_utf16_name_size(
  function libfsntfs_mft_attribute_list_entry_get_utf16_name (line 705) | int libfsntfs_mft_attribute_list_entry_get_utf16_name(
  function libfsntfs_mft_attribute_list_entry_compare_name_with_utf8_string (line 758) | int libfsntfs_mft_attribute_list_entry_compare_name_with_utf8_string(
  function libfsntfs_mft_attribute_list_entry_compare_name_with_utf16_string (line 811) | int libfsntfs_mft_attribute_list_entry_compare_name_with_utf16_string(

FILE: libfsntfs/libfsntfs_mft_attribute_list_entry.h
  type libfsntfs_mft_attribute_list_entry_t (line 34) | typedef struct libfsntfs_mft_attribute_list_entry libfsntfs_mft_attribut...
  type libfsntfs_mft_attribute_list_entry (line 36) | struct libfsntfs_mft_attribute_list_entry

FILE: libfsntfs/libfsntfs_mft_entry.c
  function libfsntfs_mft_entry_check_for_empty_block (line 55) | int libfsntfs_mft_entry_check_for_empty_block(
  function libfsntfs_mft_entry_initialize (line 149) | int libfsntfs_mft_entry_initialize(
  function libfsntfs_mft_entry_free (line 275) | int libfsntfs_mft_entry_free(
  function libfsntfs_mft_entry_read_data (line 377) | int libfsntfs_mft_entry_read_data(
  function libfsntfs_mft_entry_read_file_io_handle (line 689) | int libfsntfs_mft_entry_read_file_io_handle(
  function libfsntfs_mft_entry_read_attributes_data (line 831) | int libfsntfs_mft_entry_read_attributes_data(
  function libfsntfs_mft_entry_read_attributes (line 1081) | int libfsntfs_mft_entry_read_attributes(
  function libfsntfs_mft_entry_read_attribute_list (line 1259) | int libfsntfs_mft_entry_read_attribute_list(
  function libfsntfs_mft_entry_read_attribute_list_data_mft_entry_by_index (line 1433) | int libfsntfs_mft_entry_read_attribute_list_data_mft_entry_by_index(
  function libfsntfs_mft_entry_read_attribute_list_data_mft_entries (line 1628) | int libfsntfs_mft_entry_read_attribute_list_data_mft_entries(
  function libfsntfs_mft_entry_is_empty (line 1760) | int libfsntfs_mft_entry_is_empty(
  function libfsntfs_mft_entry_is_allocated (line 1783) | int libfsntfs_mft_entry_is_allocated(
  function libfsntfs_mft_entry_is_corrupted (line 1821) | int libfsntfs_mft_entry_is_corrupted(
  function libfsntfs_mft_entry_get_file_reference (line 1844) | int libfsntfs_mft_entry_get_file_reference(
  function libfsntfs_mft_entry_get_base_record_file_reference (line 1881) | int libfsntfs_mft_entry_get_base_record_file_reference(
  function libfsntfs_mft_entry_get_journal_sequence_number (line 1923) | int libfsntfs_mft_entry_get_journal_sequence_number(
  function libfsntfs_mft_entry_get_number_of_attributes (line 1961) | int libfsntfs_mft_entry_get_number_of_attributes(
  function libfsntfs_mft_entry_get_attribute_by_index (line 1999) | int libfsntfs_mft_entry_get_attribute_by_index(
  function libfsntfs_mft_entry_get_standard_information_attribute (line 2040) | int libfsntfs_mft_entry_get_standard_information_attribute(
  function libfsntfs_mft_entry_get_volume_information_attribute (line 2084) | int libfsntfs_mft_entry_get_volume_information_attribute(
  function libfsntfs_mft_entry_get_volume_name_attribute (line 2128) | int libfsntfs_mft_entry_get_volume_name_attribute(
  function libfsntfs_mft_entry_get_number_of_alternate_data_attributes (line 2172) | int libfsntfs_mft_entry_get_number_of_alternate_data_attributes(
  function libfsntfs_mft_entry_get_alternate_data_attribute_by_index (line 2210) | int libfsntfs_mft_entry_get_alternate_data_attribute_by_index(
  function libfsntfs_mft_entry_get_alternate_data_attribute_by_utf8_name (line 2251) | int libfsntfs_mft_entry_get_alternate_data_attribute_by_utf8_name(
  function libfsntfs_mft_entry_get_alternate_data_attribute_by_utf16_name (line 2354) | int libfsntfs_mft_entry_get_alternate_data_attribute_by_utf16_name(
  function libfsntfs_mft_entry_set_attribute_helper_values (line 2457) | int libfsntfs_mft_entry_set_attribute_helper_values(
  function libfsntfs_mft_entry_set_data_attribute_helper_values (line 2732) | int libfsntfs_mft_entry_set_data_attribute_helper_values(
  function libfsntfs_mft_entry_get_data_attribute_by_utf8_name (line 2941) | int libfsntfs_mft_entry_get_data_attribute_by_utf8_name(
  function libfsntfs_mft_entry_has_directory_entries_index (line 3083) | int libfsntfs_mft_entry_has_directory_entries_index(
  function libfsntfs_mft_entry_read_element_data (line 3107) | int libfsntfs_mft_entry_read_element_data(

FILE: libfsntfs/libfsntfs_mft_entry.h
  type libfsntfs_mft_entry_t (line 43) | typedef struct libfsntfs_mft_entry libfsntfs_mft_entry_t;
  type libfsntfs_mft_entry (line 45) | struct libfsntfs_mft_entry

FILE: libfsntfs/libfsntfs_mft_entry_header.c
  function libfsntfs_mft_entry_header_initialize (line 38) | int libfsntfs_mft_entry_header_initialize(
  function libfsntfs_mft_entry_header_free (line 110) | int libfsntfs_mft_entry_header_free(
  function libfsntfs_mft_entry_header_read_data (line 140) | int libfsntfs_mft_entry_header_read_data(
  function libfsntfs_mft_entry_header_get_fixup_values_offset (line 404) | int libfsntfs_mft_entry_header_get_fixup_values_offset(
  function libfsntfs_mft_entry_header_get_number_of_fixup_values (line 441) | int libfsntfs_mft_entry_header_get_number_of_fixup_values(
  function libfsntfs_mft_entry_header_get_journal_sequence_number (line 478) | int libfsntfs_mft_entry_header_get_journal_sequence_number(
  function libfsntfs_mft_entry_header_get_reference_count (line 515) | int libfsntfs_mft_entry_header_get_reference_count(
  function libfsntfs_mft_entry_header_get_attributes_offset (line 552) | int libfsntfs_mft_entry_header_get_attributes_offset(
  function libfsntfs_mft_entry_header_get_used_entry_size (line 589) | int libfsntfs_mft_entry_header_get_used_entry_size(
  function libfsntfs_mft_entry_header_get_total_entry_size (line 626) | int libfsntfs_mft_entry_header_get_total_entry_size(
  function libfsntfs_mft_entry_header_get_base_record_file_reference (line 663) | int libfsntfs_mft_entry_header_get_base_record_file_reference(

FILE: libfsntfs/libfsntfs_mft_entry_header.h
  type libfsntfs_mft_entry_header_t (line 34) | typedef struct libfsntfs_mft_entry_header libfsntfs_mft_entry_header_t;
  type libfsntfs_mft_entry_header (line 36) | struct libfsntfs_mft_entry_header

FILE: libfsntfs/libfsntfs_mft_metadata_file.c
  function libfsntfs_mft_metadata_file_initialize (line 48) | int libfsntfs_mft_metadata_file_initialize(
  function libfsntfs_mft_metadata_file_free (line 158) | int libfsntfs_mft_metadata_file_free(
  function libfsntfs_mft_metadata_file_signal_abort (line 236) | int libfsntfs_mft_metadata_file_signal_abort(
  function libfsntfs_mft_metadata_file_open (line 275) | int libfsntfs_mft_metadata_file_open(
  function libfsntfs_mft_metadata_file_open_wide (line 444) | int libfsntfs_mft_metadata_file_open_wide(
  function libfsntfs_mft_metadata_file_open_file_io_handle (line 613) | int libfsntfs_mft_metadata_file_open_file_io_handle(
  function libfsntfs_mft_metadata_file_close (line 785) | int libfsntfs_mft_metadata_file_close(
  function libfsntfs_internal_mft_metadata_file_open_read (line 987) | int libfsntfs_internal_mft_metadata_file_open_read(
  function libfsntfs_internal_mft_metadata_file_get_volume_information_attribute (line 1102) | int libfsntfs_internal_mft_metadata_file_get_volume_information_attribute(
  function libfsntfs_internal_mft_metadata_file_get_volume_name_attribute (line 1214) | int libfsntfs_internal_mft_metadata_file_get_volume_name_attribute(
  function libfsntfs_mft_metadata_file_get_utf8_volume_name_size (line 1328) | int libfsntfs_mft_metadata_file_get_utf8_volume_name_size(
  function libfsntfs_mft_metadata_file_get_utf8_volume_name (line 1422) | int libfsntfs_mft_metadata_file_get_utf8_volume_name(
  function libfsntfs_mft_metadata_file_get_utf16_volume_name_size (line 1518) | int libfsntfs_mft_metadata_file_get_utf16_volume_name_size(
  function libfsntfs_mft_metadata_file_get_utf16_volume_name (line 1612) | int libfsntfs_mft_metadata_file_get_utf16_volume_name(
  function libfsntfs_mft_metadata_file_get_volume_version (line 1706) | int libfsntfs_mft_metadata_file_get_volume_version(
  function libfsntfs_mft_metadata_file_get_volume_flags (line 1800) | int libfsntfs_mft_metadata_file_get_volume_flags(
  function libfsntfs_mft_metadata_file_get_number_of_file_entries (line 1892) | int libfsntfs_mft_metadata_file_get_number_of_file_entries(
  function libfsntfs_mft_metadata_file_get_file_entry_by_index (line 1964) | int libfsntfs_mft_metadata_file_get_file_entry_by_index(

FILE: libfsntfs/libfsntfs_mft_metadata_file.h
  type libfsntfs_internal_mft_metadata_file_t (line 40) | typedef struct libfsntfs_internal_mft_metadata_file libfsntfs_internal_m...
  type libfsntfs_internal_mft_metadata_file (line 42) | struct libfsntfs_internal_mft_metadata_file

FILE: libfsntfs/libfsntfs_name.c
  function libfsntfs_name_compare (line 36) | int libfsntfs_name_compare(
  function libfsntfs_name_compare_short (line 195) | int libfsntfs_name_compare_short(
  function libfsntfs_name_compare_with_utf8_string (line 614) | int libfsntfs_name_compare_with_utf8_string(
  function libfsntfs_name_compare_with_utf16_string (line 762) | int libfsntfs_name_compare_with_utf16_string(

FILE: libfsntfs/libfsntfs_notify.c
  function libfsntfs_notify_set_verbose (line 38) | void libfsntfs_notify_set_verbose(
  function libfsntfs_notify_set_stream (line 48) | int libfsntfs_notify_set_stream(
  function libfsntfs_notify_stream_open (line 74) | int libfsntfs_notify_stream_open(
  function libfsntfs_notify_stream_close (line 99) | int libfsntfs_notify_stream_close(

FILE: libfsntfs/libfsntfs_object_identifier_attribute.c
  function libfsntfs_object_identifier_attribute_get_droid_file_identifier (line 37) | int libfsntfs_object_identifier_attribute_get_droid_file_identifier(
  function libfsntfs_object_identifier_attribute_get_birth_droid_volume_identifier (line 152) | int libfsntfs_object_identifier_attribute_get_birth_droid_volume_identif...
  function libfsntfs_object_identifier_attribute_get_birth_droid_file_identifier (line 286) | int libfsntfs_object_identifier_attribute_get_birth_droid_file_identifier(
  function libfsntfs_object_identifier_attribute_get_birth_droid_domain_identifier (line 420) | int libfsntfs_object_identifier_attribute_get_birth_droid_domain_identif...

FILE: libfsntfs/libfsntfs_object_identifier_values.c
  function libfsntfs_object_identifier_values_initialize (line 42) | int libfsntfs_object_identifier_values_initialize(
  function libfsntfs_object_identifier_values_free (line 114) | int libfsntfs_object_identifier_values_free(
  function libfsntfs_object_identifier_values_read_data (line 144) | int libfsntfs_object_identifier_values_read_data(
  function libfsntfs_object_identifier_values_read_from_mft_attribute (line 364) | int libfsntfs_object_identifier_values_read_from_mft_attribute(

FILE: libfsntfs/libfsntfs_object_identifier_values.h
  type libfsntfs_object_identifier_values_t (line 35) | typedef struct libfsntfs_object_identifier_values libfsntfs_object_ident...
  type libfsntfs_object_identifier_values (line 37) | struct libfsntfs_object_identifier_values

FILE: libfsntfs/libfsntfs_path_hint.c
  function libfsntfs_path_hint_initialize (line 35) | int libfsntfs_path_hint_initialize(
  function libfsntfs_path_hint_free (line 107) | int libfsntfs_path_hint_free(
  function libfsntfs_path_hint_compare_by_file_reference (line 142) | int libfsntfs_path_hint_compare_by_file_reference(
  function libfsntfs_path_hint_get_utf8_path_size (line 204) | int libfsntfs_path_hint_get_utf8_path_size(
  function libfsntfs_path_hint_get_utf8_path (line 244) | int libfsntfs_path_hint_get_utf8_path(
  function libfsntfs_path_hint_get_utf16_path_size (line 286) | int libfsntfs_path_hint_get_utf16_path_size(
  function libfsntfs_path_hint_get_utf16_path (line 326) | int libfsntfs_path_hint_get_utf16_path(

FILE: libfsntfs/libfsntfs_path_hint.h
  type libfsntfs_path_hint_t (line 34) | typedef struct libfsntfs_path_hint libfsntfs_path_hint_t;
  type libfsntfs_path_hint (line 36) | struct libfsntfs_path_hint

FILE: libfsntfs/libfsntfs_profiler.c
  function libfsntfs_profiler_initialize (line 42) | int libfsntfs_profiler_initialize(
  function libfsntfs_profiler_free (line 119) | int libfsntfs_profiler_free(
  function libfsntfs_profiler_open (line 149) | int libfsntfs_profiler_open(
  function libfsntfs_profiler_close (line 222) | int libfsntfs_profiler_close(
  function libfsntfs_profiler_start_timing (line 270) | int libfsntfs_profiler_start_timing(
  function libfsntfs_profiler_stop_timing (line 322) | int libfsntfs_profiler_stop_timing(

FILE: libfsntfs/libfsntfs_profiler.h
  type libfsntfs_profiler_t (line 37) | typedef struct libfsntfs_profiler libfsntfs_profiler_t;
  type libfsntfs_profiler (line 39) | struct libfsntfs_profiler

FILE: libfsntfs/libfsntfs_reparse_point_attribute.c
  function libfsntfs_reparse_point_attribute_get_tag (line 38) | int libfsntfs_reparse_point_attribute_get_tag(
  function libfsntfs_reparse_point_attribute_get_compression_method (line 105) | int libfsntfs_reparse_point_attribute_get_compression_method(
  function libfsntfs_reparse_point_attribute_get_utf8_substitute_name_size (line 176) | int libfsntfs_reparse_point_attribute_get_utf8_substitute_name_size(
  function libfsntfs_reparse_point_attribute_get_utf8_substitute_name (line 247) | int libfsntfs_reparse_point_attribute_get_utf8_substitute_name(
  function libfsntfs_reparse_point_attribute_get_utf16_substitute_name_size (line 320) | int libfsntfs_reparse_point_attribute_get_utf16_substitute_name_size(
  function libfsntfs_reparse_point_attribute_get_utf16_substitute_name (line 391) | int libfsntfs_reparse_point_attribute_get_utf16_substitute_name(
  function libfsntfs_reparse_point_attribute_get_utf8_print_name_size (line 464) | int libfsntfs_reparse_point_attribute_get_utf8_print_name_size(
  function libfsntfs_reparse_point_attribute_get_utf8_print_name (line 535) | int libfsntfs_reparse_point_attribute_get_utf8_print_name(
  function libfsntfs_reparse_point_attribute_get_utf16_print_name_size (line 608) | int libfsntfs_reparse_point_attribute_get_utf16_print_name_size(
  function libfsntfs_reparse_point_attribute_get_utf16_print_name (line 679) | int libfsntfs_reparse_point_attribute_get_utf16_print_name(

FILE: libfsntfs/libfsntfs_reparse_point_values.c
  function libfsntfs_reparse_point_values_initialize (line 44) | int libfsntfs_reparse_point_values_initialize(
  function libfsntfs_reparse_point_values_free (line 116) | int libfsntfs_reparse_point_values_free(
  function libfsntfs_reparse_point_values_read_data (line 151) | int libfsntfs_reparse_point_values_read_data(
  function libfsntfs_reparse_point_values_read_from_mft_attribute (line 654) | int libfsntfs_reparse_point_values_read_from_mft_attribute(
  function libfsntfs_reparse_point_values_get_tag (line 764) | int libfsntfs_reparse_point_values_get_tag(
  function libfsntfs_reparse_point_values_get_compression_method (line 801) | int libfsntfs_reparse_point_values_get_compression_method(
  function libfsntfs_reparse_point_values_get_utf8_substitute_name_size (line 843) | int libfsntfs_reparse_point_values_get_utf8_substitute_name_size(
  function libfsntfs_reparse_point_values_get_utf8_substitute_name (line 888) | int libfsntfs_reparse_point_values_get_utf8_substitute_name(
  function libfsntfs_reparse_point_values_get_utf16_substitute_name_size (line 935) | int libfsntfs_reparse_point_values_get_utf16_substitute_name_size(
  function libfsntfs_reparse_point_values_get_utf16_substitute_name (line 980) | int libfsntfs_reparse_point_values_get_utf16_substitute_name(
  function libfsntfs_reparse_point_values_get_utf8_print_name_size (line 1027) | int libfsntfs_reparse_point_values_get_utf8_print_name_size(
  function libfsntfs_reparse_point_values_get_utf8_print_name (line 1072) | int libfsntfs_reparse_point_values_get_utf8_print_name(
  function libfsntfs_reparse_point_values_get_utf16_print_name_size (line 1119) | int libfsntfs_reparse_point_values_get_utf16_print_name_size(
  function libfsntfs_reparse_point_values_get_utf16_print_name (line 1164) | int libfsntfs_reparse_point_values_get_utf16_print_name(

FILE: libfsntfs/libfsntfs_reparse_point_values.h
  type libfsntfs_reparse_point_values_t (line 35) | typedef struct libfsntfs_reparse_point_values libfsntfs_reparse_point_va...
  type libfsntfs_reparse_point_values (line 37) | struct libfsntfs_reparse_point_values

FILE: libfsntfs/libfsntfs_sds_index_value.c
  function libfsntfs_sds_index_value_initialize (line 37) | int libfsntfs_sds_index_value_initialize(
  function libfsntfs_sds_index_value_free (line 109) | int libfsntfs_sds_index_value_free(
  function libfsntfs_sds_index_value_read_data (line 139) | int libfsntfs_sds_index_value_read_data(

FILE: libfsntfs/libfsntfs_sds_index_value.h
  type libfsntfs_sds_index_value_t (line 34) | typedef struct libfsntfs_sds_index_value libfsntfs_sds_index_value_t;
  type libfsntfs_sds_index_value (line 36) | struct libfsntfs_sds_index_value

FILE: libfsntfs/libfsntfs_security_descriptor_attribute.c
  function libfsntfs_security_descriptor_attribute_get_security_descriptor_size (line 37) | int libfsntfs_security_descriptor_attribute_get_security_descriptor_size(
  function libfsntfs_security_descriptor_attribute_get_security_descriptor (line 118) | int libfsntfs_security_descriptor_attribute_get_security_descriptor(

FILE: libfsntfs/libfsntfs_security_descriptor_index.c
  function libfsntfs_security_descriptor_index_initialize (line 50) | int libfsntfs_security_descriptor_index_initialize(
  function libfsntfs_security_descriptor_index_free (line 158) | int libfsntfs_security_descriptor_index_free(
  function libfsntfs_security_descriptor_index_read_sii_index (line 218) | int libfsntfs_security_descriptor_index_read_sii_index(
  function libfsntfs_security_descriptor_index_get_entry_from_index_node_by_identifier (line 355) | int libfsntfs_security_descriptor_index_get_entry_from_index_node_by_ide...
  function libfsntfs_security_descriptor_index_get_entry_by_identifier (line 806) | int libfsntfs_security_descriptor_index_get_entry_by_identifier(

FILE: libfsntfs/libfsntfs_security_descriptor_index.h
  type libfsntfs_security_descriptor_index_t (line 42) | typedef struct libfsntfs_security_descriptor_index libfsntfs_security_de...
  type libfsntfs_security_descriptor_index (line 44) | struct libfsntfs_security_descriptor_index

FILE: libfsntfs/libfsntfs_security_descriptor_index_value.c
  function libfsntfs_security_descriptor_index_value_initialize (line 38) | int libfsntfs_security_descriptor_index_value_initialize(
  function libfsntfs_security_descriptor_index_value_free (line 110) | int libfsntfs_security_descriptor_index_value_free(
  function libfsntfs_security_descriptor_index_value_compare (line 140) | int libfsntfs_security_descriptor_index_value_compare(
  function libfsntfs_security_descriptor_index_value_read_data (line 183) | int libfsntfs_security_descriptor_index_value_read_data(

FILE: libfsntfs/libfsntfs_security_descriptor_index_value.h
  type libfsntfs_security_descriptor_index_value_t (line 36) | typedef struct libfsntfs_security_descriptor_index_value libfsntfs_secur...
  type libfsntfs_security_descriptor_index_value (line 38) | struct libfsntfs_security_descriptor_index_value

FILE: libfsntfs/libfsntfs_security_descriptor_values.c
  function libfsntfs_security_descriptor_values_initialize (line 41) | int libfsntfs_security_descriptor_values_initialize(
  function libfsntfs_security_descriptor_values_free (line 113) | int libfsntfs_security_descriptor_values_free(
  function libfsntfs_security_descriptor_values_read_data (line 148) | int libfsntfs_security_descriptor_values_read_data(
  function libfsntfs_security_descriptor_values_read_buffer (line 272) | int libfsntfs_security_descriptor_values_read_buffer(
  function libfsntfs_security_descriptor_values_read_stream (line 388) | int libfsntfs_security_descriptor_values_read_stream(
  function libfsntfs_security_descriptor_values_read_from_mft_attribute (line 514) | int libfsntfs_security_descriptor_values_read_from_mft_attribute(
  function libfsntfs_security_descriptor_values_get_data_size (line 702) | int libfsntfs_security_descriptor_values_get_data_size(
  function libfsntfs_security_descriptor_values_get_data (line 743) | int libfsntfs_security_descriptor_values_get_data(

FILE: libfsntfs/libfsntfs_security_descriptor_values.h
  type libfsntfs_security_descriptor_values_t (line 38) | typedef struct libfsntfs_security_descriptor_values libfsntfs_security_d...
  type libfsntfs_security_descriptor_values (line 40) | struct libfsntfs_security_descriptor_values

FILE: libfsntfs/libfsntfs_standard_information_attribute.c
  function libfsntfs_standard_information_attribute_get_creation_time (line 37) | int libfsntfs_standard_information_attribute_get_creation_time(
  function libfsntfs_standard_information_attribute_get_modification_time (line 117) | int libfsntfs_standard_information_attribute_get_modification_time(
  function libfsntfs_standard_information_attribute_get_access_time (line 197) | int libfsntfs_standard_information_attribute_get_access_time(
  function libfsntfs_standard_information_attribute_get_entry_modification_time (line 277) | int libfsntfs_standard_information_attribute_get_entry_modification_time(
  function libfsntfs_standard_information_attribute_get_file_attribute_flags (line 357) | int libfsntfs_standard_information_attribute_get_file_attribute_flags(
  function libfsntfs_standard_information_attribute_get_owner_identifier (line 437) | int libfsntfs_standard_information_attribute_get_owner_identifier(
  function libfsntfs_standard_information_attribute_get_security_descriptor_identifier (line 536) | int libfsntfs_standard_information_attribute_get_security_descriptor_ide...
  function libfsntfs_standard_information_attribute_get_update_sequence_number (line 635) | int libfsntfs_standard_information_attribute_get_update_sequence_number(

FILE: libfsntfs/libfsntfs_standard_information_values.c
  function libfsntfs_standard_information_values_initialize (line 41) | int libfsntfs_standard_information_values_initialize(
  function libfsntfs_standard_information_values_free (line 113) | int libfsntfs_standard_information_values_free(
  function libfsntfs_standard_information_values_read_data (line 143) | int libfsntfs_standard_information_values_read_data(
  function libfsntfs_standard_information_values_read_from_mft_attribute (line 408) | int libfsntfs_standard_information_values_read_from_mft_attribute(
  function libfsntfs_standard_information_values_get_creation_time (line 517) | int libfsntfs_standard_information_values_get_creation_time(
  function libfsntfs_standard_information_values_get_modification_time (line 554) | int libfsntfs_standard_information_values_get_modification_time(
  function libfsntfs_standard_information_values_get_access_time (line 591) | int libfsntfs_standard_information_values_get_access_time(
  function libfsntfs_standard_information_values_get_entry_modification_time (line 628) | int libfsntfs_standard_information_values_get_entry_modification_time(
  function libfsntfs_standard_information_values_get_file_attribute_flags (line 665) | int libfsntfs_standard_information_values_get_file_attribute_flags(
  function libfsntfs_standard_information_values_get_security_descriptor_identifier (line 702) | int libfsntfs_standard_information_values_get_security_descriptor_identi...
  function libfsntfs_standard_information_values_get_update_sequence_number (line 739) | int libfsntfs_standard_information_values_get_update_sequence_number(

FILE: libfsntfs/libfsntfs_standard_information_values.h
  type libfsntfs_standard_information_values_t (line 35) | typedef struct libfsntfs_standard_information_values libfsntfs_standard_...
  type libfsntfs_standard_information_values (line 37) | struct libfsntfs_standard_information_values

FILE: libfsntfs/libfsntfs_support.c
  function libfsntfs_get_access_flags_read (line 48) | int libfsntfs_get_access_flags_read(
  function libfsntfs_get_codepage (line 58) | int libfsntfs_get_codepage(
  function libfsntfs_set_codepage (line 84) | int libfsntfs_set_codepage(
  function libfsntfs_check_volume_signature (line 111) | int libfsntfs_check_volume_signature(
  function libfsntfs_check_volume_signature_wide (line 218) | int libfsntfs_check_volume_signature_wide(
  function libfsntfs_check_volume_signature_file_io_handle (line 325) | int libfsntfs_check_volume_signature_file_io_handle(
  function libfsntfs_check_mft_metadata_file_signature (line 436) | int libfsntfs_check_mft_metadata_file_signature(
  function libfsntfs_check_mft_metadata_file_signature_wide (line 543) | int libfsntfs_check_mft_metadata_file_signature_wide(
  function libfsntfs_check_mft_metadata_file_signature_file_io_handle (line 650) | int libfsntfs_check_mft_metadata_file_signature_file_io_handle(

FILE: libfsntfs/libfsntfs_txf_data_values.c
  function libfsntfs_txf_data_values_initialize (line 40) | int libfsntfs_txf_data_values_initialize(
  function libfsntfs_txf_data_values_free (line 112) | int libfsntfs_txf_data_values_free(
  function libfsntfs_txf_data_values_read_data (line 142) | int libfsntfs_txf_data_values_read_data(
  function libfsntfs_txf_data_values_read_from_mft_attribute (line 296) | int libfsntfs_txf_data_values_read_from_mft_attribute(

FILE: libfsntfs/libfsntfs_txf_data_values.h
  type libfsntfs_txf_data_values_t (line 36) | typedef struct libfsntfs_txf_data_values libfsntfs_txf_data_values_t;
  type libfsntfs_txf_data_values (line 38) | struct libfsntfs_txf_data_values

FILE: libfsntfs/libfsntfs_types.h
  type libfsntfs_attribute_t (line 37) | typedef struct libfsntfs_attribute {}			libfsntfs_attribute_t;
  type libfsntfs_attribute_list_entry_t (line 38) | typedef struct libfsntfs_attribute_list_entry {}	libfsntfs_attribute_lis...
  type libfsntfs_data_stream_t (line 39) | typedef struct libfsntfs_data_stream {}			libfsntfs_data_stream_t;
  type libfsntfs_file_entry_t (line 40) | typedef struct libfsntfs_file_entry {}			libfsntfs_file_entry_t;
  type libfsntfs_mft_metadata_file_t (line 41) | typedef struct libfsntfs_mft_metadata_file {}		libfsntfs_mft_metadata_fi...
  type libfsntfs_usn_change_journal_t (line 42) | typedef struct libfsntfs_usn_change_journal {}		libfsntfs_usn_change_jou...
  type libfsntfs_volume_t (line 43) | typedef struct libfsntfs_volume {}			libfsntfs_volume_t;
  type libfsntfs_attribute_t (line 46) | typedef intptr_t libfsntfs_attribute_t;
  type libfsntfs_attribute_list_entry_t (line 47) | typedef intptr_t libfsntfs_attribute_list_entry_t;
  type libfsntfs_data_stream_t (line 48) | typedef intptr_t libfsntfs_data_stream_t;
  type libfsntfs_file_entry_t (line 49) | typedef intptr_t libfsntfs_file_entry_t;
  type libfsntfs_mft_metadata_file_t (line 50) | typedef intptr_t libfsntfs_mft_metadata_file_t;
  type libfsntfs_usn_change_journal_t (line 51) | typedef intptr_t libfsntfs_usn_change_journal_t;
  type libfsntfs_volume_t (line 52) | typedef intptr_t libfsntfs_volume_t;
  type libfsntfs_aligned_t (line 61) | typedef unsigned long int libfsntfs_aligned_t;

FILE: libfsntfs/libfsntfs_usn_change_journal.c
  function libfsntfs_usn_change_journal_initialize (line 41) | int libfsntfs_usn_change_journal_initialize(
  function libfsntfs_usn_change_journal_free (line 235) | int libfsntfs_usn_change_journal_free(
  function libfsntfs_usn_change_journal_get_offset (line 299) | int libfsntfs_usn_change_journal_get_offset(
  function libfsntfs_usn_change_journal_read_usn_record (line 339) | ssize_t libfsntfs_usn_change_journal_read_usn_record(

FILE: libfsntfs/libfsntfs_usn_change_journal.h
  type libfsntfs_internal_usn_change_journal_t (line 41) | typedef struct libfsntfs_internal_usn_change_journal libfsntfs_internal_...
  type libfsntfs_internal_usn_change_journal (line 43) | struct libfsntfs_internal_usn_change_journal

FILE: libfsntfs/libfsntfs_volume.c
  function libfsntfs_volume_initialize (line 54) | int libfsntfs_volume_initialize(
  function libfsntfs_volume_free (line 164) | int libfsntfs_volume_free(
  function libfsntfs_volume_signal_abort (line 242) | int libfsntfs_volume_signal_abort(
  function libfsntfs_volume_open (line 281) | int libfsntfs_volume_open(
  function libfsntfs_volume_open_wide (line 450) | int libfsntfs_volume_open_wide(
  function libfsntfs_volume_open_file_io_handle (line 619) | int libfsntfs_volume_open_file_io_handle(
  function libfsntfs_volume_close (line 791) | int libfsntfs_volume_close(
  function libfsntfs_internal_volume_open_read (line 1010) | int libfsntfs_internal_volume_open_read(
  function libfsntfs_volume_has_bitlocker_drive_encryption (line 1280) | int libfsntfs_volume_has_bitlocker_drive_encryption(
  function libfsntfs_volume_has_volume_shadow_snapshots (line 1339) | int libfsntfs_volume_has_volume_shadow_snapshots(
  function libfsntfs_internal_volume_get_volume_information_attribute (line 1398) | int libfsntfs_internal_volume_get_volume_information_attribute(
  function libfsntfs_internal_volume_get_volume_name_attribute (line 1510) | int libfsntfs_internal_volume_get_volume_name_attribute(
  function libfsntfs_volume_get_bytes_per_sector (line 1622) | int libfsntfs_volume_get_bytes_per_sector(
  function libfsntfs_volume_get_cluster_block_size (line 1694) | int libfsntfs_volume_get_cluster_block_size(
  function libfsntfs_volume_get_mft_entry_size (line 1766) | int libfsntfs_volume_get_mft_entry_size(
  function libfsntfs_volume_get_index_entry_size (line 1838) | int libfsntfs_volume_get_index_entry_size(
  function libfsntfs_volume_get_utf8_name_size (line 1912) | int libfsntfs_volume_get_utf8_name_size(
  function libfsntfs_volume_get_utf8_name (line 2006) | int libfsntfs_volume_get_utf8_name(
  function libfsntfs_volume_get_utf16_name_size (line 2102) | int libfsntfs_volume_get_utf16_name_size(
  function libfsntfs_volume_get_utf16_name (line 2196) | int libfsntfs_volume_get_utf16_name(
  function libfsntfs_volume_get_version (line 2291) | int libfsntfs_volume_get_version(
  function libfsntfs_volume_get_flags (line 2386) | int libfsntfs_volume_get_flags(
  function libfsntfs_volume_get_serial_number (line 2478) | int libfsntfs_volume_get_serial_number(
  function libfsntfs_volume_get_root_directory (line 2550) | int libfsntfs_volume_get_root_directory(
  function libfsntfs_volume_get_number_of_file_entries (line 2650) | int libfsntfs_volume_get_number_of_file_entries(
  function libfsntfs_volume_get_file_entry_by_index (line 2722) | int libfsntfs_volume_get_file_entry_by_index(
  function libfsntfs_internal_volume_get_mft_and_directory_entry_by_utf8_path (line 2825) | int libfsntfs_internal_volume_get_mft_and_directory_entry_by_utf8_path(
  function libfsntfs_volume_get_file_entry_by_utf8_path (line 3145) | int libfsntfs_volume_get_file_entry_by_utf8_path(
  function libfsntfs_internal_volume_get_mft_and_directory_entry_by_utf16_path (line 3284) | int libfsntfs_internal_volume_get_mft_and_directory_entry_by_utf16_path(
  function libfsntfs_volume_get_file_entry_by_utf16_path (line 3604) | int libfsntfs_volume_get_file_entry_by_utf16_path(
  function libfsntfs_volume_get_usn_change_journal (line 3741) | int libfsntfs_volume_get_usn_change_journal(

FILE: libfsntfs/libfsntfs_volume.h
  type libfsntfs_internal_volume_t (line 44) | typedef struct libfsntfs_internal_volume libfsntfs_internal_volume_t;
  type libfsntfs_internal_volume (line 46) | struct libfsntfs_internal_volume

FILE: libfsntfs/libfsntfs_volume_header.c
  function libfsntfs_volume_header_initialize (line 41) | int libfsntfs_volume_header_initialize(
  function libfsntfs_volume_header_free (line 113) | int libfsntfs_volume_header_free(
  function libfsntfs_volume_header_read_data (line 143) | int libfsntfs_volume_header_read_data(
  function libfsntfs_volume_header_read_file_io_handle (line 648) | int libfsntfs_volume_header_read_file_io_handle(
  function libfsntfs_volume_header_get_bytes_per_sector (line 721) | int libfsntfs_volume_header_get_bytes_per_sector(
  function libfsntfs_volume_header_get_cluster_block_size (line 758) | int libfsntfs_volume_header_get_cluster_block_size(
  function libfsntfs_volume_header_get_mft_entry_size (line 795) | int libfsntfs_volume_header_get_mft_entry_size(
  function libfsntfs_volume_header_get_index_entry_size (line 832) | int libfsntfs_volume_header_get_index_entry_size(
  function libfsntfs_volume_header_get_volume_serial_number (line 869) | int libfsntfs_volume_header_get_volume_serial_number(
  function libfsntfs_volume_header_get_mft_offset (line 906) | int libfsntfs_volume_header_get_mft_offset(

FILE: libfsntfs/libfsntfs_volume_header.h
  type libfsntfs_volume_header_t (line 35) | typedef struct libfsntfs_volume_header libfsntfs_volume_header_t;
  type libfsntfs_volume_header (line 37) | struct libfsntfs_volume_header

FILE: libfsntfs/libfsntfs_volume_information_attribute.c
  function libfsntfs_volume_information_attribute_get_version (line 37) | int libfsntfs_volume_information_attribute_get_version(
  function libfsntfs_volume_information_attribute_get_flags (line 130) | int libfsntfs_volume_information_attribute_get_flags(

FILE: libfsntfs/libfsntfs_volume_information_values.c
  function libfsntfs_volume_information_values_initialize (line 40) | int libfsntfs_volume_information_values_initialize(
  function libfsntfs_volume_information_values_free (line 112) | int libfsntfs_volume_information_values_free(
  function libfsntfs_volume_information_values_read_data (line 142) | int libfsntfs_volume_information_values_read_data(
  function libfsntfs_volume_information_values_read_from_mft_attribute (line 255) | int libfsntfs_volume_information_values_read_from_mft_attribute(

FILE: libfsntfs/libfsntfs_volume_information_values.h
  type libfsntfs_volume_information_values_t (line 35) | typedef struct libfsntfs_volume_information_values libfsntfs_volume_info...
  type libfsntfs_volume_information_values (line 37) | struct libfsntfs_volume_information_values

FILE: libfsntfs/libfsntfs_volume_name_attribute.c
  function libfsntfs_volume_name_attribute_get_utf8_name_size (line 38) | int libfsntfs_volume_name_attribute_get_utf8_name_size(
  function libfsntfs_volume_name_attribute_get_utf8_name (line 106) | int libfsntfs_volume_name_attribute_get_utf8_name(
  function libfsntfs_volume_name_attribute_get_utf16_name_size (line 176) | int libfsntfs_volume_name_attribute_get_utf16_name_size(
  function libfsntfs_volume_name_attribute_get_utf16_name (line 244) | int libfsntfs_volume_name_attribute_get_utf16_name(

FILE: libfsntfs/libfsntfs_volume_name_values.c
  function libfsntfs_volume_name_values_initialize (line 41) | int libfsntfs_volume_name_values_initialize(
  function libfsntfs_volume_name_values_free (line 113) | int libfsntfs_volume_name_values_free(
  function libfsntfs_volume_name_values_read_data (line 148) | int libfsntfs_volume_name_values_read_data(
  function libfsntfs_volume_name_values_read_from_mft_attribute (line 294) | int libfsntfs_volume_name_values_read_from_mft_attribute(
  function libfsntfs_volume_name_values_get_utf8_name_size (line 404) | int libfsntfs_volume_name_values_get_utf8_name_size(
  function libfsntfs_volume_name_values_get_utf8_name (line 463) | int libfsntfs_volume_name_values_get_utf8_name(
  function libfsntfs_volume_name_values_get_utf16_name_size (line 546) | int libfsntfs_volume_name_values_get_utf16_name_size(
  function libfsntfs_volume_name_values_get_utf16_name (line 605) | int libfsntfs_volume_name_values_get_utf16_name(

FILE: libfsntfs/libfsntfs_volume_name_values.h
  type libfsntfs_volume_name_values_t (line 35) | typedef struct libfsntfs_volume_name_values libfsntfs_volume_name_values_t;
  type libfsntfs_volume_name_values (line 37) | struct libfsntfs_volume_name_values

FILE: ossfuzz/file_entry_fuzzer.cc
  function LLVMFuzzerTestOneInput (line 46) | int LLVMFuzzerTestOneInput(

FILE: ossfuzz/mft_metadata_file_fuzzer.cc
  function LLVMFuzzerTestOneInput (line 46) | int LLVMFuzzerTestOneInput(

FILE: ossfuzz/volume_fuzzer.cc
  function LLVMFuzzerTestOneInput (line 46) | int LLVMFuzzerTestOneInput(

FILE: pyfsntfs/pyfsntfs.c
  function if (line 162) | PYFSNTFS_UNREFERENCED_PARAMETER( self )
  function Py_END_ALLOW_THREADS (line 313) | Py_END_ALLOW_THREADS
  function if (line 363) | PYFSNTFS_UNREFERENCED_PARAMETER( self )
  function Py_END_ALLOW_THREADS (line 396) | Py_END_ALLOW_THREADS
  function PyMODINIT_FUNC (line 580) | PyMODINIT_FUNC PyInit_pyfsntfs(

FILE: pyfsntfs/pyfsntfs_attribute.c
  function PyObject (line 201) | PyObject *pyfsntfs_attribute_new(
  function pyfsntfs_attribute_init (line 255) | int pyfsntfs_attribute_init(
  function pyfsntfs_attribute_free (line 283) | void pyfsntfs_attribute_free(
  function PyObject (line 355) | PyObject *pyfsntfs_attribute_get_type(
  function PyObject (line 407) | PyObject *pyfsntfs_attribute_get_name(
  function PyObject (line 520) | PyObject *pyfsntfs_attribute_get_data_size(
  function PyObject (line 572) | PyObject *pyfsntfs_attribute_get_valid_data_size(

FILE: pyfsntfs/pyfsntfs_attribute.h
  type pyfsntfs_attribute_t (line 36) | typedef struct pyfsntfs_attribute pyfsntfs_attribute_t;
  type pyfsntfs_attribute (line 38) | struct pyfsntfs_attribute

FILE: pyfsntfs/pyfsntfs_attribute_types.c
  function pyfsntfs_attribute_types_init_type (line 132) | int pyfsntfs_attribute_types_init_type(
  function PyObject (line 387) | PyObject *pyfsntfs_attribute_types_new(
  function pyfsntfs_attribute_types_init (line 430) | int pyfsntfs_attribute_types_init(
  function pyfsntfs_attribute_types_free (line 449) | void pyfsntfs_attribute_types_free(

FILE: pyfsntfs/pyfsntfs_attribute_types.h
  type pyfsntfs_attribute_types_t (line 35) | typedef struct pyfsntfs_attribute_types pyfsntfs_attribute_types_t;

FILE: pyfsntfs/pyfsntfs_attributes.c
  function PyObject (line 155) | PyObject *pyfsntfs_attributes_new(
  function pyfsntfs_attributes_init (line 220) | int pyfsntfs_attributes_init(
  function pyfsntfs_attributes_free (line 251) | void pyfsntfs_attributes_free(
  function Py_ssize_t (line 298) | Py_ssize_t pyfsntfs_attributes_len(
  function PyObject (line 317) | PyObject *pyfsntfs_attributes_getitem(
  function PyObject (line 370) | PyObject *pyfsntfs_attributes_iter(
  function PyObject (line 392) | PyObject *pyfsntfs_attributes_iternext(

FILE: pyfsntfs/pyfsntfs_attributes.h
  type pyfsntfs_attributes_t (line 35) | typedef struct pyfsntfs_attributes pyfsntfs_attributes_t;
  type pyfsntfs_attributes (line 37) | struct pyfsntfs_attributes

FILE: pyfsntfs/pyfsntfs_data_stream.c
  function PyObject (line 251) | PyObject *pyfsntfs_data_stream_new(
  function pyfsntfs_data_stream_init (line 304) | int pyfsntfs_data_stream_init(
  function pyfsntfs_data_stream_free (line 332) | void pyfsntfs_data_stream_free(
  function PyObject (line 404) | PyObject *pyfsntfs_data_stream_read_buffer(
  function PyObject (line 627) | PyObject *pyfsntfs_data_stream_read_buffer_at_offset(
  function PyObject (line 847) | PyObject *pyfsntfs_data_stream_seek_offset(
  function PyObject (line 918) | PyObject *pyfsntfs_data_stream_get_offset(
  function PyObject (line 970) | PyObject *pyfsntfs_data_stream_get_size(
  function PyObject (line 1022) | PyObject *pyfsntfs_data_stream_get_name(
  function PyObject (line 1135) | PyObject *pyfsntfs_data_stream_get_number_of_extents(
  function PyObject (line 1191) | PyObject *pyfsntfs_data_stream_get_extent_by_index(
  function PyObject (line 1297) | PyObject *pyfsntfs_data_stream_get_extent(

FILE: pyfsntfs/pyfsntfs_data_stream.h
  type pyfsntfs_data_stream_t (line 35) | typedef struct pyfsntfs_data_stream pyfsntfs_data_stream_t;
  type pyfsntfs_data_stream (line 37) | struct pyfsntfs_data_stream

FILE: pyfsntfs/pyfsntfs_data_streams.c
  function PyObject (line 156) | PyObject *pyfsntfs_data_streams_new(
  function pyfsntfs_data_streams_init (line 221) | int pyfsntfs_data_streams_init(
  function pyfsntfs_data_streams_free (line 252) | void pyfsntfs_data_streams_free(
  function Py_ssize_t (line 299) | Py_ssize_t pyfsntfs_data_streams_len(
  function PyObject (line 318) | PyObject *pyfsntfs_data_streams_getitem(
  function PyObject (line 371) | PyObject *pyfsntfs_data_streams_iter(
  function PyObject (line 393) | PyObject *pyfsntfs_data_streams_iternext(

FILE: pyfsntfs/pyfsntfs_data_streams.h
  type pyfsntfs_data_streams_t (line 35) | typedef struct pyfsntfs_data_streams pyfsntfs_data_streams_t;
  type pyfsntfs_data_streams (line 37) | struct pyfsntfs_data_streams

FILE: pyfsntfs/pyfsntfs_datetime.c
  function PyObject (line 34) | PyObject *pyfsntfs_datetime_new_from_time_elements(
  function PyObject (line 174) | PyObject *pyfsntfs_datetime_new_from_fat_date_time(
  function PyObject (line 291) | PyObject *pyfsntfs_datetime_new_from_filetime(
  function PyObject (line 350) | PyObject *pyfsntfs_datetime_new_from_floatingtime(
  function PyObject (line 530) | PyObject *pyfsntfs_datetime_new_from_hfs_time(
  function PyObject (line 583) | PyObject *pyfsntfs_datetime_new_from_posix_time(
  function PyObject (line 636) | PyObject *pyfsntfs_datetime_new_from_posix_time_in_micro_seconds(

FILE: pyfsntfs/pyfsntfs_error.c
  function VARARGS (line 59) | void VARARGS(
  function VARARGS (line 201) | void VARARGS(
  function VARARGS (line 330) | void VARARGS(

FILE: pyfsntfs/pyfsntfs_file_attribute_flags.c
  function pyfsntfs_file_attribute_flags_init_type (line 132) | int pyfsntfs_file_attribute_flags_init_type(
  function PyObject (line 373) | PyObject *pyfsntfs_file_attribute_flags_new(
  function pyfsntfs_file_attribute_flags_init (line 416) | int pyfsntfs_file_attribute_flags_init(
  function pyfsntfs_file_attribute_flags_free (line 435) | void pyfsntfs_file_attribute_flags_free(

FILE: pyfsntfs/pyfsntfs_file_attribute_flags.h
  type pyfsntfs_file_attribute_flags_t (line 35) | typedef struct pyfsntfs_file_attribute_flags pyfsntfs_file_attribute_fla...

FILE: pyfsntfs/pyfsntfs_file_entries.c
  function PyObject (line 156) | PyObject *pyfsntfs_file_entries_new(
  function pyfsntfs_file_entries_init (line 221) | int pyfsntfs_file_entries_init(
  function pyfsntfs_file_entries_free (line 252) | void pyfsntfs_file_entries_free(
  function Py_ssize_t (line 299) | Py_ssize_t pyfsntfs_file_entries_len(
  function PyObject (line 318) | PyObject *pyfsntfs_file_entries_getitem(
  function PyObject (line 371) | PyObject *pyfsntfs_file_entries_iter(
  function PyObject (line 393) | PyObject *pyfsntfs_file_entries_iternext(

FILE: pyfsntfs/pyfsntfs_file_entries.h
  type pyfsntfs_file_entries_t (line 35) | typedef struct pyfsntfs_file_entries pyfsntfs_file_entries_t;
  type pyfsntfs_file_entries (line 37) | struct pyfsntfs_file_entries

FILE: pyfsntfs/pyfsntfs_file_entry.c
  function PyObject (line 676) | PyObject *pyfsntfs_file_entry_new(
  function pyfsntfs_file_entry_init (line 729) | int pyfsntfs_file_entry_init(
  function pyfsntfs_file_entry_free (line 757) | void pyfsntfs_file_entry_free(
  function PyObject (line 829) | PyObject *pyfsntfs_file_entry_read_buffer(
  function PyObject (line 1086) | PyObject *pyfsntfs_file_entry_read_buffer_at_offset(
  function PyObject (line 1336) | PyObject *pyfsntfs_file_entry_seek_offset(
  function PyObject (line 1438) | PyObject *pyfsntfs_file_entry_get_offset(
  function PyObject (line 1520) | PyObject *pyfsntfs_file_entry_get_size(
  function PyObject (line 1572) | PyObject *pyfsntfs_file_entry_get_number_of_extents(
  function PyObject (line 1628) | PyObject *pyfsntfs_file_entry_get_extent_by_index(
  function PyObject (line 1734) | PyObject *pyfsntfs_file_entry_get_extent(
  function PyObject (line 1762) | PyObject *pyfsntfs_file_entry_is_empty(
  function PyObject (line 1818) | PyObject *pyfsntfs_file_entry_is_allocated(
  function PyObject (line 1874) | PyObject *pyfsntfs_file_entry_has_directory_entries_index(
  function PyObject (line 1930) | PyObject *pyfsntfs_file_entry_has_default_data_stream(
  function PyObject (line 1986) | PyObject *pyfsntfs_file_entry_has_i30_entry(
  function PyObject (line 2042) | PyObject *pyfsntfs_file_entry_get_file_reference(
  function PyObject (line 2094) | PyObject *pyfsntfs_file_entry_get_base_record_file_reference(
  function PyObject (line 2146) | PyObject *pyfsntfs_file_entry_get_parent_file_reference(
  function PyObject (line 2205) | PyObject *pyfsntfs_file_entry_get_parent_file_reference_by_attribute_index(
  function PyObject (line 2271) | PyObject *pyfsntfs_file_entry_get_journal_sequence_number(
  function PyObject (line 2323) | PyObject *pyfsntfs_file_entry_get_creation_time(
  function PyObject (line 2382) | PyObject *pyfsntfs_file_entry_get_creation_time_as_integer(
  function PyObject (line 2441) | PyObject *pyfsntfs_file_entry_get_modification_time(
  function PyObject (line 2500) | PyObject *pyfsntfs_file_entry_get_modification_time_as_integer(
  function PyObject (line 2559) | PyObject *pyfsntfs_file_entry_get_access_time(
  function PyObject (line 2618) | PyObject *pyfsntfs_file_entry_get_access_time_as_integer(
  function PyObject (line 2677) | PyObject *pyfsntfs_file_entry_get_entry_modification_time(
  function PyObject (line 2736) | PyObject *pyfsntfs_file_entry_get_entry_modification_time_as_integer(
  function PyObject (line 2795) | PyObject *pyfsntfs_file_entry_get_file_attribute_flags(
  function PyObject (line 2854) | PyObject *pyfsntfs_file_entry_get_i30_file_reference(
  function PyObject (line 2906) | PyObject *pyfsntfs_file_entry_get_i30_creation_time(
  function PyObject (line 2965) | PyObject *pyfsntfs_file_entry_get_i30_creation_time_as_integer(
  function PyObject (line 3024) | PyObject *pyfsntfs_file_entry_get_i30_modification_time(
  function PyObject (line 3083) | PyObject *pyfsntfs_file_entry_get_i30_modification_time_as_integer(
  function PyObject (line 3142) | PyObject *pyfsntfs_file_entry_get_i30_access_time(
  function PyObject (line 3201) | PyObject *pyfsntfs_file_entry_get_i30_access_time_as_integer(
  function PyObject (line 3260) | PyObject *pyfsntfs_file_entry_get_i30_entry_modification_time(
  function PyObject (line 3319) | PyObject *pyfsntfs_file_entry_get_i30_entry_modification_time_as_integer(
  function PyObject (line 3378) | PyObject *pyfsntfs_file_entry_get_i30_file_attribute_flags(
  function PyObject (line 3437) | PyObject *pyfsntfs_file_entry_get_name(
  function PyObject (line 3566) | PyObject *pyfsntfs_file_entry_get_name_attribute_index(
  function PyObject (line 3629) | PyObject *pyfsntfs_file_entry_get_name_by_attribute_index(
  function PyObject (line 3771) | PyObject *pyfsntfs_file_entry_get_path_hint(
  function PyObject (line 3897) | PyObject *pyfsntfs_file_entry_get_symbolic_link_target(
  function PyObject (line 4010) | PyObject *pyfsntfs_file_entry_get_security_descriptor_data(
  function PyObject (line 4108) | PyObject *pyfsntfs_file_entry_get_number_of_attributes(
  function PyObject (line 4164) | PyObject *pyfsntfs_file_entry_get_attribute_by_index(
  function PyObject (line 4294) | PyObject *pyfsntfs_file_entry_get_attribute(
  function PyObject (line 4322) | PyObject *pyfsntfs_file_entry_get_attributes(
  function PyObject (line 4385) | PyObject *pyfsntfs_file_entry_get_number_of_alternate_data_streams(
  function PyObject (line 4441) | PyObject *pyfsntfs_file_entry_get_alternate_data_stream_by_index(
  function PyObject (line 4512) | PyObject *pyfsntfs_file_entry_get_alternate_data_stream(
  function PyObject (line 4540) | PyObject *pyfsntfs_file_entry_get_alternate_data_streams(
  function PyObject (line 4603) | PyObject *pyfsntfs_file_entry_has_alternate_data_stream_by_name(
  function PyObject (line 4677) | PyObject *pyfsntfs_file_entry_get_alternate_data_stream_by_name(
  function PyObject (line 4773) | PyObject *pyfsntfs_file_entry_get_number_of_sub_file_entries(
  function PyObject (line 4829) | PyObject *pyfsntfs_file_entry_get_sub_file_entry_by_index(
  function PyObject (line 4900) | PyObject *pyfsntfs_file_entry_get_sub_file_entry(
  function PyObject (line 4928) | PyObject *pyfsntfs_file_entry_get_sub_file_entries(

FILE: pyfsntfs/pyfsntfs_file_entry.h
  type pyfsntfs_file_entry_t (line 36) | typedef struct pyfsntfs_file_entry pyfsntfs_file_entry_t;
  type pyfsntfs_file_entry (line 38) | struct pyfsntfs_file_entry

FILE: pyfsntfs/pyfsntfs_file_name_attribute.c
  function PyObject (line 284) | PyObject *pyfsntfs_file_name_attribute_get_parent_file_reference(
  function PyObject (line 336) | PyObject *pyfsntfs_file_name_attribute_get_creation_time(
  function PyObject (line 395) | PyObject *pyfsntfs_file_name_attribute_get_creation_time_as_integer(
  function PyObject (line 454) | PyObject *pyfsntfs_file_name_attribute_get_modification_time(
  function PyObject (line 513) | PyObject *pyfsntfs_file_name_attribute_get_modification_time_as_integer(
  function PyObject (line 572) | PyObject *pyfsntfs_file_name_attribute_get_access_time(
  function PyObject (line 631) | PyObject *pyfsntfs_file_name_attribute_get_access_time_as_integer(
  function PyObject (line 690) | PyObject *pyfsntfs_file_name_attribute_get_entry_modification_time(
  function PyObject (line 749) | PyObject *pyfsntfs_file_name_attribute_get_entry_modification_time_as_in...
  function PyObject (line 808) | PyObject *pyfsntfs_file_name_attribute_get_file_attribute_flags(
  function PyObject (line 860) | PyObject *pyfsntfs_file_name_attribute_get_name_space(
  function PyObject (line 912) | PyObject *pyfsntfs_file_name_attribute_get_name(

FILE: pyfsntfs/pyfsntfs_file_object_io_handle.c
  function pyfsntfs_file_object_io_handle_initialize (line 37) | int pyfsntfs_file_object_io_handle_initialize(
  function pyfsntfs_file_object_initialize (line 126) | int pyfsntfs_file_object_initialize(
  function pyfsntfs_file_object_io_handle_free (line 210) | int pyfsntfs_file_object_io_handle_free(
  function pyfsntfs_file_object_io_handle_clone (line 249) | int pyfsntfs_file_object_io_handle_clone(
  function pyfsntfs_file_object_io_handle_open (line 315) | int pyfsntfs_file_object_io_handle_open(
  function pyfsntfs_file_object_io_handle_close (line 377) | int pyfsntfs_file_object_io_handle_close(
  function pyfsntfs_file_object_read_buffer (line 416) | ssize_t pyfsntfs_file_object_read_buffer(
  function pyfsntfs_file_object_io_handle_read (line 619) | ssize_t pyfsntfs_file_object_io_handle_read(
  function pyfsntfs_file_object_write_buffer (line 675) | ssize_t pyfsntfs_file_object_write_buffer(
  function pyfsntfs_file_object_io_handle_write (line 804) | ssize_t pyfsntfs_file_object_io_handle_write(
  function pyfsntfs_file_object_seek_offset (line 860) | int pyfsntfs_file_object_seek_offset(
  function pyfsntfs_file_object_get_offset (line 1005) | int pyfsntfs_file_object_get_offset(
  function off64_t (line 1135) | off64_t pyfsntfs_file_object_io_handle_seek_offset(
  function pyfsntfs_file_object_io_handle_exists (line 1201) | int pyfsntfs_file_object_io_handle_exists(
  function pyfsntfs_file_object_io_handle_is_open (line 1228) | int pyfsntfs_file_object_io_handle_is_open(
  function pyfsntfs_file_object_get_size (line 1265) | int pyfsntfs_file_object_get_size(
  function pyfsntfs_file_object_io_handle_get_size (line 1371) | int pyfsntfs_file_object_io_handle_get_size(

FILE: pyfsntfs/pyfsntfs_file_object_io_handle.h
  type pyfsntfs_file_object_io_handle_t (line 36) | typedef struct pyfsntfs_file_object_io_handle pyfsntfs_file_object_io_ha...
  type pyfsntfs_file_object_io_handle (line 38) | struct pyfsntfs_file_object_io_handle

FILE: pyfsntfs/pyfsntfs_guid.c
  function PyObject (line 33) | PyObject *pyfsntfs_string_new_from_guid(

FILE: pyfsntfs/pyfsntfs_integer.c
  function PyObject (line 33) | PyObject *pyfsntfs_integer_signed_new_from_64bit(
  function PyObject (line 71) | PyObject *pyfsntfs_integer_unsigned_new_from_64bit(
  function pyfsntfs_integer_signed_copy_to_64bit (line 108) | int pyfsntfs_integer_signed_copy_to_64bit(
  function pyfsntfs_integer_unsigned_copy_to_64bit (line 249) | int pyfsntfs_integer_unsigned_copy_to_64bit(

FILE: pyfsntfs/pyfsntfs_mft_metadata_file.c
  function pyfsntfs_mft_metadata_file_init (line 228) | int pyfsntfs_mft_metadata_file_init(
  function pyfsntfs_mft_metadata_file_free (line 268) | void pyfsntfs_mft_metadata_file_free(
  function PyObject (line 335) | PyObject *pyfsntfs_mft_metadata_file_open(
  function PyObject (line 552) | PyObject *pyfsntfs_mft_metadata_file_open_file_object(
  function PyObject (line 651) | PyObject *pyfsntfs_mft_metadata_file_close(
  function PyObject (line 724) | PyObject *pyfsntfs_mft_metadata_file_get_volume_name(
  function PyObject (line 837) | PyObject *pyfsntfs_mft_metadata_file_get_number_of_file_entries(
  function PyObject (line 889) | PyObject *pyfsntfs_mft_metadata_file_get_file_entry_by_index(
  function PyObject (line 960) | PyObject *pyfsntfs_mft_metadata_file_get_file_entry(
  function PyObject (line 988) | PyObject *pyfsntfs_mft_metadata_file_get_file_entries(

FILE: pyfsntfs/pyfsntfs_mft_metadata_file.h
  type pyfsntfs_mft_metadata_file_t (line 36) | typedef struct pyfsntfs_mft_metadata_file pyfsntfs_mft_metadata_file_t;
  type pyfsntfs_mft_metadata_file (line 38) | struct pyfsntfs_mft_metadata_file

FILE: pyfsntfs/pyfsntfs_mft_metadata_file_entries.c
  function PyObject (line 156) | PyObject *pyfsntfs_mft_metadata_file_entries_new(
  function pyfsntfs_mft_metadata_file_entries_init (line 230) | int pyfsntfs_mft_metadata_file_entries_init(
  function pyfsntfs_mft_metadata_file_entries_free (line 256) | void pyfsntfs_mft_metadata_file_entries_free(
  function Py_ssize_t (line 303) | Py_ssize_t pyfsntfs_mft_metadata_file_entries_len(
  function PyObject (line 322) | PyObject *pyfsntfs_mft_metadata_file_entries_getitem(
  function PyObject (line 375) | PyObject *pyfsntfs_mft_metadata_file_entries_iter(
  function PyObject (line 397) | PyObject *pyfsntfs_mft_metadata_file_entries_iternext(

FILE: pyfsntfs/pyfsntfs_mft_metadata_file_entries.h
  type pyfsntfs_mft_metadata_file_entries_t (line 37) | typedef struct pyfsntfs_mft_metadata_file_entries pyfsntfs_mft_metadata_...
  type pyfsntfs_mft_metadata_file_entries (line 39) | struct pyfsntfs_mft_metadata_file_entries

FILE: pyfsntfs/pyfsntfs_object_identifier_attribute.c
  function PyObject (line 203) | PyObject *pyfsntfs_object_identifier_attribute_get_droid_file_identifier(
  function PyObject (line 258) | PyObject *pyfsntfs_object_identifier_attribute_get_birth_droid_volume_id...
  function PyObject (line 320) | PyObject *pyfsntfs_object_identifier_attribute_get_birth_droid_file_iden...
  function PyObject (line 382) | PyObject *pyfsntfs_object_identifier_attribute_get_birth_droid_domain_id...

FILE: pyfsntfs/pyfsntfs_reparse_point_attribute.c
  function PyObject (line 190) | PyObject *pyfsntfs_reparse_point_attribute_get_tag(
  function PyObject (line 242) | PyObject *pyfsntfs_reparse_point_attribute_get_substitute_name(
  function PyObject (line 355) | PyObject *pyfsntfs_reparse_point_attribute_get_print_name(

FILE: pyfsntfs/pyfsntfs_security_descriptor_attribute.c
  function PyObject (line 162) | PyObject *pyfsntfs_security_descriptor_attribute_get_data(

FILE: pyfsntfs/pyfsntfs_standard_information_attribute.c
  function PyObject (line 283) | PyObject *pyfsntfs_standard_information_attribute_get_creation_time(
  function PyObject (line 342) | PyObject *pyfsntfs_standard_information_attribute_get_creation_time_as_i...
  function PyObject (line 401) | PyObject *pyfsntfs_standard_information_attribute_get_modification_time(
  function PyObject (line 460) | PyObject *pyfsntfs_standard_information_attribute_get_modification_time_...
  function PyObject (line 519) | PyObject *pyfsntfs_standard_information_attribute_get_access_time(
  function PyObject (line 578) | PyObject *pyfsntfs_standard_information_attribute_get_access_time_as_int...
  function PyObject (line 637) | PyObject *pyfsntfs_standard_information_attribute_get_entry_modification...
  function PyObject (line 696) | PyObject *pyfsntfs_standard_information_attribute_get_entry_modification...
  function PyObject (line 755) | PyObject *pyfsntfs_standard_information_attribute_get_file_attribute_flags(
  function PyObject (line 807) | PyObject *pyfsntfs_standard_information_attribute_get_owner_identifier(
  function PyObject (line 866) | PyObject *pyfsntfs_standard_information_attribute_get_security_descripto...
  function PyObject (line 925) | PyObject *pyfsntfs_standard_information_attribute_get_update_sequence_nu...

FILE: pyfsntfs/pyfsntfs_string.c
  function PyObject (line 36) | PyObject *pyfsntfs_string_new_from_utf8_rfc2279(
  function pyfsntfs_string_copy_to_utf8_rfc2279 (line 193) | int pyfsntfs_string_copy_to_utf8_rfc2279(

FILE: pyfsntfs/pyfsntfs_usn_change_journal.c
  function PyObject (line 163) | PyObject *pyfsntfs_usn_change_journal_new(
  function pyfsntfs_usn_change_journal_init (line 216) | int pyfsntfs_usn_change_journal_init(
  function pyfsntfs_usn_change_journal_free (line 244) | void pyfsntfs_usn_change_journal_free(
  function PyObject (line 316) | PyObject *pyfsntfs_usn_change_journal_get_offset(
  function PyObject (line 368) | PyObject *pyfsntfs_usn_change_journal_read_usn_record(

FILE: pyfsntfs/pyfsntfs_usn_change_journal.h
  type pyfsntfs_usn_change_journal_t (line 35) | typedef struct pyfsntfs_usn_change_journal pyfsntfs_usn_change_journal_t;
  type pyfsntfs_usn_change_journal (line 37) | struct pyfsntfs_usn_change_journal

FILE: pyfsntfs/pyfsntfs_volume.c
  function pyfsntfs_volume_init (line 324) | int pyfsntfs_volume_init(
  function pyfsntfs_volume_free (line 364) | void pyfsntfs_volume_free(
  function PyObject (line 440) | PyObject *pyfsntfs_volume_signal_abort(
  function PyObject (line 489) | PyObject *pyfsntfs_volume_open(
  function PyObject (line 706) | PyObject *pyfsntfs_volume_open_file_object(
  function PyObject (line 845) | PyObject *pyfsntfs_volume_close(
  function PyObject (line 918) | PyObject *pyfsntfs_volume_get_bytes_per_sector(
  function PyObject (line 974) | PyObject *pyfsntfs_volume_get_cluster_block_size(
  function PyObject (line 1026) | PyObject *pyfsntfs_volume_get_mft_entry_size(
  function PyObject (line 1078) | PyObject *pyfsntfs_volume_get_index_entry_size(
  function PyObject (line 1130) | PyObject *pyfsntfs_volume_get_name(
  function PyObject (line 1243) | PyObject *pyfsntfs_volume_get_serial_number(
  function PyObject (line 1295) | PyObject *pyfsntfs_volume_get_number_of_file_entries(
  function PyObject (line 1347) | PyObject *pyfsntfs_volume_get_file_entry_by_index(
  function PyObject (line 1418) | PyObject *pyfsntfs_volume_get_file_entry(
  function PyObject (line 1446) | PyObject *pyfsntfs_volume_get_file_entries(
  function PyObject (line 1509) | PyObject *pyfsntfs_volume_get_file_entry_by_path(
  function PyObject (line 1745) | PyObject *pyfsntfs_volume_get_root_directory(
  function PyObject (line 1816) | PyObject *pyfsntfs_volume_get_usn_change_journal(

FILE: pyfsntfs/pyfsntfs_volume.h
  type pyfsntfs_volume_t (line 36) | typedef struct pyfsntfs_volume pyfsntfs_volume_t;
  type pyfsntfs_volume (line 38) | struct pyfsntfs_volume

FILE: pyfsntfs/pyfsntfs_volume_file_entries.c
  function PyObject (line 156) | PyObject *pyfsntfs_volume_file_entries_new(
  function pyfsntfs_volume_file_entries_init (line 230) | int pyfsntfs_volume_file_entries_init(
  function pyfsntfs_volume_file_entries_free (line 256) | void pyfsntfs_volume_file_entries_free(
  function Py_ssize_t (line 303) | Py_ssize_t pyfsntfs_volume_file_entries_len(
  function PyObject (line 322) | PyObject *pyfsntfs_volume_file_entries_getitem(
  function PyObject (line 375) | PyObject *pyfsntfs_volume_file_entries_iter(
  function PyObject (line 397) | PyObject *pyfsntfs_volume_file_entries_iternext(

FILE: pyfsntfs/pyfsntfs_volume_file_entries.h
  type pyfsntfs_volume_file_entries_t (line 37) | typedef struct pyfsntfs_volume_file_entries pyfsntfs_volume_file_entries_t;
  type pyfsntfs_volume_file_entries (line 39) | struct pyfsntfs_volume_file_entries

FILE: pyfsntfs/pyfsntfs_volume_information_attribute.c
  function PyObject (line 177) | PyObject *pyfsntfs_volume_information_attribute_get_version(
  function PyObject (line 269) | PyObject *pyfsntfs_volume_information_attribute_get_flags(

FILE: pyfsntfs/pyfsntfs_volume_name_attribute.c
  function PyObject (line 163) | PyObject *pyfsntfs_volume_name_attribute_get_name(

FILE: setup.py
  class custom_build_ext (line 32) | class custom_build_ext(build_ext):
    method _RunCommand (line 35) | def _RunCommand(self, command):
    method build_extensions (line 52) | def build_extensions(self):
    method run (line 57) | def run(self):
  class custom_sdist (line 86) | class custom_sdist(sdist):
    method run (line 89) | def run(self):
  class ProjectInformation (line 166) | class ProjectInformation(object):
    method __init__ (line 169) | def __init__(self):
    method module_name (line 181) | def module_name(self):
    method _ReadConfigureAc (line 185) | def _ReadConfigureAc(self):
    method _ReadMakefileAm (line 209) | def _ReadMakefileAm(self):

FILE: tests/fsntfs_test_attribute.c
  function fsntfs_test_attribute_initialize (line 53) | int fsntfs_test_attribute_initialize(
  function fsntfs_test_attribute_free (line 317) | int fsntfs_test_attribute_free(
  function fsntfs_test_internal_attribute_free (line 379) | int fsntfs_test_internal_attribute_free(
  function fsntfs_test_internal_attribute_read_value (line 417) | int fsntfs_test_internal_attribute_read_value(
  function fsntfs_test_internal_attribute_get_type (line 686) | int fsntfs_test_internal_attribute_get_type(
  function fsntfs_test_attribute_get_type (line 759) | int fsntfs_test_attribute_get_type(
  function fsntfs_test_attribute_get_data_flags (line 890) | int fsntfs_test_attribute_get_data_flags(
  function fsntfs_test_internal_attribute_get_value (line 1021) | int fsntfs_test_internal_attribute_get_value(
  function fsntfs_test_attribute_get_utf8_name_size (line 1094) | int fsntfs_test_attribute_get_utf8_name_size(
  function fsntfs_test_attribute_get_utf8_name (line 1225) | int fsntfs_test_attribute_get_utf8_name(
  function fsntfs_test_attribute_get_utf16_name_size (line 1398) | int fsntfs_test_attribute_get_utf16_name_size(
  function fsntfs_test_attribute_get_utf16_name (line 1529) | int fsntfs_test_attribute_get_utf16_name(
  function fsntfs_test_attribute_get_data_vcn_range (line 1702) | int fsntfs_test_attribute_get_data_vcn_range(
  function fsntfs_test_internal_attribute_get_data_size (line 1857) | int fsntfs_test_internal_attribute_get_data_size(
  function fsntfs_test_attribute_get_data_size (line 1930) | int fsntfs_test_attribute_get_data_size(
  function fsntfs_test_attribute_get_valid_data_size (line 2061) | int fsntfs_test_attribute_get_valid_data_size(
  function main (line 2198) | int main(

FILE: tests/fsntfs_test_attribute_list_entry.c
  function fsntfs_test_attribute_list_entry_initialize (line 48) | int fsntfs_test_attribute_list_entry_initialize(
  function fsntfs_test_attribute_list_entry_free (line 312) | int fsntfs_test_attribute_list_entry_free(
  function fsntfs_test_attribute_list_entry_get_attribute_type (line 352) | int fsntfs_test_attribute_list_entry_get_attribute_type(
  function fsntfs_test_attribute_list_entry_get_file_reference (line 432) | int fsntfs_test_attribute_list_entry_get_file_reference(
  function fsntfs_test_attribute_list_entry_get_utf8_name_size (line 512) | int fsntfs_test_attribute_list_entry_get_utf8_name_size(
  function fsntfs_test_attribute_list_entry_get_utf8_name (line 592) | int fsntfs_test_attribute_list_entry_get_utf8_name(
  function fsntfs_test_attribute_list_entry_get_utf16_name_size (line 712) | int fsntfs_test_attribute_list_entry_get_utf16_name_size(
  function fsntfs_test_attribute_list_entry_get_utf16_name (line 792) | int fsntfs_test_attribute_list_entry_get_utf16_name(
  function main (line 918) | int main(

FILE: tests/fsntfs_test_bitmap_values.c
  function fsntfs_test_bitmap_values_initialize (line 50) | int fsntfs_test_bitmap_values_initialize(
  function fsntfs_test_bitmap_values_free (line 245) | int fsntfs_test_bitmap_values_free(
  function fsntfs_test_bitmap_values_read_data (line 283) | int fsntfs_test_bitmap_values_read_data(
  function fsntfs_test_bitmap_values_read_from_mft_attribute (line 493) | int fsntfs_test_bitmap_values_read_from_mft_attribute(
  function main (line 728) | int main(

FILE: tests/fsntfs_test_buffer_data_handle.c
  function fsntfs_test_buffer_data_handle_initialize (line 47) | int fsntfs_test_buffer_data_handle_initialize(
  function fsntfs_test_buffer_data_handle_free (line 324) | int fsntfs_test_buffer_data_handle_free(
  function fsntfs_test_buffer_data_handle_read_segment_data (line 362) | int fsntfs_test_buffer_data_handle_read_segment_data(
  function fsntfs_test_buffer_data_handle_seek_segment_offset (line 696) | int fsntfs_test_buffer_data_handle_seek_segment_offset(
  function main (line 851) | int main(

FILE: tests/fsntfs_test_cluster_block.c
  function fsntfs_test_cluster_block_initialize (line 111) | int fsntfs_test_cluster_block_initialize(
  function fsntfs_test_cluster_block_free (line 328) | int fsntfs_test_cluster_block_free(
  function fsntfs_test_cluster_block_clear (line 366) | int fsntfs_test_cluster_block_clear(
  function fsntfs_test_cluster_block_read_file_io_handle (line 495) | int fsntfs_test_cluster_block_read_file_io_handle(
  function main (line 735) | int main(

FILE: tests/fsntfs_test_cluster_block_data.c
  function fsntfs_test_cluster_block_data_read_segment_data (line 561) | int fsntfs_test_cluster_block_data_read_segment_data(
  function fsntfs_test_cluster_block_data_seek_segment_offset (line 917) | int fsntfs_test_cluster_block_data_seek_segment_offset(
  function main (line 1052) | int main(

FILE: tests/fsntfs_test_cluster_block_stream.c
  function fsntfs_test_cluster_block_stream_initialize_from_data (line 71) | int fsntfs_test_cluster_block_stream_initialize_from_data(
  function fsntfs_test_cluster_block_stream_initialize_from_data_runs (line 257) | int fsntfs_test_cluster_block_stream_initialize_from_data_runs(
  function fsntfs_test_cluster_block_stream_initialize_from_compressed_data_runs (line 561) | int fsntfs_test_cluster_block_stream_initialize_from_compressed_data_runs(
  function fsntfs_test_cluster_block_stream_initialize_from_compressed_stream (line 842) | int fsntfs_test_cluster_block_stream_initialize_from_compressed_stream(
  function fsntfs_test_cluster_block_stream_initialize (line 1183) | int fsntfs_test_cluster_block_stream_initialize(
  function main (line 1475) | int main(

FILE: tests/fsntfs_test_cluster_block_vector.c
  function fsntfs_test_cluster_block_vector_initialize (line 827) | int fsntfs_test_cluster_block_vector_initialize(
  function fsntfs_test_cluster_block_vector_read_element_data (line 1196) | int fsntfs_test_cluster_block_vector_read_element_data(
  function main (line 1664) | int main(

FILE: tests/fsntfs_test_compressed_block.c
  function fsntfs_test_compressed_block_initialize (line 43) | int fsntfs_test_compressed_block_initialize(
  function fsntfs_test_compressed_block_free (line 260) | int fsntfs_test_compressed_block_free(
  function main (line 304) | int main(

FILE: tests/fsntfs_test_compressed_block_data_handle.c
  function fsntfs_test_compressed_block_data_handle_initialize (line 825) | int fsntfs_test_compressed_block_data_handle_initialize(
  function fsntfs_test_compressed_block_data_handle_free (line 1170) | int fsntfs_test_compressed_block_data_handle_free(
  function fsntfs_test_compressed_block_data_handle_read_segment_data (line 1208) | int fsntfs_test_compressed_block_data_handle_read_segment_data(
  function fsntfs_test_compressed_block_data_handle_seek_segment_offset (line 1732) | int fsntfs_test_compressed_block_data_handle_seek_segment_offset(
  function main (line 1967) | int main(

FILE: tests/fsntfs_test_compressed_block_vector.c
  function fsntfs_test_compressed_block_vector_initialize (line 827) | int fsntfs_test_compressed_block_vector_initialize(
  function fsntfs_test_compressed_block_vector_read_element_data (line 1172) | int fsntfs_test_compressed_block_vector_read_element_data(
  function main (line 1629) | int main(

FILE: tests/fsntfs_test_compressed_data_handle.c
  function fsntfs_test_compressed_data_handle_initialize (line 268) | int fsntfs_test_compressed_data_handle_initialize(
  function fsntfs_test_compressed_data_handle_free (line 607) | int fsntfs_test_compressed_data_handle_free(
  function fsntfs_test_compressed_data_handle_get_compressed_block_offsets (line 645) | int fsntfs_test_compressed_data_handle_get_compressed_block_offsets(
  function fsntfs_test_compressed_data_handle_read_segment_data (line 776) | int fsntfs_test_compressed_data_handle_read_segment_data(
  function fsntfs_test_compressed_data_handle_seek_segment_offset (line 1004) | int fsntfs_test_compressed_data_handle_seek_segment_offset(
  function main (line 1188) | int main(

FILE: tests/fsntfs_test_compression.c
  function fsntfs_test_decompress_data (line 1296) | int fsntfs_test_decompress_data(
  function main (line 1547) | int main(

FILE: tests/fsntfs_test_compression_unit_data_handle.c
  function fsntfs_test_compression_unit_data_handle_initialize (line 53) | int fsntfs_test_compression_unit_data_handle_initialize(
  function fsntfs_test_compression_unit_data_handle_free (line 398) | int fsntfs_test_compression_unit_data_handle_free(
  function main (line 442) | int main(

FILE: tests/fsntfs_test_compression_unit_descriptor.c
  function fsntfs_test_compression_unit_descriptor_initialize (line 43) | int fsntfs_test_compression_unit_descriptor_initialize(
  function fsntfs_test_compression_unit_descriptor_free (line 238) | int fsntfs_test_compression_unit_descriptor_free(
  function main (line 282) | int main(

FILE: tests/fsntfs_test_data_run.c
  function fsntfs_test_data_run_initialize (line 48) | int fsntfs_test_data_run_initialize(
  function fsntfs_test_data_run_free (line 243) | int fsntfs_test_data_run_free(
  function fsntfs_test_data_run_read_data (line 281) | int fsntfs_test_data_run_read_data(
  function main (line 611) | int main(

FILE: tests/fsntfs_test_data_stream.c
  function fsntfs_test_data_stream_initialize (line 839) | int fsntfs_test_data_stream_initialize(
  function fsntfs_test_data_stream_free (line 1193) | int fsntfs_test_data_stream_free(
  function fsntfs_test_data_stream_get_utf8_name_size (line 1233) | int fsntfs_test_data_stream_get_utf8_name_size(
  function fsntfs_test_data_stream_get_utf8_name (line 1369) | int fsntfs_test_data_stream_get_utf8_name(
  function fsntfs_test_data_stream_get_utf16_name_size (line 1542) | int fsntfs_test_data_stream_get_utf16_name_size(
  function fsntfs_test_data_stream_get_utf16_name (line 1678) | int fsntfs_test_data_stream_get_utf16_name(
  function fsntfs_test_data_stream_read_buffer (line 1851) | int fsntfs_test_data_stream_read_buffer(
  function fsntfs_test_data_stream_read_buffer_at_offset (line 2235) | int fsntfs_test_data_stream_read_buffer_at_offset(
  function fsntfs_test_data_stream_seek_offset (line 2561) | int fsntfs_test_data_stream_seek_offset(
  function fsntfs_test_data_stream_get_offset (line 2794) | int fsntfs_test_data_stream_get_offset(
  function fsntfs_test_data_stream_get_size (line 2925) | int fsntfs_test_data_stream_get_size(
  function fsntfs_test_data_stream_get_number_of_extents (line 3056) | int fsntfs_test_data_stream_get_number_of_extents(
  function fsntfs_test_data_stream_get_extent_by_index (line 3192) | int fsntfs_test_data_stream_get_extent_by_index(
  function main (line 3406) | int main(

FILE: tests/fsntfs_test_directory_entries_tree.c
  function fsntfs_test_directory_entries_tree_initialize (line 51) | int fsntfs_test_directory_entries_tree_initialize(
  function fsntfs_test_directory_entries_tree_free (line 246) | int fsntfs_test_directory_entries_tree_free(
  function fsntfs_test_directory_entries_tree_insert_index_value (line 284) | int fsntfs_test_directory_entries_tree_insert_index_value(
  function fsntfs_test_directory_entries_tree_read_from_index_node (line 394) | int fsntfs_test_directory_entries_tree_read_from_index_node(
  function fsntfs_test_directory_entries_tree_read_from_i30_index (line 543) | int fsntfs_test_directory_entries_tree_read_from_i30_index(
  function fsntfs_test_directory_entries_tree_get_number_of_entries (line 698) | int fsntfs_test_directory_entries_tree_get_number_of_entries(
  function fsntfs_test_directory_entries_tree_get_entry_by_index (line 776) | int fsntfs_test_directory_entries_tree_get_entry_by_index(
  function fsntfs_test_directory_entries_tree_get_entry_from_index_node_by_utf8_name (line 896) | int fsntfs_test_directory_entries_tree_get_entry_from_index_node_by_utf8...
  function fsntfs_test_directory_entries_tree_get_entry_by_utf8_name (line 1099) | int fsntfs_test_directory_entries_tree_get_entry_by_utf8_name(
  function fsntfs_test_directory_entries_tree_get_entry_from_index_node_by_utf16_name (line 1212) | int fsntfs_test_directory_entries_tree_get_entry_from_index_node_by_utf1...
  function fsntfs_test_directory_entries_tree_get_entry_by_utf16_name (line 1415) | int fsntfs_test_directory_entries_tree_get_entry_by_utf16_name(
  function main (line 1534) | int main(

FILE: tests/fsntfs_test_directory_entry.c
  function fsntfs_test_directory_entry_initialize (line 52) | int fsntfs_test_directory_entry_initialize(
  function fsntfs_test_directory_entry_free (line 247) | int fsntfs_test_directory_entry_free(
  function fsntfs_test_directory_entry_clone (line 285) | int fsntfs_test_directory_entry_clone(
  function fsntfs_test_directory_entry_compare_by_file_reference (line 433) | int fsntfs_test_directory_entry_compare_by_file_reference(
  function fsntfs_test_directory_entry_get_mft_entry_index (line 591) | int fsntfs_test_directory_entry_get_mft_entry_index(
  function fsntfs_test_directory_entry_get_file_reference (line 664) | int fsntfs_test_directory_entry_get_file_reference(
  function fsntfs_test_directory_entry_get_parent_file_reference (line 737) | int fsntfs_test_directory_entry_get_parent_file_reference(
  function fsntfs_test_directory_entry_get_utf8_name_size (line 812) | int fsntfs_test_directory_entry_get_utf8_name_size(
  function fsntfs_test_directory_entry_get_utf8_name (line 885) | int fsntfs_test_directory_entry_get_utf8_name(
  function fsntfs_test_directory_entry_get_utf16_name_size (line 998) | int fsntfs_test_directory_entry_get_utf16_name_size(
  function fsntfs_test_directory_entry_get_utf16_name (line 1071) | int fsntfs_test_directory_entry_get_utf16_name(
  function main (line 1190) | int main(

FILE: tests/fsntfs_test_error.c
  function fsntfs_test_error_free (line 37) | int fsntfs_test_error_free(
  function fsntfs_test_error_fprint (line 51) | int fsntfs_test_error_fprint(
  function fsntfs_test_error_sprint (line 66) | int fsntfs_test_error_sprint(
  function fsntfs_test_error_backtrace_fprint (line 82) | int fsntfs_test_error_backtrace_fprint(
  function fsntfs_test_error_backtrace_sprint (line 97) | int fsntfs_test_error_backtrace_sprint(
  function main (line 117) | int main(

FILE: tests/fsntfs_test_extent.c
  function fsntfs_test_extent_initialize (line 43) | int fsntfs_test_extent_initialize(
  function fsntfs_test_extent_free (line 238) | int fsntfs_test_extent_free(
  function fsntfs_test_extent_get_values (line 276) | int fsntfs_test_extent_get_values(
  function main (line 440) | int main(

FILE: tests/fsntfs_test_file_entry.c
  function fsntfs_test_file_entry_initialize (line 1096) | int fsntfs_test_file_entry_initialize(
  function fsntfs_test_file_entry_free (line 1534) | int fsntfs_test_file_entry_free(
  function fsntfs_test_file_entry_is_empty (line 1572) | int fsntfs_test_file_entry_is_empty(
  function fsntfs_test_file_entry_is_allocated (line 1704) | int fsntfs_test_file_entry_is_allocated(
  function fsntfs_test_internal_file_entry_get_attribute_by_index (line 1838) | int fsntfs_test_internal_file_entry_get_attribute_by_index(
  function fsntfs_test_file_entry_get_file_reference (line 1975) | int fsntfs_test_file_entry_get_file_reference(
  function fsntfs_test_file_entry_get_base_record_file_reference (line 2106) | int fsntfs_test_file_entry_get_base_record_file_reference(
  function fsntfs_test_file_entry_get_parent_file_reference (line 2237) | int fsntfs_test_file_entry_get_parent_file_reference(
  function fsntfs_test_file_entry_get_parent_file_reference_by_attribute_index (line 2368) | int fsntfs_test_file_entry_get_parent_file_reference_by_attribute_index(
  function fsntfs_test_file_entry_get_journal_sequence_number (line 2540) | int fsntfs_test_file_entry_get_journal_sequence_number(
  function fsntfs_test_file_entry_get_creation_time (line 2671) | int fsntfs_test_file_entry_get_creation_time(
  function fsntfs_test_file_entry_get_modification_time (line 2802) | int fsntfs_test_file_entry_get_modification_time(
  function fsntfs_test_file_entry_get_access_time (line 2933) | int fsntfs_test_file_entry_get_access_time(
  function fsntfs_test_file_entry_get_entry_modification_time (line 3064) | int fsntfs_test_file_entry_get_entry_modification_time(
  function fsntfs_test_file_entry_get_file_attribute_flags (line 3195) | int fsntfs_test_file_entry_get_file_attribute_flags(
  function fsntfs_test_file_entry_get_utf8_name_size (line 3326) | int fsntfs_test_file_entry_get_utf8_name_size(
  function fsntfs_test_file_entry_get_utf8_name (line 3462) | int fsntfs_test_file_entry_get_utf8_name(
  function fsntfs_test_file_entry_get_utf16_name_size (line 3635) | int fsntfs_test_file_entry_get_utf16_name_size(
  function fsntfs_test_file_entry_get_utf16_name (line 3771) | int fsntfs_test_file_entry_get_utf16_name(
  function fsntfs_test_file_entry_get_name_attribute_index (line 3944) | int fsntfs_test_file_entry_get_name_attribute_index(
  function fsntfs_test_file_entry_get_utf8_name_size_by_attribute_index (line 4106) | int fsntfs_test_file_entry_get_utf8_name_size_by_attribute_index(
  function fsntfs_test_file_entry_get_utf8_name_by_attribute_index (line 4283) | int fsntfs_test_file_entry_get_utf8_name_by_attribute_index(
  function fsntfs_test_file_entry_get_utf16_name_size_by_attribute_index (line 4501) | int fsntfs_test_file_entry_get_utf16_name_size_by_attribute_index(
  function fsntfs_test_file_entry_get_utf16_name_by_attribute_index (line 4678) | int fsntfs_test_file_entry_get_utf16_name_by_attribute_index(
  function fsntfs_test_file_entry_get_utf8_symbolic_link_target_size (line 4896) | int fsntfs_test_file_entry_get_utf8_symbolic_link_target_size(
  function fsntfs_test_file_entry_get_utf8_symbolic_link_target (line 5053) | int fsntfs_test_file_entry_get_utf8_symbolic_link_target(
  function fsntfs_test_file_entry_get_utf16_symbolic_link_target_size (line 5253) | int fsntfs_test_file_entry_get_utf16_symbolic_link_target_size(
  function fsntfs_test_file_entry_get_utf16_symbolic_link_target (line 5410) | int fsntfs_test_file_entry_get_utf16_symbolic_link_target(
  function fsntfs_test_file_entry_get_security_descriptor_size (line 5610) | int fsntfs_test_file_entry_get_security_descriptor_size(
  function fsntfs_test_file_entry_get_security_descriptor (line 5750) | int fsntfs_test_file_entry_get_security_descriptor(
  function fsntfs_test_file_entry_get_number_of_attributes (line 5927) | int fsntfs_test_file_entry_get_number_of_attributes(
  function fsntfs_test_file_entry_get_attribute_by_index (line 6063) | int fsntfs_test_file_entry_get_attribute_by_index(
  function fsntfs_test_file_entry_has_directory_entries_index (line 6251) | int fsntfs_test_file_entry_has_directory_entries_index(
  function fsntfs_test_file_entry_has_default_data_stream (line 6383) | int fsntfs_test_file_entry_has_default_data_stream(
  function fsntfs_test_file_entry_get_number_of_alternate_data_streams (line 6515) | int fsntfs_test_file_entry_get_number_of_alternate_data_streams(
  function fsntfs_test_file_entry_get_number_of_sub_file_entries (line 6661) | int fsntfs_test_file_entry_get_number_of_sub_file_entries(
  function fsntfs_test_file_entry_read_buffer (line 6803) | int fsntfs_test_file_entry_read_buffer(
  function fsntfs_test_file_entry_read_buffer_at_offset (line 7187) | int fsntfs_test_file_entry_read_buffer_at_offset(
  function fsntfs_test_file_entry_seek_offset (line 7513) | int fsntfs_test_file_entry_seek_offset(
  function fsntfs_test_file_entry_get_offset (line 7746) | int fsntfs_test_file_entry_get_offset(
  function fsntfs_test_file_entry_get_size (line 7877) | int fsntfs_test_file_entry_get_size(
  function fsntfs_test_file_entry_get_number_of_extents (line 8008) | int fsntfs_test_file_entry_get_number_of_extents(
  function fsntfs_test_file_entry_get_extent_by_index (line 8144) | int fsntfs_test_file_entry_get_extent_by_index(
  function main (line 8356) | int main(

FILE: tests/fsntfs_test_file_name_attribute.c
  function fsntfs_test_file_name_attribute_get_parent_file_reference (line 55) | int fsntfs_test_file_name_attribute_get_parent_file_reference(
  function fsntfs_test_file_name_attribute_get_creation_time (line 152) | int fsntfs_test_file_name_attribute_get_creation_time(
  function fsntfs_test_file_name_attribute_get_modification_time (line 249) | int fsntfs_test_file_name_attribute_get_modification_time(
  function fsntfs_test_file_name_attribute_get_access_time (line 346) | int fsntfs_test_file_name_attribute_get_access_time(
  function fsntfs_test_file_name_attribute_get_entry_modification_time (line 443) | int fsntfs_test_file_name_attribute_get_entry_modification_time(
  function fsntfs_test_file_name_attribute_get_file_attribute_flags (line 540) | int fsntfs_test_file_name_attribute_get_file_attribute_flags(
  function fsntfs_test_file_name_attribute_get_utf8_name_size (line 637) | int fsntfs_test_file_name_attribute_get_utf8_name_size(
  function fsntfs_test_file_name_attribute_get_utf8_name (line 739) | int fsntfs_test_file_name_attribute_get_utf8_name(
  function fsntfs_test_file_name_attribute_get_utf16_name_size (line 877) | int fsntfs_test_file_name_attribute_get_utf16_name_size(
  function fsntfs_test_file_name_attribute_get_utf16_name (line 979) | int fsntfs_test_file_name_attribute_get_utf16_name(
  function main (line 1123) | int main(

FILE: tests/fsntfs_test_file_name_values.c
  function fsntfs_test_file_name_values_initialize (line 54) | int fsntfs_test_file_name_values_initialize(
  function fsntfs_test_file_name_values_free (line 249) | int fsntfs_test_file_name_values_free(
  function fsntfs_test_file_name_values_clone (line 287) | int fsntfs_test_file_name_values_clone(
  function fsntfs_test_file_name_values_set_name (line 555) | int fsntfs_test_file_name_values_set_name(
  function fsntfs_test_file_name_values_read_data (line 817) | int fsntfs_test_file_name_values_read_data(
  function fsntfs_test_file_name_values_read_from_mft_attribute (line 1063) | int fsntfs_test_file_name_values_read_from_mft_attribute(
  function fsntfs_test_file_name_values_get_parent_file_reference (line 1280) | int fsntfs_test_file_name_values_get_parent_file_reference(
  function fsntfs_test_file_name_values_get_creation_time (line 1353) | int fsntfs_test_file_name_values_get_creation_time(
  function fsntfs_test_file_name_values_get_modification_time (line 1426) | int fsntfs_test_file_name_values_get_modification_time(
  function fsntfs_test_file_name_values_get_access_time (line 1499) | int fsntfs_test_file_name_values_get_access_time(
  function fsntfs_test_file_name_values_get_entry_modification_time (line 1572) | int fsntfs_test_file_name_values_get_entry_modification_time(
  function fsntfs_test_file_name_values_get_file_attribute_flags (line 1645) | int fsntfs_test_file_name_values_get_file_attribute_flags(
  function fsntfs_test_file_name_values_get_utf8_name_size (line 1718) | int fsntfs_test_file_name_values_get_utf8_name_size(
  function fsntfs_test_file_name_values_get_utf8_name (line 1791) | int fsntfs_test_file_name_values_get_utf8_name(
  function fsntfs_test_file_name_values_get_utf16_name_size (line 1904) | int fsntfs_test_file_name_values_get_utf16_name_size(
  function fsntfs_test_file_name_values_get_utf16_name (line 1977) | int fsntfs_test_file_name_values_get_utf16_name(
  function main (line 2096) | int main(

FILE: tests/fsntfs_test_file_system.c
  function fsntfs_test_file_system_initialize (line 1074) | int fsntfs_test_file_system_initialize(
  function fsntfs_test_file_system_free (line 1269) | int fsntfs_test_file_system_free(
  function fsntfs_test_file_system_read_mft (line 1307) | int fsntfs_test_file_system_read_mft(
  function main (line 1566) | int main(

FILE: tests/fsntfs_test_fixup_values.c
  function fsntfs_test_fixup_values_apply (line 110) | int fsntfs_test_fixup_values_apply(
  function main (line 298) | int main(

FILE: tests/fsntfs_test_functions.c
  function fsntfs_test_get_narrow_source (line 41) | int fsntfs_test_get_narrow_source(
  function fsntfs_test_get_wide_source (line 241) | int fsntfs_test_get_wide_source(
  function fsntfs_test_system_string_copy_from_64_bit_in_decimal (line 440) | int fsntfs_test_system_string_copy_from_64_bit_in_decimal(
  function fsntfs_test_open_file_io_handle (line 550) | int fsntfs_test_open_file_io_handle(
  function fsntfs_test_close_file_io_handle (line 626) | int fsntfs_test_close_file_io_handle(

FILE: tests/fsntfs_test_getopt.c
  function system_integer_t (line 59) | system_integer_t fsntfs_test_getopt(

FILE: tests/fsntfs_test_index.c
  function fsntfs_test_index_initialize (line 53) | int fsntfs_test_index_initialize(
  function fsntfs_test_index_free (line 403) | int fsntfs_test_index_free(
  function main (line 447) | int main(

FILE: tests/fsntfs_test_index_entry.c
  function fsntfs_test_index_entry_initialize (line 303) | int fsntfs_test_index_entry_initialize(
  function fsntfs_test_index_entry_free (line 498) | int fsntfs_test_index_entry_free(
  function fsntfs_test_index_entry_read_file_io_handle (line 536) | int fsntfs_test_index_entry_read_file_io_handle(
  function main (line 847) | int main(

FILE: tests/fsntfs_test_index_entry_header.c
  function fsntfs_test_index_entry_header_initialize (line 48) | int fsntfs_test_index_entry_header_initialize(
  function fsntfs_test_index_entry_header_free (line 243) | int fsntfs_test_index_entry_header_free(
  function fsntfs_test_index_entry_header_read_data (line 281) | int fsntfs_test_index_entry_header_read_data(
  function fsntfs_test_index_entry_header_get_fixup_values_offset (line 437) | int fsntfs_test_index_entry_header_get_fixup_values_offset(
  function fsntfs_test_index_entry_header_get_number_of_fixup_values (line 515) | int fsntfs_test_index_entry_header_get_number_of_fixup_values(
  function main (line 599) | int main(

FILE: tests/fsntfs_test_index_entry_vector.c
  function fsntfs_test_index_entry_vector_initialize (line 571) | int fsntfs_test_index_entry_vector_initialize(
  function fsntfs_test_index_entry_vector_read_element_data (line 968) | int fsntfs_test_index_entry_vector_read_element_data(
  function main (line 1412) | int main(

FILE: tests/fsntfs_test_index_node.c
  function fsntfs_test_index_node_initialize (line 48) | int fsntfs_test_index_node_initialize(
  function fsntfs_test_index_node_free (line 243) | int fsntfs_test_index_node_free(
  function fsntfs_test_index_node_read_header (line 281) | int fsntfs_test_index_node_read_header(
  function fsntfs_test_index_node_read_values (line 442) | int fsntfs_test_index_node_read_values(
  function fsntfs_test_index_node_get_number_of_values (line 624) | int fsntfs_test_index_node_get_number_of_values(
  function main (line 708) | int main(

FILE: tests/fsntfs_test_index_node_header.c
  function fsntfs_test_index_node_header_initialize (line 46) | int fsntfs_test_index_node_header_initialize(
  function fsntfs_test_index_node_header_free (line 241) | int fsntfs_test_index_node_header_free(
  function fsntfs_test_index_node_header_read_data (line 279) | int fsntfs_test_index_node_header_read_data(
  function main (line 423) | int main(

FILE: tests/fsntfs_test_index_root_header.c
  function fsntfs_test_index_root_header_initialize (line 47) | int fsntfs_test_index_root_header_initialize(
  function fsntfs_test_index_root_header_free (line 242) | int fsntfs_test_index_root_header_free(
  function fsntfs_test_index_root_header_read_data (line 280) | int fsntfs_test_index_root_header_read_data(
  function fsntfs_test_index_root_header_get_index_entry_size (line 436) | int fsntfs_test_index_root_header_get_index_entry_size(
  function fsntfs_test_index_root_header_get_attribute_type (line 514) | int fsntfs_test_index_root_header_get_attribute_type(
  function fsntfs_test_index_root_header_get_collation_type (line 592) | int fsntfs_test_index_root_header_get_collation_type(
  function main (line 676) | int main(

FILE: tests/fsntfs_test_index_value.c
  function fsntfs_test_index_value_initialize (line 47) | int fsntfs_test_index_value_initialize(
  function fsntfs_test_index_value_free (line 242) | int fsntfs_test_index_value_free(
  function fsntfs_test_index_value_read (line 280) | int fsntfs_test_index_value_read(
  function main (line 438) | int main(

FILE: tests/fsntfs_test_io_handle.c
  function fsntfs_test_io_handle_initialize (line 43) | int fsntfs_test_io_handle_initialize(
  function fsntfs_test_io_handle_free (line 238) | int fsntfs_test_io_handle_free(
  function fsntfs_test_io_handle_clear (line 276) | int fsntfs_test_io_handle_clear(
  function main (line 410) | int main(

FILE: tests/fsntfs_test_logged_utility_stream_values.c
  function fsntfs_test_logged_utility_stream_values_initialize (line 56) | int fsntfs_test_logged_utility_stream_values_initialize(
  function fsntfs_test_logged_utility_stream_values_free (line 251) | int fsntfs_test_logged_utility_stream_values_free(
  function fsntfs_test_logged_utility_stream_values_read_data (line 289) | int fsntfs_test_logged_utility_stream_values_read_data(
  function fsntfs_test_logged_utility_stream_values_read_from_mft_attribute (line 445) | int fsntfs_test_logged_utility_stream_values_read_from_mft_attribute(
  function main (line 669) | int main(

FILE: tests/fsntfs_test_mft.c
  function fsntfs_test_mft_initialize (line 44) | int fsntfs_test_mft_initialize(
  function fsntfs_test_mft_free (line 320) | int fsntfs_test_mft_free(
  function fsntfs_test_mft_get_number_of_entries (line 360) | int fsntfs_test_mft_get_number_of_entries(
  function main (line 444) | int main(

FILE: tests/fsntfs_test_mft_attribute.c
  function fsntfs_test_mft_attribute_initialize (line 63) | int fsntfs_test_mft_attribute_initialize(
  function fsntfs_test_mft_attribute_free (line 258) | int fsntfs_test_mft_attribute_free(
  function fsntfs_test_mft_attribute_read_data (line 296) | int fsntfs_test_mft_attribute_read_data(
  function fsntfs_test_mft_attribute_data_is_resident (line 969) | int fsntfs_test_mft_attribute_data_is_resident(
  function fsntfs_test_mft_attribute_get_type (line 1022) | int fsntfs_test_mft_attribute_get_type(
  function fsntfs_test_mft_attribute_get_data_flags (line 1100) | int fsntfs_test_mft_attribute_get_data_flags(
  function fsntfs_test_mft_attribute_get_utf8_name_size (line 1178) | int fsntfs_test_mft_attribute_get_utf8_name_size(
  function fsntfs_test_mft_attribute_get_utf8_name (line 1305) | int fsntfs_test_mft_attribute_get_utf8_name(
  function fsntfs_test_mft_attribute_get_utf16_name_size (line 1443) | int fsntfs_test_mft_attribute_get_utf16_name_size(
  function fsntfs_test_mft_attribute_get_utf16_name (line 1570) | int fsntfs_test_mft_attribute_get_utf16_name(
  function fsntfs_test_mft_attribute_compare_name_with_utf8_string (line 1708) | int fsntfs_test_mft_attribute_compare_name_with_utf8_string(
  function fsntfs_test_mft_attribute_compare_name_with_utf16_string (line 1818) | int fsntfs_test_mft_attribute_compare_name_with_utf16_string(
  function fsntfs_test_mft_attribute_get_compression_unit_size (line 1928) | int fsntfs_test_mft_attribute_get_compression_unit_size(
  function fsntfs_test_mft_attribute_get_resident_data (line 2006) | int fsntfs_test_mft_attribute_get_resident_data(
  function fsntfs_test_mft_attribute_get_number_of_data_runs (line 2110) | int fsntfs_test_mft_attribute_get_number_of_data_runs(
  function fsntfs_test_mft_attribute_get_data_run_by_index (line 2188) | int fsntfs_test_mft_attribute_get_data_run_by_index(
  function fsntfs_test_mft_attribute_get_data_extents_array (line 2286) | int fsntfs_test_mft_attribute_get_data_extents_array(
  function main (line 2482) | int main(

FILE: tests/fsntfs_test_mft_attribute_list.c
  function fsntfs_test_mft_attribute_list_read_data (line 71) | int fsntfs_test_mft_attribute_list_read_data(
  function fsntfs_test_mft_attribute_list_read_from_attribute (line 242) | int fsntfs_test_mft_attribute_list_read_from_attribute(
  function main (line 472) | int main(

FILE: tests/fsntfs_test_mft_attribute_list_entry.c
  function fsntfs_test_mft_attribute_list_entry_initialize (line 50) | int fsntfs_test_mft_attribute_list_entry_initialize(
  function fsntfs_test_mft_attribute_list_entry_free (line 245) | int fsntfs_test_mft_attribute_list_entry_free(
  function fsntfs_test_mft_attribute_list_entry_read_data (line 283) | int fsntfs_test_mft_attribute_list_entry_read_data(
  function fsntfs_test_mft_attribute_list_entry_get_attribute_type (line 658) | int fsntfs_test_mft_attribute_list_entry_get_attribute_type(
  function fsntfs_test_mft_attribute_list_entry_get_file_reference (line 736) | int fsntfs_test_mft_attribute_list_entry_get_file_reference(
  function fsntfs_test_mft_attribute_list_entry_get_utf8_name_size (line 809) | int fsntfs_test_mft_attribute_list_entry_get_utf8_name_size(
  function fsntfs_test_mft_attribute_list_entry_get_utf8_name (line 936) | int fsntfs_test_mft_attribute_list_entry_get_utf8_name(
  function fsntfs_test_mft_attribute_list_entry_get_utf16_name_size (line 1074) | int fsntfs_test_mft_attribute_list_entry_get_utf16_name_size(
  function fsntfs_test_mft_attribute_list_entry_get_utf16_name (line 1201) | int fsntfs_test_mft_attribute_list_entry_get_utf16_name(
  function fsntfs_test_mft_attribute_list_entry_compare_name_with_utf8_string (line 1339) | int fsntfs_test_mft_attribute_list_entry_compare_name_with_utf8_string(
  function fsntfs_test_mft_attribute_list_entry_compare_name_with_utf16_string (line 1471) | int fsntfs_test_mft_attribute_list_entry_compare_name_with_utf16_string(
  function main (line 1609) | int main(

FILE: tests/fsntfs_test_mft_entry.c
  function fsntfs_test_mft_entry_check_for_empty_block (line 187) | int fsntfs_test_mft_entry_check_for_empty_block(
  function fsntfs_test_mft_entry_initialize (line 303) | int fsntfs_test_mft_entry_initialize(
  function fsntfs_test_mft_entry_free (line 498) | int fsntfs_test_mft_entry_free(
  function fsntfs_test_mft_entry_read_data (line 536) | int fsntfs_test_mft_entry_read_data(
  function fsntfs_test_mft_entry_read_file_io_handle (line 1080) | int fsntfs_test_mft_entry_read_file_io_handle(
  function fsntfs_test_mft_entry_read_attributes_data (line 1516) | int fsntfs_test_mft_entry_read_attributes_data(
  function fsntfs_test_mft_entry_is_empty (line 1752) | int fsntfs_test_mft_entry_is_empty(
  function fsntfs_test_mft_entry_is_allocated (line 1805) | int fsntfs_test_mft_entry_is_allocated(
  function fsntfs_test_mft_entry_get_file_reference (line 1858) | int fsntfs_test_mft_entry_get_file_reference(
  function fsntfs_test_mft_entry_get_base_record_file_reference (line 1931) | int fsntfs_test_mft_entry_get_base_record_file_reference(
  function fsntfs_test_mft_entry_get_journal_sequence_number (line 2004) | int fsntfs_test_mft_entry_get_journal_sequence_number(
  function fsntfs_test_mft_entry_get_number_of_attributes (line 2077) | int fsntfs_test_mft_entry_get_number_of_attributes(
  function fsntfs_test_mft_entry_get_attribute_by_index (line 2150) | int fsntfs_test_mft_entry_get_attribute_by_index(
  function fsntfs_test_mft_entry_get_number_of_alternate_data_attributes (line 2243) | int fsntfs_test_mft_entry_get_number_of_alternate_data_attributes(
  function fsntfs_test_mft_entry_get_alternate_data_attribute_by_index (line 2321) | int fsntfs_test_mft_entry_get_alternate_data_attribute_by_index(
  function main (line 2436) | int main(

FILE: tests/fsntfs_test_mft_entry_header.c
  function fsntfs_test_mft_entry_header_initialize (line 54) | int fsntfs_test_mft_entry_header_initialize(
  function fsntfs_test_mft_entry_header_free (line 249) | int fsntfs_test_mft_entry_header_free(
  function fsntfs_test_mft_entry_header_read_data (line 287) | int fsntfs_test_mft_entry_header_read_data(
  function fsntfs_test_mft_entry_header_get_fixup_values_offset (line 523) | int fsntfs_test_mft_entry_header_get_fixup_values_offset(
  function fsntfs_test_mft_entry_header_get_number_of_fixup_values (line 601) | int fsntfs_test_mft_entry_header_get_number_of_fixup_values(
  function fsntfs_test_mft_entry_header_get_attributes_offset (line 679) | int fsntfs_test_mft_entry_header_get_attributes_offset(
  function fsntfs_test_mft_entry_header_get_used_entry_size (line 757) | int fsntfs_test_mft_entry_header_get_used_entry_size(
  function fsntfs_test_mft_entry_header_get_total_entry_size (line 835) | int fsntfs_test_mft_entry_header_get_total_entry_size(
  function main (line 919) | int main(

FILE: tests/fsntfs_test_mft_metadata_file.c
  function fsntfs_test_mft_metadata_file_open_source (line 65) | int fsntfs_test_mft_metadata_file_open_source(
  function fsntfs_test_mft_metadata_file_close_source (line 140) | int fsntfs_test_mft_metadata_file_close_source(
  function fsntfs_test_mft_metadata_file_initialize (line 190) | int fsntfs_test_mft_metadata_file_initialize(
  function fsntfs_test_mft_metadata_file_free (line 385) | int fsntfs_test_mft_metadata_file_free(
  function fsntfs_test_mft_metadata_file_open (line 423) | int fsntfs_test_mft_metadata_file_open(
  function fsntfs_test_mft_metadata_file_open_wide (line 544) | int fsntfs_test_mft_metadata_file_open_wide(
  function fsntfs_test_mft_metadata_file_close (line 665) | int fsntfs_test_mft_metadata_file_close(
  function fsntfs_test_mft_metadata_file_open_close (line 703) | int fsntfs_test_mft_metadata_file_open_close(
  function fsntfs_test_mft_metadata_file_signal_abort (line 844) | int fsntfs_test_mft_metadata_file_signal_abort(
  function fsntfs_test_mft_metadata_file_get_utf8_volume_name_size (line 897) | int fsntfs_test_mft_metadata_file_get_utf8_volume_name_size(
  function fsntfs_test_mft_metadata_file_get_utf8_volume_name (line 975) | int fsntfs_test_mft_metadata_file_get_utf8_volume_name(
  function fsntfs_test_mft_metadata_file_get_utf16_volume_name_size (line 1093) | int fsntfs_test_mft_metadata_file_get_utf16_volume_name_size(
  function fsntfs_test_mft_metadata_file_get_utf16_volume_name (line 1171) | int fsntfs_test_mft_metadata_file_get_utf16_volume_name(
  function fsntfs_test_mft_metadata_file_get_number_of_file_entries (line 1289) | int fsntfs_test_mft_metadata_file_get_number_of_file_entries(
  function main (line 1371) | int main(

FILE: tests/fsntfs_test_name.c
  function fsntfs_test_name_compare (line 43) | int fsntfs_test_name_compare(
  function fsntfs_test_name_compare_short (line 273) | int fsntfs_test_name_compare_short(
  function fsntfs_test_name_compare_with_utf8_string (line 629) | int fsntfs_test_name_compare_with_utf8_string(
  function fsntfs_test_name_compare_with_utf16_string (line 862) | int fsntfs_test_name_compare_with_utf16_string(
  function main (line 1101) | int main(

FILE: tests/fsntfs_test_notify.c
  function fsntfs_test_notify_set_verbose (line 38) | int fsntfs_test_notify_set_verbose(
  function fsntfs_test_notify_set_stream (line 52) | int fsntfs_test_notify_set_stream(
  function fsntfs_test_notify_stream_open (line 91) | int fsntfs_test_notify_stream_open(
  function fsntfs_test_notify_stream_close (line 158) | int fsntfs_test_notify_stream_close(
  function main (line 200) | int main(

FILE: tests/fsntfs_test_object_identifier_values.c
  function fsntfs_test_object_identifier_values_initialize (line 50) | int fsntfs_test_object_identifier_values_initialize(
  function fsntfs_test_object_identifier_values_free (line 245) | int fsntfs_test_object_identifier_values_free(
  function fsntfs_test_object_identifier_values_read_data (line 283) | int fsntfs_test_object_identifier_values_read_data(
  function fsntfs_test_object_identifier_values_read_from_mft_attribute (line 421) | int fsntfs_test_object_identifier_values_read_from_mft_attribute(
  function main (line 644) | int main(

FILE: tests/fsntfs_test_path_hint.c
  function fsntfs_test_path_hint_initialize (line 43) | int fsntfs_test_path_hint_initialize(
  function fsntfs_test_path_hint_free (line 238) | int fsntfs_test_path_hint_free(
  function main (line 282) | int main(

FILE: tests/fsntfs_test_profiler.c
  function fsntfs_test_profiler_initialize (line 45) | int fsntfs_test_profiler_initialize(
  function fsntfs_test_profiler_free (line 240) | int fsntfs_test_profiler_free(
  function fsntfs_test_profiler_close (line 278) | int fsntfs_test_profiler_close(
  function main (line 324) | int main(

FILE: tests/fsntfs_test_reparse_point_attribute.c
  function fsntfs_test_reparse_point_attribute_get_tag (line 57) | int fsntfs_test_reparse_point_attribute_get_tag(
  function fsntfs_test_reparse_point_attribute_get_utf8_substitute_name_size (line 130) | int fsntfs_test_reparse_point_attribute_get_utf8_substitute_name_size(
  function fsntfs_test_reparse_point_attribute_get_utf8_substitute_name (line 208) | int fsntfs_test_reparse_point_attribute_get_utf8_substitute_name(
  function fsntfs_test_reparse_point_attribute_get_utf16_substitute_name_size (line 326) | int fsntfs_test_reparse_point_attribute_get_utf16_substitute_name_size(
  function fsntfs_test_reparse_point_attribute_get_utf16_substitute_name (line 404) | int fsntfs_test_reparse_point_attribute_get_utf16_substitute_name(
  function fsntfs_test_reparse_point_attribute_get_utf8_print_name_size (line 522) | int fsntfs_test_reparse_point_attribute_get_utf8_print_name_size(
  function fsntfs_test_reparse_point_attribute_get_utf8_print_name (line 600) | int fsntfs_test_reparse_point_attribute_get_utf8_print_name(
  function fsntfs_test_reparse_point_attribute_get_utf16_print_name_size (line 718) | int fsntfs_test_reparse_point_attribute_get_utf16_print_name_size(
  function fsntfs_test_reparse_point_attribute_get_utf16_print_name (line 796) | int fsntfs_test_reparse_point_attribute_get_utf16_print_name(
  function main (line 920) | int main(

FILE: tests/fsntfs_test_reparse_point_values.c
  function fsntfs_test_reparse_point_values_initialize (line 53) | int fsntfs_test_reparse_point_values_initialize(
  function fsntfs_test_reparse_point_values_free (line 248) | int fsntfs_test_reparse_point_values_free(
  function fsntfs_test_reparse_point_values_read_data (line 286) | int fsntfs_test_reparse_point_values_read_data(
  function fsntfs_test_reparse_point_values_read_from_mft_attribute (line 424) | int fsntfs_test_reparse_point_values_read_from_mft_attribute(
  function fsntfs_test_reparse_point_values_get_tag (line 641) | int fsntfs_test_reparse_point_values_get_tag(
  function fsntfs_test_reparse_point_values_get_utf8_substitute_name_size (line 759) | int fsntfs_test_reparse_point_values_get_utf8_substitute_name_size(
  function fsntfs_test_reparse_point_values_get_utf8_substitute_name (line 882) | int fsntfs_test_reparse_point_values_get_utf8_substitute_name(
  function fsntfs_test_reparse_point_values_get_utf16_substitute_name_size (line 1045) | int fsntfs_test_reparse_point_values_get_utf16_substitute_name_size(
  function fsntfs_test_reparse_point_values_get_utf16_substitute_name (line 1168) | int fsntfs_test_reparse_point_values_get_utf16_substitute_name(
  function fsntfs_test_reparse_point_values_get_utf8_print_name_size (line 1331) | int fsntfs_test_reparse_point_values_get_utf8_print_name_size(
  function fsntfs_test_reparse_point_values_get_utf8_print_name (line 1454) | int fsntfs_test_reparse_point_values_get_utf8_print_name(
  function fsntfs_test_reparse_point_values_get_utf16_print_name_size (line 1617) | int fsntfs_test_reparse_point_values_get_utf16_print_name_size(
  function fsntfs_test_reparse_point_values_get_utf16_print_name (line 1740) | int fsntfs_test_reparse_point_values_get_utf16_print_name(
  function main (line 1909) | int main(

FILE: tests/fsntfs_test_rwlock.c
  function pthread_rwlock_init (line 61) | int pthread_rwlock_init(
  function pthread_rwlock_destroy (line 95) | int pthread_rwlock_destroy(
  function pthread_rwlock_rdlock (line 125) | int pthread_rwlock_rdlock(
  function pthread_rwlock_wrlock (line 155) | int pthread_rwlock_wrlock(
  function pthread_rwlock_unlock (line 185) | int pthread_rwlock_unlock(

FILE: tests/fsntfs_test_sds_index_value.c
  function fsntfs_test_sds_index_value_initialize (line 47) | int fsntfs_test_sds_index_value_initialize(
  function fsntfs_test_sds_index_value_free (line 242) | int fsntfs_test_sds_index_value_free(
  function fsntfs_test_sds_index_value_read_data (line 280) | int fsntfs_test_sds_index_value_read_data(
  function main (line 442) | int main(

FILE: tests/fsntfs_test_security_descriptor_index.c
  function fsntfs_test_security_descriptor_index_initialize (line 53) | int fsntfs_test_security_descriptor_index_initialize(
  function fsntfs_test_security_descriptor_index_free (line 387) | int fsntfs_test_security_descriptor_index_free(
  function main (line 431) | int main(

FILE: tests/fsntfs_test_security_descriptor_index_value.c
  function fsntfs_test_security_descriptor_index_value_initialize (line 48) | int fsntfs_test_security_descriptor_index_value_initialize(
  function fsntfs_test_security_descriptor_index_value_free (line 243) | int fsntfs_test_security_descriptor_index_value_free(
  function fsntfs_test_security_descriptor_index_value_compare (line 281) | int fsntfs_test_security_descriptor_index_value_compare(
  function fsntfs_test_security_descriptor_index_value_read_data (line 476) | int fsntfs_test_security_descriptor_index_value_read_data(
  function main (line 638) | int main(

FILE: tests/fsntfs_test_security_descriptor_values.c
  function fsntfs_test_security_descriptor_values_read_segment_data (line 59) | ssize_t fsntfs_test_security_descriptor_values_read_segment_data(
  function off64_t (line 103) | off64_t fsntfs_test_security_descriptor_values_seek_segment_offset(
  function fsntfs_test_security_descriptor_values_initialize (line 140) | int fsntfs_test_security_descriptor_values_initialize(
  function fsntfs_test_security_descriptor_values_free (line 335) | int fsntfs_test_security_descriptor_values_free(
  function fsntfs_test_security_descriptor_values_read_data (line 373) | int fsntfs_test_security_descriptor_values_read_data(
  function fsntfs_test_security_descriptor_values_read_buffer (line 511) | int fsntfs_test_security_descriptor_values_read_buffer(
  function fsntfs_test_security_descriptor_values_read_stream (line 791) | int fsntfs_test_security_descriptor_values_read_stream(
  function fsntfs_test_security_descriptor_values_read_from_mft_attribute (line 1064) | int fsntfs_test_security_descriptor_values_read_from_mft_attribute(
  function fsntfs_test_security_descriptor_values_get_data_size (line 1290) | int fsntfs_test_security_descriptor_values_get_data_size(
  function fsntfs_test_security_descriptor_values_get_data (line 1368) | int fsntfs_test_security_descriptor_values_get_data(
  function main (line 1519) | int main(

FILE: tests/fsntfs_test_standard_information_values.c
  function fsntfs_test_standard_information_values_initialize (line 53) | int fsntfs_test_standard_information_values_initialize(
  function fsntfs_test_standard_information_values_free (line 248) | int fsntfs_test_standard_information_values_free(
  function fsntfs_test_standard_information_values_read_data (line 286) | int fsntfs_test_standard_information_values_read_data(
  function fsntfs_test_standard_information_values_read_from_mft_attribute (line 442) | int fsntfs_test_standard_information_values_read_from_mft_attribute(
  function fsntfs_test_standard_information_values_get_creation_time (line 659) | int fsntfs_test_standard_information_values_get_creation_time(
  function fsntfs_test_standard_information_values_get_modification_time (line 732) | int fsntfs_test_standard_information_values_get_modification_time(
  function fsntfs_test_standard_information_values_get_access_time (line 805) | int fsntfs_test_standard_information_values_get_access_time(
  function fsntfs_test_standard_information_values_get_entry_modification_time (line 878) | int fsntfs_test_standard_information_values_get_entry_modification_time(
  function fsntfs_test_standard_information_values_get_file_attribute_flags (line 951) | int fsntfs_test_standard_information_values_get_file_attribute_flags(
  function fsntfs_test_standard_information_values_get_security_descriptor_identifier (line 1024) | int fsntfs_test_standard_information_values_get_security_descriptor_iden...
  function fsntfs_test_standard_information_values_get_update_sequence_number (line 1097) | int fsntfs_test_standard_information_values_get_update_sequence_number(
  function main (line 1176) | int main(

FILE: tests/fsntfs_test_support.c
  function fsntfs_test_get_version (line 54) | int fsntfs_test_get_version(
  function fsntfs_test_get_access_flags_read (line 81) | int fsntfs_test_get_access_flags_read(
  function fsntfs_test_get_codepage (line 102) | int fsntfs_test_get_codepage(
  function fsntfs_test_set_codepage (line 154) | int fsntfs_test_set_codepage(
  function fsntfs_test_check_volume_signature (line 205) | int fsntfs_test_check_volume_signature(
  function fsntfs_test_check_volume_signature_wide (line 329) | int fsntfs_test_check_volume_signature_wide(
  function fsntfs_test_check_volume_signature_file_io_handle (line 453) | int fsntfs_test_check_volume_signature_file_io_handle(
  function main (line 723) | int main(

FILE: tests/fsntfs_test_tools_bodyfile.c
  function fsntfs_test_tools_bodyfile_path_string_copy_from_file_entry_path (line 40) | int fsntfs_test_tools_bodyfile_path_string_copy_from_file_entry_path(
  function main (line 358) | int main(

FILE: tests/fsntfs_test_tools_digest_hash.c
  function fsntfs_test_tools_digest_hash_copy_to_string (line 43) | int fsntfs_test_tools_digest_hash_copy_to_string(
  function main (line 197) | int main(

FILE: tests/fsntfs_test_tools_info_handle.c
  function fsntfs_test_tools_info_handle_initialize (line 41) | int fsntfs_test_tools_info_handle_initialize(
  function fsntfs_test_tools_info_handle_free (line 241) | int fsntfs_test_tools_info_handle_free(
  function main (line 283) | int main(

FILE: tests/fsntfs_test_tools_mount_path_string.c
  function fsntfs_test_tools_mount_path_string_copy_hexadecimal_to_integer_32_bit (line 47) | int fsntfs_test_tools_mount_path_string_copy_hexadecimal_to_integer_32_bit(
  function fsntfs_test_tools_mount_path_string_copy_from_file_entry_path (line 184) | int fsntfs_test_tools_mount_path_string_copy_from_file_entry_path(
  function fsntfs_test_tools_mount_path_string_copy_to_file_entry_path (line 549) | int fsntfs_test_tools_mount_path_string_copy_to_file_entry_path(
  function main (line 904) | int main(

FILE: tests/fsntfs_test_tools_output.c
  function fsntfs_test_tools_output_initialize (line 45) | int fsntfs_test_tools_output_initialize(
  function main (line 82) | int main(

FILE: tests/fsntfs_test_tools_path_string.c
  function fsntfs_test_tools_path_string_copy_hexadecimal_to_integer_32_bit (line 40) | int fsntfs_test_tools_path_string_copy_hexadecimal_to_integer_32_bit(
  function fsntfs_test_tools_path_string_copy_from_file_entry_path (line 177) | int fsntfs_test_tools_path_string_copy_from_file_entry_path(
  function fsntfs_test_tools_path_string_copy_to_file_entry_path (line 489) | int fsntfs_test_tools_path_string_copy_to_file_entry_path(
  function main (line 673) | int main(

FILE: tests/fsntfs_test_tools_signal.c
  function fsntfs_test_tools_signal_handler_function (line 36) | void fsntfs_test_tools_signal_handler_function(
  function fsntfs_test_tools_signal_handler (line 47) | int fsntfs_test_tools_signal_handler(
  function fsntfs_test_tools_signal_attach (line 87) | int fsntfs_test_tools_signal_attach(
  function fsntfs_test_tools_signal_detach (line 140) | int fsntfs_test_tools_signal_detach(
  function main (line 178) | int main(

FILE: tests/fsntfs_test_txf_data_values.c
  function fsntfs_test_txf_data_values_initialize (line 54) | int fsntfs_test_txf_data_values_initialize(
  function fsntfs_test_txf_data_values_free (line 249) | int fsntfs_test_txf_data_values_free(
  function fsntfs_test_txf_data_values_read_data (line 287) | int fsntfs_test_txf_data_values_read_data(
  function fsntfs_test_txf_data_values_read_from_mft_attribute (line 443) | int fsntfs_test_txf_data_values_read_from_mft_attribute(
  function main (line 666) | int main(

FILE: tests/fsntfs_test_usn_change_journal.c
  function fsntfs_test_usn_change_journal_initialize (line 50) | int fsntfs_test_usn_change_journal_initialize(
  function fsntfs_test_usn_change_journal_free (line 335) | int fsntfs_test_usn_change_journal_free(
  function main (line 381) | int main(

FILE: tests/fsntfs_test_volume.c
  function fsntfs_test_volume_open_source (line 72) | int fsntfs_test_volume_open_source(
  function fsntfs_test_volume_close_source (line 147) | int fsntfs_test_volume_close_source(
  function fsntfs_test_volume_initialize (line 197) | int fsntfs_test_volume_initialize(
  function fsntfs_test_volume_free (line 398) | int fsntfs_test_volume_free(
  function fsntfs_test_volume_open (line 436) | int fsntfs_test_volume_open(
  function fsntfs_test_volume_open_wide (line 613) | int fsntfs_test_volume_open_wide(
  function fsntfs_test_volume_open_file_io_handle (line 790) | int fsntfs_test_volume_open_file_io_handle(
  function fsntfs_test_volume_close (line 1015) | int fsntfs_test_volume_close(
  function fsntfs_test_volume_open_close (line 1053) | int fsntfs_test_volume_open_close(
  function fsntfs_test_volume_signal_abort (line 1194) | int fsntfs_test_volume_signal_abort(
  function fsntfs_test_volume_get_bytes_per_sector (line 1247) | int fsntfs_test_volume_get_bytes_per_sector(
  function fsntfs_test_volume_get_cluster_block_size (line 1320) | int fsntfs_test_volume_get_cluster_block_size(
  function fsntfs_test_volume_get_mft_entry_size (line 1393) | int fsntfs_test_volume_get_mft_entry_size(
  function fsntfs_test_volume_get_index_entry_size (line 1466) | int fsntfs_test_volume_get_index_entry_size(
  function fsntfs_test_volume_get_utf8_name_size (line 1539) | int fsntfs_test_volume_get_utf8_name_size(
  function fsntfs_test_volume_get_utf8_name (line 1612) | int fsntfs_test_volume_get_utf8_name(
  function fsntfs_test_volume_get_utf16_name_size (line 1725) | int fsntfs_test_volume_get_utf16_name_size(
  function fsntfs_test_volume_get_utf16_name (line 1798) | int fsntfs_test_volume_get_utf16_name(
  function fsntfs_test_volume_get_serial_number (line 1911) | int fsntfs_test_volume_get_serial_number(
  function fsntfs_test_volume_get_number_of_file_entries (line 1984) | int fsntfs_test_volume_get_number_of_file_entries(
  function fsntfs_test_volume_get_file_entry_by_index (line 2057) | int fsntfs_test_volume_get_file_entry_by_index(
  function fsntfs_test_internal_volume_get_mft_and_directory_entry_by_utf8_path (line 2214) | int fsntfs_test_internal_volume_get_mft_and_directory_entry_by_utf8_path(
  function fsntfs_test_volume_get_file_entry_by_utf8_path (line 2415) | int fsntfs_test_volume_get_file_entry_by_utf8_path(
  function fsntfs_test_internal_volume_get_mft_and_directory_entry_by_utf16_path (line 2582) | int fsntfs_test_internal_volume_get_mft_and_directory_entry_by_utf16_path(
  function fsntfs_test_volume_get_file_entry_by_utf16_path (line 2783) | int fsntfs_test_volume_get_file_entry_by_utf16_path(
  function fsntfs_test_volume_get_root_directory (line 2944) | int fsntfs_test_volume_get_root_directory(
  function fsntfs_test_volume_get_usn_change_journal (line 3052) | int fsntfs_test_volume_get_usn_change_journal(
  function main (line 3167) | int main(

FILE: tests/fsntfs_test_volume_header.c
  function fsntfs_test_volume_header_initialize (line 80) | int fsntfs_test_volume_header_initialize(
  function fsntfs_test_volume_header_free (line 275) | int fsntfs_test_volume_header_free(
  function fsntfs_test_volume_header_read_data (line 313) | int fsntfs_test_volume_header_read_data(
  function fsntfs_test_volume_header_read_file_io_handle (line 745) | int fsntfs_test_volume_header_read_file_io_handle(
  function fsntfs_test_volume_header_get_bytes_per_sector (line 1038) | int fsntfs_test_volume_header_get_bytes_per_sector(
  function fsntfs_test_volume_header_get_cluster_block_size (line 1116) | int fsntfs_test_volume_header_get_cluster_block_size(
  function fsntfs_test_volume_header_get_mft_entry_size (line 1194) | int fsntfs_test_volume_header_get_mft_entry_size(
  function fsntfs_test_volume_header_get_index_entry_size (line 1272) | int fsntfs_test_volume_header_get_index_entry_size(
  function fsntfs_test_volume_header_get_volume_serial_number (line 1350) | int fsntfs_test_volume_header_get_volume_serial_number(
  function fsntfs_test_volume_header_get_mft_offset (line 1428) | int fsntfs_test_volume_header_get_mft_offset(
  function main (line 1512) | int main(

FILE: tests/fsntfs_test_volume_information_attribute.c
  function fsntfs_test_volume_information_attribute_get_version (line 50) | int fsntfs_test_volume_information_attribute_get_version(
  function fsntfs_test_volume_information_attribute_get_flags (line 195) | int fsntfs_test_volume_information_attribute_get_flags(
  function main (line 322) | int main(

FILE: tests/fsntfs_test_volume_information_values.c
  function fsntfs_test_volume_information_values_initialize (line 50) | int fsntfs_test_volume_information_values_initialize(
  function fsntfs_test_volume_information_values_free (line 245) | int fsntfs_test_volume_information_values_free(
  function fsntfs_test_volume_information_values_read_data (line 283) | int fsntfs_test_volume_information_values_read_data(
  function fsntfs_test_volume_information_values_read_from_mft_attribute (line 439) | int fsntfs_test_volume_information_values_read_from_mft_attribute(
  function main (line 662) | int main(

FILE: tests/fsntfs_test_volume_name_attribute.c
  function fsntfs_test_volume_name_attribute_get_utf8_name_size (line 50) | int fsntfs_test_volume_name_attribute_get_utf8_name_size(
  function fsntfs_test_volume_name_attribute_get_utf8_name (line 152) | int fsntfs_test_volume_name_attribute_get_utf8_name(
  function fsntfs_test_volume_name_attribute_get_utf16_name_size (line 290) | int fsntfs_test_volume_name_attribute_get_utf16_name_size(
  function fsntfs_test_volume_name_attribute_get_utf16_name (line 392) | int fsntfs_test_volume_name_attribute_get_utf16_name(
  function main (line 536) | int main(

FILE: tests/fsntfs_test_volume_name_values.c
  function fsntfs_test_volume_name_values_initialize (line 51) | int fsntfs_test_volume_name_values_initialize(
  function fsntfs_test_volume_name_values_free (line 246) | int fsntfs_test_volume_name_values_free(
  function fsntfs_test_volume_name_values_read_data (line 284) | int fsntfs_test_volume_name_values_read_data(
  function fsntfs_test_volume_name_values_read_from_mft_attribute (line 564) | int fsntfs_test_volume_name_values_read_from_mft_attribute(
  function fsntfs_test_volume_name_values_get_utf8_name_size (line 781) | int fsntfs_test_volume_name_values_get_utf8_name_size(
  function fsntfs_test_volume_name_values_get_utf8_name (line 919) | int fsntfs_test_volume_name_values_get_utf8_name(
  function fsntfs_test_volume_name_values_get_utf16_name_size (line 1107) | int fsntfs_test_volume_name_values_get_utf16_name_size(
  function fsntfs_test_volume_name_values_get_utf16_name (line 1245) | int fsntfs_test_volume_name_values_get_utf16_name(
  function main (line 1439) | int main(

FILE: tests/pyfsntfs_test_attribute.py
  class DataRangeFileObject (line 30) | class DataRangeFileObject(object):
    method __init__ (line 33) | def __init__(self, path, range_offset, range_size):
    method __enter__ (line 52) | def __enter__(self):
    method __exit__ (line 56) | def __exit__(self, unused_type, unused_value, unused_traceback):
    method close (line 60) | def close(self):
    method get_offset (line 66) | def get_offset(self):
    method get_size (line 74) | def get_size(self):
    method read (line 82) | def read(self, size=None):
    method seek (line 125) | def seek(self, offset, whence=os.SEEK_SET):
  class AttributeTypeTests (line 153) | class AttributeTypeTests(unittest.TestCase):
    method test_get_attribute_type (line 156) | def test_get_attribute_type(self):
    method test_get_attribute_name (line 191) | def test_get_attribute_name(self):
    method test_get_data_size (line 226) | def test_get_data_size(self):
    method test_get_valid_data_size (line 261) | def test_get_valid_data_size(self):

FILE: tests/pyfsntfs_test_file_entry.py
  class DataRangeFileObject (line 31) | class DataRangeFileObject(object):
    method __init__ (line 34) | def __init__(self, path, range_offset, range_size):
    method __enter__ (line 53) | def __enter__(self):
    method __exit__ (line 57) | def __exit__(self, unused_type, unused_value, unused_traceback):
    method close (line 61) | def close(self):
    method get_offset (line 67) | def get_offset(self):
    method get_size (line 75) | def get_size(self):
    method read (line 83) | def read(self, size=None):
    method seek (line 126) | def seek(self, offset, whence=os.SEEK_SET):
  class FileEntryTypeTests (line 154) | class FileEntryTypeTests(unittest.TestCase):
    method test_get_size (line 157) | def test_get_size(self):
    method test_get_number_of_extents (line 186) | def test_get_number_of_extents(self):
    method test_get_extent (line 215) | def test_get_extent(self):
    method test_is_empty (line 245) | def test_is_empty(self):
    method test_is_allocated (line 272) | def test_is_allocated(self):
    method test_has_directory_entries_index (line 299) | def test_has_directory_entries_index(self):
    method test_has_default_data_stream (line 326) | def test_has_default_data_stream(self):
    method test_get_file_reference (line 353) | def test_get_file_reference(self):
    method test_get_base_record_file_reference (line 382) | def test_get_base_record_file_reference(self):
    method test_get_journal_sequence_number (line 414) | def test_get_journal_sequence_number(self):
    method test_get_creation_time (line 443) | def test_get_creation_time(self):
    method test_get_creation_time_as_integer (line 472) | def test_get_creation_time_as_integer(self):
    method test_get_modification_time (line 499) | def test_get_modification_time(self):
    method test_get_modification_time_as_integer (line 528) | def test_get_modification_time_as_integer(self):
    method test_get_access_time (line 555) | def test_get_access_time(self):
    method test_get_access_time_as_integer (line 584) | def test_get_access_time_as_integer(self):
    method test_get_entry_modification_time (line 611) | def test_get_entry_modification_time(self):
    method test_get_entry_modification_time_as_integer (line 640) | def test_get_entry_modification_time_as_integer(self):
    method test_get_name (line 667) | def test_get_name(self):
    method test_get_name_attribute_index (line 696) | def test_get_name_attribute_index(self):
    method test_get_file_attribute_flags (line 725) | def test_get_file_attribute_flags(self):
    method test_get_symbolic_link_target (line 756) | def test_get_symbolic_link_target(self):
    method test_get_security_descriptor_data (line 785) | def test_get_security_descriptor_data(self):
    method test_get_number_of_attributes (line 814) | def test_get_number_of_attributes(self):
    method test_get_attribute (line 843) | def test_get_attribute(self):
    method test_get_number_of_alternate_data_streams (line 873) | def test_get_number_of_alternate_data_streams(self):
    method test_get_number_of_sub_file_entries (line 906) | def test_get_number_of_sub_file_entries(self):

FILE: tests/pyfsntfs_test_support.py
  class SupportFunctionsTests (line 30) | class SupportFunctionsTests(unittest.TestCase):
    method test_get_version (line 33) | def test_get_version(self):

FILE: tests/pyfsntfs_test_volume.py
  class DataRangeFileObject (line 30) | class DataRangeFileObject(object):
    method __init__ (line 33) | def __init__(self, path, range_offset, range_size):
    method __enter__ (line 52) | def __enter__(self):
    method __exit__ (line 56) | def __exit__(self, unused_type, unused_value, unused_traceback):
    method close (line 60) | def close(self):
    method get_offset (line 66) | def get_offset(self):
    method get_size (line 74) | def get_size(self):
    method read (line 82) | def read(self, size=None):
    method seek (line 125) | def seek(self, offset, whence=os.SEEK_SET):
  class VolumeTypeTests (line 153) | class VolumeTypeTests(unittest.TestCase):
    method test_signal_abort (line 156) | def test_signal_abort(self):
    method test_open (line 162) | def test_open(self):
    method test_open_file_object (line 187) | def test_open_file_object(self):
    method test_close (line 216) | def test_close(self):
    method test_open_close (line 227) | def test_open_close(self):
    method test_get_bytes_per_sector (line 263) | def test_get_bytes_per_sector(self):
    method test_get_cluster_block_size (line 288) | def test_get_cluster_block_size(self):
    method test_get_mft_entry_size (line 313) | def test_get_mft_entry_size(self):
    method test_get_index_entry_size (line 338) | def test_get_index_entry_size(self):
    method test_get_name (line 363) | def test_get_name(self):
    method test_get_serial_number (line 388) | def test_get_serial_number(self):
    method test_get_number_of_file_entries (line 413) | def test_get_number_of_file_entries(self):
    method test_get_file_entry (line 438) | def test_get_file_entry(self):
    method test_get_file_entry_by_path (line 462) | def test_get_file_entry_by_path(self):
    method test_get_root_directory (line 483) | def test_get_root_directory(self):
    method test_get_usn_change_journal (line 506) | def test_get_usn_change_journal(self):

FILE: tests/runtests.py
  function ReadIgnoreList (line 18) | def ReadIgnoreList(test_profile):
Condensed preview — 602 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,390K chars).
[
  {
    "path": ".codecov.yml",
    "chars": 477,
    "preview": "coverage:\n  precision: 2\n  round: down\n  range: 70...100\n  status:\n    project: true\n    patch: true\n    changes: false\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 6886,
    "preview": "# Build from source.\nname: build\non: [push, pull_request]\npermissions: read-all\njobs:\n  build_ubuntu:\n    runs-on: ubunt"
  },
  {
    "path": ".github/workflows/build_freebsd.yml",
    "chars": 554,
    "preview": "# Build from source on FreeBSD.\nname: build_freebsd\non: [push]\npermissions: read-all\njobs:\n  build_freebsd:\n    runs-on:"
  },
  {
    "path": ".github/workflows/build_macos.yml",
    "chars": 1029,
    "preview": "# Build from source.\nname: build_macos\non: [push, pull_request]\npermissions: read-all\njobs:\n  build_macos:\n    runs-on: "
  },
  {
    "path": ".github/workflows/build_ossfuzz.yml",
    "chars": 1209,
    "preview": "# Build OSSFuzz fuzz targets from source.\nname: build_ossfuzz\non:\n  push:\n    branches: [main]\npermissions: read-all\njob"
  },
  {
    "path": ".github/workflows/build_shared.yml",
    "chars": 1073,
    "preview": "# Build from source with libyal dependencies as shared libraries.\nname: build_shared\non:\n  push:\n    branches: [main]\npe"
  },
  {
    "path": ".github/workflows/build_wheel.yml",
    "chars": 2720,
    "preview": "# Build Python wheels from source using cibuildwheel.\nname: build_wheels\non: [push, pull_request]\npermissions: read-all\n"
  },
  {
    "path": ".gitignore",
    "chars": 4731,
    "preview": "# Files to ignore by git\n#\n# Version: 20231119\n\n# Generic auto-generated build files\n*~\n*.a\n*.gcda\n*.gcno\n*.gcov\n*.la\n*."
  },
  {
    "path": "AUTHORS",
    "chars": 93,
    "preview": "Acknowledgements: libfsntfs\n\nCopyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n\n"
  },
  {
    "path": "COPYING",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "COPYING.LESSER",
    "chars": 7652,
    "preview": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007"
  },
  {
    "path": "ChangeLog",
    "chars": 12127,
    "preview": "TODO\n* pyfsntfs convert lookup path to support additional character range\n\n* libfsntfs and fsntfsmount how to support \\\\"
  },
  {
    "path": "Makefile.am",
    "chars": 2198,
    "preview": "ACLOCAL_AMFLAGS = -I m4\n\nSUBDIRS = \\\n\tinclude \\\n\tcommon \\\n\tlibcerror \\\n\tlibcthreads \\\n\tlibcdata \\\n\tlibclocale \\\n\tlibcnot"
  },
  {
    "path": "NEWS",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "README",
    "chars": 676,
    "preview": "libfsntfs is a library to access the New Technology File System (NTFS) format.\n\nProject information:\n\n* Status: experime"
  },
  {
    "path": "acinclude.m4",
    "chars": 1816,
    "preview": "dnl Checks for required headers and functions\ndnl\ndnl Version: 20230206\n\ndnl Function to detect if libfsntfs dependencie"
  },
  {
    "path": "appveyor.yml",
    "chars": 12930,
    "preview": "environment:\n  nuget_token:\n    secure: xFlOodfYttki8HxA1hdhVhQ2lkVbj1EA1FxP9T1il2MUsBfH1rPEbTZy+etaMTD8\n  matrix:\n  - T"
  },
  {
    "path": "autogen.ps1",
    "chars": 3128,
    "preview": "# Script to generate the necessary files for a msvscpp build\n#\n# Version: 20241014\n\n$WinFlex = \"..\\win_flex_bison\\win_fl"
  },
  {
    "path": "autogen.sh",
    "chars": 3265,
    "preview": "#!/bin/sh\n# Script to generate configure and Makefile using the autotools.\n#\n# Version: 20241013\n\nEXIT_SUCCESS=0;\nEXIT_F"
  },
  {
    "path": "build.ps1",
    "chars": 5531,
    "preview": "# Script that builds libfsntfs\n#\n# Version: 20251125\n\nParam (\n\t[string]$Configuration = ${Env:Configuration},\n\t[string]$"
  },
  {
    "path": "builddokan.ps1",
    "chars": 1189,
    "preview": "# Script that builds dokan\n#\n# Version: 20180322\n\nParam (\n\t[string]$Configuration = ${Env:Configuration},\n\t[string]$Plat"
  },
  {
    "path": "common/Makefile.am",
    "chars": 343,
    "preview": "AM_CPPFLAGS = \\\n\t-I../include -I$(top_srcdir)/include\n\nEXTRA_DIST = \\\n\tbyte_stream.h \\\n\tcommon.h \\\n\tconfig.h \\\n\tconfig_b"
  },
  {
    "path": "common/byte_stream.h",
    "chars": 10437,
    "preview": "/*\n * Byte stream functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "common/common.h",
    "chars": 1250,
    "preview": "/*\n * Common include file\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS fo"
  },
  {
    "path": "common/config_borlandc.h",
    "chars": 957,
    "preview": "/*\n * Configuration for the Borland/CodeGear C++ Builder compiler\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.m"
  },
  {
    "path": "common/config_msc.h",
    "chars": 1157,
    "preview": "/*\n * Configuration for the Microsoft Visual Studio C++ compiler\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.me"
  },
  {
    "path": "common/config_winapi.h",
    "chars": 2382,
    "preview": "/*\n * Configuration file for WINAPI\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to "
  },
  {
    "path": "common/file_stream.h",
    "chars": 3878,
    "preview": "/*\n * FILE stream functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "common/memory.h",
    "chars": 3259,
    "preview": "/*\n * Memory functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for a"
  },
  {
    "path": "common/narrow_string.h",
    "chars": 5419,
    "preview": "/*\n * Narrow character string functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer"
  },
  {
    "path": "common/system_string.h",
    "chars": 4611,
    "preview": "/*\n * System character string functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer"
  },
  {
    "path": "common/types.h.in",
    "chars": 7375,
    "preview": "/*\n * Type and type-support definitions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer"
  },
  {
    "path": "common/wide_string.h",
    "chars": 5064,
    "preview": "/*\n * Wide character string functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer t"
  },
  {
    "path": "configure.ac",
    "chars": 8588,
    "preview": "AC_PREREQ([2.71])\n\nAC_INIT(\n  [libfsntfs],\n  [20260208],\n  [joachim.metz@gmail.com])\n\nAC_CONFIG_SRCDIR(\n  [include/libfs"
  },
  {
    "path": "documentation/New Technologies File System (NTFS).asciidoc",
    "chars": 136961,
    "preview": "= New Technologies File System (NTFS)\nAnalysis of NTFS\n\n:toc:\n:toclevels: 4\n\n:numbered!:\n[abstract]\n== Summary\n\nNTFS is "
  },
  {
    "path": "dpkg/changelog.in",
    "chars": 122,
    "preview": "libfsntfs (@VERSION@-1) unstable; urgency=low\n\n  * Auto-generated\n\n -- Joachim Metz <joachim.metz@gmail.com>  @DPKG_DATE"
  },
  {
    "path": "dpkg/compat",
    "chars": 3,
    "preview": "10\n"
  },
  {
    "path": "dpkg/control",
    "chars": 2208,
    "preview": "Source: libfsntfs\nPriority: extra\nMaintainer: Joachim Metz <joachim.metz@gmail.com>\nBuild-Depends: debhelper (>= 9), dh-"
  },
  {
    "path": "dpkg/copyright",
    "chars": 1028,
    "preview": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: libfsntfs\nSource: https://githu"
  },
  {
    "path": "dpkg/libfsntfs-dev.install",
    "chars": 96,
    "preview": "usr/include/*\nusr/lib/*-*/lib*.a\nusr/lib/*-*/lib*.so\nusr/lib/*-*/pkgconfig/*\nusr/share/man/man3\n"
  },
  {
    "path": "dpkg/libfsntfs-python3.install",
    "chars": 18,
    "preview": "/usr/lib/python3*\n"
  },
  {
    "path": "dpkg/libfsntfs-tools.install",
    "chars": 27,
    "preview": "usr/bin\nusr/share/man/man1\n"
  },
  {
    "path": "dpkg/libfsntfs.install",
    "chars": 22,
    "preview": "usr/lib/*-*/lib*.so.*\n"
  },
  {
    "path": "dpkg/rules",
    "chars": 777,
    "preview": "#!/usr/bin/make -f\n# -*- makefile -*-\n\n# Uncomment for debhelper verbose output.\n# export DH_VERBOSE=1\n\nexport SKIP_PYTH"
  },
  {
    "path": "dpkg/source/format",
    "chars": 12,
    "preview": "3.0 (quilt)\n"
  },
  {
    "path": "fsntfstools/Makefile.am",
    "chars": 2821,
    "preview": "AM_CPPFLAGS = \\\n\t-I../include -I$(top_srcdir)/include \\\n\t-I../common -I$(top_srcdir)/common \\\n\t@LIBCERROR_CPPFLAGS@ \\\n\t@"
  },
  {
    "path": "fsntfstools/bodyfile.c",
    "chars": 8836,
    "preview": "/*\n * Bodyfile functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for"
  },
  {
    "path": "fsntfstools/bodyfile.h",
    "chars": 1283,
    "preview": "/*\n * Bodyfile functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for"
  },
  {
    "path": "fsntfstools/digest_hash.c",
    "chars": 3298,
    "preview": "/*\n * Crypographic digest hash\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHO"
  },
  {
    "path": "fsntfstools/digest_hash.h",
    "chars": 1245,
    "preview": "/*\n * Crypographic digest hash\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHO"
  },
  {
    "path": "fsntfstools/fsntfsinfo.c",
    "chars": 11739,
    "preview": "/*\n * Shows information obtained from a New Technology File System (NTFS) volume.\n *\n * Copyright (C) 2010-2026, Joachim"
  },
  {
    "path": "fsntfstools/fsntfsmount.c",
    "chars": 17065,
    "preview": "/*\n * Mounts a New Technology File System (NTFS) volume.\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail"
  },
  {
    "path": "fsntfstools/fsntfstools_getopt.c",
    "chars": 4539,
    "preview": "/*\n * GetOpt functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for a"
  },
  {
    "path": "fsntfstools/fsntfstools_getopt.h",
    "chars": 1818,
    "preview": "/*\n * GetOpt functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for a"
  },
  {
    "path": "fsntfstools/fsntfstools_i18n.h",
    "chars": 1216,
    "preview": "/*\n * Internationalization (i18n) functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * R"
  },
  {
    "path": "fsntfstools/fsntfstools_libbfio.h",
    "chars": 1751,
    "preview": "/*\n * The libbfio header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUT"
  },
  {
    "path": "fsntfstools/fsntfstools_libcerror.h",
    "chars": 1486,
    "preview": "/*\n * The libcerror header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to A"
  },
  {
    "path": "fsntfstools/fsntfstools_libclocale.h",
    "chars": 1507,
    "preview": "/*\n * The libclocale header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to "
  },
  {
    "path": "fsntfstools/fsntfstools_libcnotify.h",
    "chars": 1504,
    "preview": "/*\n * The libcnotify header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to "
  },
  {
    "path": "fsntfstools/fsntfstools_libcpath.h",
    "chars": 1412,
    "preview": "/*\n * The libcpath header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "fsntfstools/fsntfstools_libfcache.h",
    "chars": 1489,
    "preview": "/*\n * The libfcache header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to A"
  },
  {
    "path": "fsntfstools/fsntfstools_libfdata.h",
    "chars": 1593,
    "preview": "/*\n * The libfdata header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "fsntfstools/fsntfstools_libfdatetime.h",
    "chars": 1774,
    "preview": "/*\n * The libfdatetime header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer t"
  },
  {
    "path": "fsntfstools/fsntfstools_libfguid.h",
    "chars": 1446,
    "preview": "/*\n * The libfguid header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "fsntfstools/fsntfstools_libfsntfs.h",
    "chars": 989,
    "preview": "/*\n * The libfsntfs header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to A"
  },
  {
    "path": "fsntfstools/fsntfstools_libfusn.h",
    "chars": 1427,
    "preview": "/*\n * The libfusn header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUT"
  },
  {
    "path": "fsntfstools/fsntfstools_libfwnt.h",
    "chars": 1751,
    "preview": "/*\n * The libfwnt header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUT"
  },
  {
    "path": "fsntfstools/fsntfstools_libhmac.h",
    "chars": 1477,
    "preview": "/*\n * The libhmac header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUT"
  },
  {
    "path": "fsntfstools/fsntfstools_libuna.h",
    "chars": 1784,
    "preview": "/*\n * The libuna header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTH"
  },
  {
    "path": "fsntfstools/fsntfstools_output.c",
    "chars": 4584,
    "preview": "/*\n * Common output functions for the fsntfstools\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n "
  },
  {
    "path": "fsntfstools/fsntfstools_output.h",
    "chars": 1481,
    "preview": "/*\n * Common output functions for the fsntfstools\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n "
  },
  {
    "path": "fsntfstools/fsntfstools_signal.c",
    "chars": 5776,
    "preview": "/*\n * Signal handling functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTH"
  },
  {
    "path": "fsntfstools/fsntfstools_signal.h",
    "chars": 1773,
    "preview": "/*\n * Signal handling functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTH"
  },
  {
    "path": "fsntfstools/fsntfstools_unused.h",
    "chars": 1554,
    "preview": "/*\n * Definitions to silence compiler warnings about unused function attributes/parameters.\n *\n * Copyright (C) 2010-202"
  },
  {
    "path": "fsntfstools/info_handle.c",
    "chars": 221637,
    "preview": "/*\n * Info handle\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for acknow"
  },
  {
    "path": "fsntfstools/info_handle.h",
    "chars": 9334,
    "preview": "/*\n * Info handle\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for acknow"
  },
  {
    "path": "fsntfstools/mount_dokan.c",
    "chars": 37396,
    "preview": "/*\n * Mount tool dokan functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUT"
  },
  {
    "path": "fsntfstools/mount_dokan.h",
    "chars": 5824,
    "preview": "/*\n * Mount tool dokan functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUT"
  },
  {
    "path": "fsntfstools/mount_file_entry.c",
    "chars": 24694,
    "preview": "/*\n * Mount file entry\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for a"
  },
  {
    "path": "fsntfstools/mount_file_entry.h",
    "chars": 3829,
    "preview": "/*\n * Mount file entry\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for a"
  },
  {
    "path": "fsntfstools/mount_file_system.c",
    "chars": 13694,
    "preview": "/*\n * Mount file system\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for "
  },
  {
    "path": "fsntfstools/mount_file_system.h",
    "chars": 2561,
    "preview": "/*\n * Mount file system\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for "
  },
  {
    "path": "fsntfstools/mount_fuse.c",
    "chars": 29348,
    "preview": "/*\n * Mount tool fuse functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTH"
  },
  {
    "path": "fsntfstools/mount_fuse.h",
    "chars": 3679,
    "preview": "/*\n * Mount tool fuse functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTH"
  },
  {
    "path": "fsntfstools/mount_handle.c",
    "chars": 16556,
    "preview": "/*\n * Mount handle\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for ackno"
  },
  {
    "path": "fsntfstools/mount_handle.h",
    "chars": 2568,
    "preview": "/*\n * Mount handle\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for ackno"
  },
  {
    "path": "fsntfstools/mount_path_string.c",
    "chars": 22648,
    "preview": "/*\n * Mount path string functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "fsntfstools/mount_path_string.h",
    "chars": 1723,
    "preview": "/*\n * Mount path string functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "fsntfstools/path_string.c",
    "chars": 20256,
    "preview": "/*\n * Path string functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "fsntfstools/path_string.h",
    "chars": 1729,
    "preview": "/*\n * Path string functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "include/Makefile.am",
    "chars": 440,
    "preview": "include_HEADERS = \\\n\tlibfsntfs.h\n\npkginclude_HEADERS = \\\n\tlibfsntfs/codepage.h \\\n\tlibfsntfs/definitions.h \\\n\tlibfsntfs/e"
  },
  {
    "path": "include/libfsntfs/codepage.h",
    "chars": 5422,
    "preview": "/*\n * Codepage definitions for libfsntfs\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refe"
  },
  {
    "path": "include/libfsntfs/definitions.h.in",
    "chars": 4079,
    "preview": "/*\n * Definitions for libfsntfs\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTH"
  },
  {
    "path": "include/libfsntfs/error.h",
    "chars": 6826,
    "preview": "/*\n * The error code definitions for libfsntfs\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n "
  },
  {
    "path": "include/libfsntfs/extern.h",
    "chars": 1436,
    "preview": "/*\n * The extern definition\n *\n * This header should be included in header files that export or import\n * library functi"
  },
  {
    "path": "include/libfsntfs/features.h.in",
    "chars": 1563,
    "preview": "/*\n * Features of libfsntfs\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "include/libfsntfs/types.h.in",
    "chars": 5224,
    "preview": "/*\n * Type definitions for libfsntfs\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to"
  },
  {
    "path": "include/libfsntfs.h.in",
    "chars": 68057,
    "preview": "/*\n * Library to access the New Technology File System (NTFS) format\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachi"
  },
  {
    "path": "libfsntfs/Makefile.am",
    "chars": 6380,
    "preview": "AM_CPPFLAGS = \\\n\t-I../include -I$(top_srcdir)/include \\\n\t-I../common -I$(top_srcdir)/common \\\n\t@LIBCERROR_CPPFLAGS@ \\\n\t@"
  },
  {
    "path": "libfsntfs/fsntfs_file_name.h",
    "chars": 2318,
    "preview": "/*\n * The NTFS file name attribute ($FILE_NAME) definition\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gma"
  },
  {
    "path": "libfsntfs/fsntfs_index.h",
    "chars": 3149,
    "preview": "/*\n * The NTFS index definition\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTH"
  },
  {
    "path": "libfsntfs/fsntfs_logged_utility_stream.h",
    "chars": 1469,
    "preview": "/*\n * The NTFS logged utillity stream attribute ($LOGGED_UTILITY_STREAM) definition\n *\n * Copyright (C) 2010-2026, Joach"
  },
  {
    "path": "libfsntfs/fsntfs_mft_attribute.h",
    "chars": 3924,
    "preview": "/*\n * The NTFS Master File Table (MFT) attribute definition\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gm"
  },
  {
    "path": "libfsntfs/fsntfs_mft_attribute_list.h",
    "chars": 1793,
    "preview": "/*\n * The NTFS attribute list attribute ($ATTRIBUTE_LIST) definition\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachi"
  },
  {
    "path": "libfsntfs/fsntfs_mft_entry.h",
    "chars": 2427,
    "preview": "/*\n * The NTFS Master File Table (MFT) entry definition\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail."
  },
  {
    "path": "libfsntfs/fsntfs_object_identifier.h",
    "chars": 1736,
    "preview": "/*\n * The NTFS object identifier attribute ($OBJECT_ID) definition\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim."
  },
  {
    "path": "libfsntfs/fsntfs_reparse_point.h",
    "chars": 2486,
    "preview": "/*\n * The NTFS reparse point attribute ($REPARSE_POINT) definition\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim."
  },
  {
    "path": "libfsntfs/fsntfs_secure.h",
    "chars": 1909,
    "preview": "/*\n * The NTFS $Secure definitions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to A"
  },
  {
    "path": "libfsntfs/fsntfs_standard_information.h",
    "chars": 2503,
    "preview": "/*\n * The NTFS standard information attribute ($STANDARD_INFORMATION) definition\n *\n * Copyright (C) 2010-2026, Joachim "
  },
  {
    "path": "libfsntfs/fsntfs_txf_data.h",
    "chars": 1880,
    "preview": "/*\n * The Transactional NTFS (TxF) data ($TXF_DATA) logged utility stream\n * attribute ($LOGGED_UTILITY_STREAM) definiti"
  },
  {
    "path": "libfsntfs/fsntfs_volume_header.h",
    "chars": 3248,
    "preview": "/*\n * The NTFS volume header definition\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer"
  },
  {
    "path": "libfsntfs/fsntfs_volume_information.h",
    "chars": 1531,
    "preview": "/*\n * The NTFS volume information attribute ($VOLUME_INFORMATION) definition\n *\n * Copyright (C) 2010-2026, Joachim Metz"
  },
  {
    "path": "libfsntfs/libfsntfs.c",
    "chars": 1845,
    "preview": "/*\n * Library to access the New Technology File System (NTFS) format\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachi"
  },
  {
    "path": "libfsntfs/libfsntfs.rc.in",
    "chars": 1099,
    "preview": "#include <windows.h>\r\n\r\n#ifdef GCC_WINDRES\r\nVS_VERSION_INFO\t\t\t\tVERSIONINFO\r\n#else\r\nVS_VERSION_INFO\t\t\t\tVERSIONINFO\tMOVEAB"
  },
  {
    "path": "libfsntfs/libfsntfs_attribute.c",
    "chars": 39152,
    "preview": "/*\n * Attribute functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS fo"
  },
  {
    "path": "libfsntfs/libfsntfs_attribute.h",
    "chars": 4582,
    "preview": "/*\n * Attribute functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS fo"
  },
  {
    "path": "libfsntfs/libfsntfs_attribute_list_attribute.c",
    "chars": 7382,
    "preview": "/*\n * Attribute list attribute ($ATTRIBUTE_LIST) functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gma"
  },
  {
    "path": "libfsntfs/libfsntfs_attribute_list_attribute.h",
    "chars": 1645,
    "preview": "/*\n * Attribute list attribute ($ATTRIBUTE_LIST) functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gma"
  },
  {
    "path": "libfsntfs/libfsntfs_attribute_list_entry.c",
    "chars": 17815,
    "preview": "/*\n * Attribute list entry functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to"
  },
  {
    "path": "libfsntfs/libfsntfs_attribute_list_entry.h",
    "chars": 3290,
    "preview": "/*\n * Attribute list entry functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to"
  },
  {
    "path": "libfsntfs/libfsntfs_bitmap_values.c",
    "chars": 17579,
    "preview": "/*\n * Bitmap attribute ($BITMAP) functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Re"
  },
  {
    "path": "libfsntfs/libfsntfs_bitmap_values.h",
    "chars": 2228,
    "preview": "/*\n * Bitmap attribute ($BITMAP) values functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n "
  },
  {
    "path": "libfsntfs/libfsntfs_buffer_data_handle.c",
    "chars": 7850,
    "preview": "/*\n * The buffer data handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer "
  },
  {
    "path": "libfsntfs/libfsntfs_buffer_data_handle.h",
    "chars": 2343,
    "preview": "/*\n * The buffer data handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer "
  },
  {
    "path": "libfsntfs/libfsntfs_cluster_block.c",
    "chars": 6301,
    "preview": "/*\n * Cluster block functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHOR"
  },
  {
    "path": "libfsntfs/libfsntfs_cluster_block.h",
    "chars": 1892,
    "preview": "/*\n * Cluster block functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHOR"
  },
  {
    "path": "libfsntfs/libfsntfs_cluster_block_data.c",
    "chars": 4610,
    "preview": "/*\n * Cluster block data functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to A"
  },
  {
    "path": "libfsntfs/libfsntfs_cluster_block_data.h",
    "chars": 1846,
    "preview": "/*\n * Cluster block data functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to A"
  },
  {
    "path": "libfsntfs/libfsntfs_cluster_block_stream.c",
    "chars": 25555,
    "preview": "/*\n * Cluster block stream functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to"
  },
  {
    "path": "libfsntfs/libfsntfs_cluster_block_stream.h",
    "chars": 2540,
    "preview": "/*\n * Cluster block stream functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to"
  },
  {
    "path": "libfsntfs/libfsntfs_cluster_block_vector.c",
    "chars": 12727,
    "preview": "/*\n * Cluster block vector functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to"
  },
  {
    "path": "libfsntfs/libfsntfs_cluster_block_vector.h",
    "chars": 1877,
    "preview": "/*\n * Cluster block vector functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to"
  },
  {
    "path": "libfsntfs/libfsntfs_compressed_block.c",
    "chars": 4026,
    "preview": "/*\n * Compressed block functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUT"
  },
  {
    "path": "libfsntfs/libfsntfs_compressed_block.h",
    "chars": 1587,
    "preview": "/*\n * Compressed block functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUT"
  },
  {
    "path": "libfsntfs/libfsntfs_compressed_block_data_handle.c",
    "chars": 12076,
    "preview": "/*\n * The compressed block data handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *"
  },
  {
    "path": "libfsntfs/libfsntfs_compressed_block_data_handle.h",
    "chars": 2829,
    "preview": "/*\n * The compressed block data handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *"
  },
  {
    "path": "libfsntfs/libfsntfs_compressed_block_vector.c",
    "chars": 12385,
    "preview": "/*\n * Compressed block vector functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer"
  },
  {
    "path": "libfsntfs/libfsntfs_compressed_block_vector.h",
    "chars": 1984,
    "preview": "/*\n * Compressed block vector functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer"
  },
  {
    "path": "libfsntfs/libfsntfs_compressed_data_handle.c",
    "chars": 23871,
    "preview": "/*\n * The compressed data handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Re"
  },
  {
    "path": "libfsntfs/libfsntfs_compressed_data_handle.h",
    "chars": 3381,
    "preview": "/*\n * The compressed data handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Re"
  },
  {
    "path": "libfsntfs/libfsntfs_compression.c",
    "chars": 4088,
    "preview": "/*\n * Compression functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "libfsntfs/libfsntfs_compression.h",
    "chars": 1332,
    "preview": "/*\n * Compression functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "libfsntfs/libfsntfs_compression_unit_data_handle.c",
    "chars": 20903,
    "preview": "/*\n * The compression unit data handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *"
  },
  {
    "path": "libfsntfs/libfsntfs_compression_unit_data_handle.h",
    "chars": 2420,
    "preview": "/*\n * The compression unit data handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *"
  },
  {
    "path": "libfsntfs/libfsntfs_compression_unit_descriptor.c",
    "chars": 9103,
    "preview": "/*\n * Compression unit descriptor functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * R"
  },
  {
    "path": "libfsntfs/libfsntfs_compression_unit_descriptor.h",
    "chars": 2639,
    "preview": "/*\n * Compression unit descriptor functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * R"
  },
  {
    "path": "libfsntfs/libfsntfs_data_run.c",
    "chars": 9737,
    "preview": "/*\n * Data run functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for"
  },
  {
    "path": "libfsntfs/libfsntfs_data_run.h",
    "chars": 2038,
    "preview": "/*\n * Data run functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for"
  },
  {
    "path": "libfsntfs/libfsntfs_data_stream.c",
    "chars": 28629,
    "preview": "/*\n * Data stream functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "libfsntfs/libfsntfs_data_stream.h",
    "chars": 4404,
    "preview": "/*\n * Data stream functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "libfsntfs/libfsntfs_debug.c",
    "chars": 19319,
    "preview": "/*\n * Debug functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for ac"
  },
  {
    "path": "libfsntfs/libfsntfs_debug.h",
    "chars": 3099,
    "preview": "/*\n * Debug functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for ac"
  },
  {
    "path": "libfsntfs/libfsntfs_definitions.h.in",
    "chars": 7030,
    "preview": "/*\n * The internal definitions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHO"
  },
  {
    "path": "libfsntfs/libfsntfs_directory_entries_tree.c",
    "chars": 63746,
    "preview": "/*\n * Directory entries tree functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer "
  },
  {
    "path": "libfsntfs/libfsntfs_directory_entries_tree.h",
    "chars": 5329,
    "preview": "/*\n * Directory entries tree functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer "
  },
  {
    "path": "libfsntfs/libfsntfs_directory_entry.c",
    "chars": 20942,
    "preview": "/*\n * Directory entry functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTH"
  },
  {
    "path": "libfsntfs/libfsntfs_directory_entry.h",
    "chars": 4338,
    "preview": "/*\n * Directory entry functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTH"
  },
  {
    "path": "libfsntfs/libfsntfs_error.c",
    "chars": 2924,
    "preview": "/*\n * Error functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for ac"
  },
  {
    "path": "libfsntfs/libfsntfs_error.h",
    "chars": 1818,
    "preview": "/*\n * Error functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for ac"
  },
  {
    "path": "libfsntfs/libfsntfs_extent.c",
    "chars": 4131,
    "preview": "/*\n * Extent functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for a"
  },
  {
    "path": "libfsntfs/libfsntfs_extent.h",
    "chars": 1677,
    "preview": "/*\n * Extent functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for a"
  },
  {
    "path": "libfsntfs/libfsntfs_extern.h",
    "chars": 1402,
    "preview": "/*\n * The internal extern definition\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to"
  },
  {
    "path": "libfsntfs/libfsntfs_file_entry.c",
    "chars": 189326,
    "preview": "/*\n * File entry functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS f"
  },
  {
    "path": "libfsntfs/libfsntfs_file_entry.h",
    "chars": 16655,
    "preview": "/*\n * File entry functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS f"
  },
  {
    "path": "libfsntfs/libfsntfs_file_name_attribute.c",
    "chars": 20199,
    "preview": "/*\n * File name attribute ($FILE_NAME) functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *"
  },
  {
    "path": "libfsntfs/libfsntfs_file_name_attribute.h",
    "chars": 3207,
    "preview": "/*\n * File name attribute ($FILE_NAME) functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *"
  },
  {
    "path": "libfsntfs/libfsntfs_file_name_values.c",
    "chars": 30531,
    "preview": "/*\n * File name attribute ($FILE_NAME) values functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail."
  },
  {
    "path": "libfsntfs/libfsntfs_file_name_values.h",
    "chars": 4940,
    "preview": "/*\n * File name attribute ($FILE_NAME) values functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail."
  },
  {
    "path": "libfsntfs/libfsntfs_file_system.c",
    "chars": 48386,
    "preview": "/*\n * File system functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "libfsntfs/libfsntfs_file_system.h",
    "chars": 4008,
    "preview": "/*\n * File system functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "libfsntfs/libfsntfs_fixup_values.c",
    "chars": 5164,
    "preview": "/*\n * Fix-up values functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHOR"
  },
  {
    "path": "libfsntfs/libfsntfs_fixup_values.h",
    "chars": 1286,
    "preview": "/*\n * Fix-up values functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHOR"
  },
  {
    "path": "libfsntfs/libfsntfs_index.c",
    "chars": 29282,
    "preview": "/*\n * Index functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for ac"
  },
  {
    "path": "libfsntfs/libfsntfs_index.h",
    "chars": 3833,
    "preview": "/*\n * Index functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS for ac"
  },
  {
    "path": "libfsntfs/libfsntfs_index_entry.c",
    "chars": 12001,
    "preview": "/*\n * Index entry entry functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "libfsntfs/libfsntfs_index_entry.h",
    "chars": 1797,
    "preview": "/*\n * Index entry functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "libfsntfs/libfsntfs_index_entry_header.c",
    "chars": 8711,
    "preview": "/*\n * The NTFS index entry header functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * R"
  },
  {
    "path": "libfsntfs/libfsntfs_index_entry_header.h",
    "chars": 2253,
    "preview": "/*\n * The NTFS index entry header functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * R"
  },
  {
    "path": "libfsntfs/libfsntfs_index_entry_vector.c",
    "chars": 13040,
    "preview": "/*\n * The index entry vector functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer "
  },
  {
    "path": "libfsntfs/libfsntfs_index_entry_vector.h",
    "chars": 1892,
    "preview": "/*\n * The index entry vector functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer "
  },
  {
    "path": "libfsntfs/libfsntfs_index_node.c",
    "chars": 13362,
    "preview": "/*\n * Index node functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS f"
  },
  {
    "path": "libfsntfs/libfsntfs_index_node.h",
    "chars": 2448,
    "preview": "/*\n * Index node functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS f"
  },
  {
    "path": "libfsntfs/libfsntfs_index_node_header.c",
    "chars": 6767,
    "preview": "/*\n * Index node header functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "libfsntfs/libfsntfs_index_node_header.h",
    "chars": 1818,
    "preview": "/*\n * Index node header functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "libfsntfs/libfsntfs_index_root_header.c",
    "chars": 8562,
    "preview": "/*\n * The NTFS index root header functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Re"
  },
  {
    "path": "libfsntfs/libfsntfs_index_root_header.h",
    "chars": 2413,
    "preview": "/*\n * The NTFS index root header functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Re"
  },
  {
    "path": "libfsntfs/libfsntfs_index_value.c",
    "chars": 12901,
    "preview": "/*\n * Index value functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "libfsntfs/libfsntfs_index_value.h",
    "chars": 2144,
    "preview": "/*\n * Index value functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUTHORS "
  },
  {
    "path": "libfsntfs/libfsntfs_io_handle.c",
    "chars": 5429,
    "preview": "/*\n * Input/Output (IO) handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refe"
  },
  {
    "path": "libfsntfs/libfsntfs_io_handle.h",
    "chars": 2005,
    "preview": "/*\n * Input/Output (IO) handle functions\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refe"
  },
  {
    "path": "libfsntfs/libfsntfs_libbfio.h",
    "chars": 1706,
    "preview": "/*\n * The libbfio header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AUT"
  },
  {
    "path": "libfsntfs/libfsntfs_libcdata.h",
    "chars": 1551,
    "preview": "/*\n * The libcdata header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "libfsntfs/libfsntfs_libcerror.h",
    "chars": 1441,
    "preview": "/*\n * The libcerror header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to A"
  },
  {
    "path": "libfsntfs/libfsntfs_libclocale.h",
    "chars": 1462,
    "preview": "/*\n * The libclocale header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to "
  },
  {
    "path": "libfsntfs/libfsntfs_libcnotify.h",
    "chars": 1459,
    "preview": "/*\n * The libcnotify header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to "
  },
  {
    "path": "libfsntfs/libfsntfs_libcthreads.h",
    "chars": 1932,
    "preview": "/*\n * The libcthreads header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to"
  },
  {
    "path": "libfsntfs/libfsntfs_libfcache.h",
    "chars": 1444,
    "preview": "/*\n * The libfcache header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to A"
  },
  {
    "path": "libfsntfs/libfsntfs_libfdata.h",
    "chars": 1548,
    "preview": "/*\n * The libfdata header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  },
  {
    "path": "libfsntfs/libfsntfs_libfdatetime.h",
    "chars": 1729,
    "preview": "/*\n * The libfdatetime header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer t"
  },
  {
    "path": "libfsntfs/libfsntfs_libfguid.h",
    "chars": 1401,
    "preview": "/*\n * The libfguid header wrapper\n *\n * Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>\n *\n * Refer to AU"
  }
]

// ... and 402 more files (download for full content)

About this extraction

This page contains the full source code of the libyal/libfsntfs GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 602 files (6.4 MB), approximately 1.7M tokens, and a symbol index with 1767 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!