├── .codecov.yml ├── .github └── workflows │ ├── build.yml │ ├── build_freebsd.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 └── OLE Compound File format.asciidoc ├── dpkg ├── changelog.in ├── compat ├── control ├── copyright ├── libolecf-dev.install ├── libolecf-python3.install ├── libolecf-tools.install ├── libolecf.install ├── rules └── source │ └── format ├── dtfabric.yaml ├── include ├── Makefile.am ├── libolecf.h.in └── libolecf │ ├── codepage.h │ ├── definitions.h.in │ ├── error.h │ ├── extern.h │ ├── features.h.in │ ├── ole.h │ └── types.h.in ├── libolecf.ini ├── libolecf.pc.in ├── libolecf.spec.in ├── libolecf ├── Makefile.am ├── libolecf.c ├── libolecf.rc.in ├── libolecf_allocation_table.c ├── libolecf_allocation_table.h ├── libolecf_codepage.h ├── libolecf_compound_object_stream.c ├── libolecf_compound_object_stream.h ├── libolecf_debug.c ├── libolecf_debug.h ├── libolecf_definitions.h.in ├── libolecf_directory_entry.c ├── libolecf_directory_entry.h ├── libolecf_directory_list.c ├── libolecf_directory_list.h ├── libolecf_directory_tree.c ├── libolecf_directory_tree.h ├── libolecf_error.c ├── libolecf_error.h ├── libolecf_extern.h ├── libolecf_file.c ├── libolecf_file.h ├── libolecf_file_header.c ├── libolecf_file_header.h ├── libolecf_io_handle.c ├── libolecf_io_handle.h ├── libolecf_item.c ├── libolecf_item.h ├── libolecf_libbfio.h ├── libolecf_libcdata.h ├── libolecf_libcerror.h ├── libolecf_libclocale.h ├── libolecf_libcnotify.h ├── libolecf_libfdatetime.h ├── libolecf_libfguid.h ├── libolecf_libfole.h ├── libolecf_libfvalue.h ├── libolecf_libfwps.h ├── libolecf_libuna.h ├── libolecf_notify.c ├── libolecf_notify.h ├── libolecf_ole.h ├── libolecf_property_section.c ├── libolecf_property_section.h ├── libolecf_property_set.c ├── libolecf_property_set.h ├── libolecf_property_set_stream.c ├── libolecf_property_set_stream.h ├── libolecf_property_value.c ├── libolecf_property_value.h ├── libolecf_stream.c ├── libolecf_stream.h ├── libolecf_support.c ├── libolecf_support.h ├── libolecf_types.h ├── libolecf_unused.h ├── olecf_compound_object.h ├── olecf_directory.h ├── olecf_file_header.h └── olecf_property_set.h ├── m4 ├── common.m4 ├── libbfio.m4 ├── libcdata.m4 ├── libcerror.m4 ├── libcfile.m4 ├── libclocale.m4 ├── libcnotify.m4 ├── libcpath.m4 ├── libcsplit.m4 ├── libcthreads.m4 ├── libfdatetime.m4 ├── libfguid.m4 ├── libfole.m4 ├── libfuse.m4 ├── libfvalue.m4 ├── libfwps.m4 ├── libuna.m4 ├── pthread.m4 ├── python.m4 ├── tests.m4 └── types.m4 ├── manuals ├── Makefile.am ├── libolecf.3 ├── olecfexport.1 └── olecfinfo.1 ├── msvscpp ├── Makefile.am ├── 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 ├── libfdatetime │ └── libfdatetime.vcproj ├── libfguid │ └── libfguid.vcproj ├── libfole │ └── libfole.vcproj ├── libfvalue │ └── libfvalue.vcproj ├── libfwps │ └── libfwps.vcproj ├── libolecf.sln ├── libolecf │ └── libolecf.vcproj ├── libuna │ └── libuna.vcproj ├── olecf_test_allocation_table │ └── olecf_test_allocation_table.vcproj ├── olecf_test_directory_entry │ └── olecf_test_directory_entry.vcproj ├── olecf_test_error │ └── olecf_test_error.vcproj ├── olecf_test_file │ └── olecf_test_file.vcproj ├── olecf_test_file_header │ └── olecf_test_file_header.vcproj ├── olecf_test_io_handle │ └── olecf_test_io_handle.vcproj ├── olecf_test_item │ └── olecf_test_item.vcproj ├── olecf_test_notify │ └── olecf_test_notify.vcproj ├── olecf_test_property_section │ └── olecf_test_property_section.vcproj ├── olecf_test_property_set │ └── olecf_test_property_set.vcproj ├── olecf_test_property_value │ └── olecf_test_property_value.vcproj ├── olecf_test_support │ └── olecf_test_support.vcproj ├── olecf_test_tools_info_handle │ └── olecf_test_tools_info_handle.vcproj ├── olecf_test_tools_mount_path_string │ └── olecf_test_tools_mount_path_string.vcproj ├── olecf_test_tools_output │ └── olecf_test_tools_output.vcproj ├── olecf_test_tools_signal │ └── olecf_test_tools_signal.vcproj ├── olecfexport │ └── olecfexport.vcproj ├── olecfinfo │ └── olecfinfo.vcproj ├── olecfmount │ └── olecfmount.vcproj └── pyolecf │ └── pyolecf.vcproj ├── olecftools ├── Makefile.am ├── export_handle.c ├── export_handle.h ├── info_handle.c ├── info_handle.h ├── log_handle.c ├── log_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 ├── olecfexport.c ├── olecfinfo.c ├── olecfmount.c ├── olecftools_getopt.c ├── olecftools_getopt.h ├── olecftools_i18n.h ├── olecftools_libbfio.h ├── olecftools_libcerror.h ├── olecftools_libcfile.h ├── olecftools_libclocale.h ├── olecftools_libcnotify.h ├── olecftools_libcpath.h ├── olecftools_libfdatetime.h ├── olecftools_libfguid.h ├── olecftools_libfole.h ├── olecftools_libolecf.h ├── olecftools_libuna.h ├── olecftools_output.c ├── olecftools_output.h ├── olecftools_signal.c ├── olecftools_signal.h └── olecftools_unused.h ├── ossfuzz ├── Makefile.am ├── file_fuzzer.cc ├── item_fuzzer.cc ├── ossfuzz_libbfio.h └── ossfuzz_libolecf.h ├── po ├── ChangeLog ├── Makevars.in └── POTFILES.in ├── pyolecf ├── Makefile.am ├── pyolecf.c ├── pyolecf.h ├── pyolecf_codepage.c ├── pyolecf_codepage.h ├── pyolecf_datetime.c ├── pyolecf_datetime.h ├── pyolecf_error.c ├── pyolecf_error.h ├── pyolecf_file.c ├── pyolecf_file.h ├── pyolecf_file_object_io_handle.c ├── pyolecf_file_object_io_handle.h ├── pyolecf_guid.c ├── pyolecf_guid.h ├── pyolecf_integer.c ├── pyolecf_integer.h ├── pyolecf_item.c ├── pyolecf_item.h ├── pyolecf_item_types.c ├── pyolecf_item_types.h ├── pyolecf_items.c ├── pyolecf_items.h ├── pyolecf_libbfio.h ├── pyolecf_libcerror.h ├── pyolecf_libclocale.h ├── pyolecf_libfguid.h ├── pyolecf_libolecf.h ├── pyolecf_property_section.c ├── pyolecf_property_section.h ├── pyolecf_property_sections.c ├── pyolecf_property_sections.h ├── pyolecf_property_set.c ├── pyolecf_property_set.h ├── pyolecf_property_set_stream.c ├── pyolecf_property_set_stream.h ├── pyolecf_property_value.c ├── pyolecf_property_value.h ├── pyolecf_property_values.c ├── pyolecf_property_values.h ├── pyolecf_python.h ├── pyolecf_stream.c ├── pyolecf_stream.h ├── pyolecf_unused.h ├── pyolecf_value_types.c └── pyolecf_value_types.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 │ ├── file_header.1 │ ├── property_section_list_entry.1 │ └── property_set_header.1 ├── lsan.suppressions ├── olecf_test_allocation_table.c ├── olecf_test_directory_entry.c ├── olecf_test_error.c ├── olecf_test_file.c ├── olecf_test_file_header.c ├── olecf_test_functions.c ├── olecf_test_functions.h ├── olecf_test_getopt.c ├── olecf_test_getopt.h ├── olecf_test_io_handle.c ├── olecf_test_item.c ├── olecf_test_libbfio.h ├── olecf_test_libcdata.h ├── olecf_test_libcerror.h ├── olecf_test_libclocale.h ├── olecf_test_libcnotify.h ├── olecf_test_libcpath.h ├── olecf_test_libolecf.h ├── olecf_test_libuna.h ├── olecf_test_macros.h ├── olecf_test_memory.c ├── olecf_test_memory.h ├── olecf_test_notify.c ├── olecf_test_property_section.c ├── olecf_test_property_set.c ├── olecf_test_property_value.c ├── olecf_test_support.c ├── olecf_test_tools_info_handle.c ├── olecf_test_tools_mount_path_string.c ├── olecf_test_tools_output.c ├── olecf_test_tools_signal.c ├── olecf_test_unused.h ├── pkgbuild.sh ├── pyolecf_test_file.py ├── pyolecf_test_support.py ├── runtests.py ├── runtests.sh ├── syncsharedlibs.sh ├── test_library.ps1 ├── test_library.sh ├── test_manpage.sh ├── test_olecfexport.sh ├── test_olecfinfo.ps1 ├── test_olecfinfo.sh ├── test_python_module.sh ├── test_runner.sh ├── test_tools.ps1 └── test_tools.sh └── tox.ini /.codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | precision: 2 3 | round: down 4 | range: 70...100 5 | status: 6 | project: true 7 | patch: true 8 | changes: false 9 | ignore: 10 | - "libbfio/*" 11 | - "libcdata/*" 12 | - "libcerror/*" 13 | - "libcfile/*" 14 | - "libclocale/*" 15 | - "libcnotify/*" 16 | - "libcpath/*" 17 | - "libcsplit/*" 18 | - "libcthreads/*" 19 | - "libfdatetime/*" 20 | - "libfguid/*" 21 | - "libfole/*" 22 | - "libfvalue/*" 23 | - "libfwps/*" 24 | - "libuna/*" 25 | - "tests/*" 26 | -------------------------------------------------------------------------------- /.github/workflows/build_freebsd.yml: -------------------------------------------------------------------------------- 1 | # Build from source on FreeBSD. 2 | name: build_freebsd 3 | on: [push] 4 | permissions: read-all 5 | jobs: 6 | build_freebsd: 7 | runs-on: ubuntu-22.04 8 | steps: 9 | - uses: actions/checkout@v4 10 | - name: Building from source 11 | id: build_freebsd 12 | uses: vmactions/freebsd-vm@v1 13 | with: 14 | usesh: true 15 | mem: 4096 16 | # Note that the test scripts require bash 17 | prepare: | 18 | pkg install -y autoconf automake bash fusefs-libs gettext git libtool pkgconf 19 | run: | 20 | tests/build.sh 21 | tests/runtests.sh 22 | -------------------------------------------------------------------------------- /.github/workflows/build_ossfuzz.yml: -------------------------------------------------------------------------------- 1 | # Build OSSFuzz fuzz targets from source. 2 | name: build_ossfuzz 3 | on: 4 | push: 5 | branches: [main] 6 | permissions: read-all 7 | jobs: 8 | build_ossfuzz: 9 | runs-on: ubuntu-22.04 10 | strategy: 11 | matrix: 12 | include: 13 | - architecture: 'x64' 14 | compiler: 'gcc' 15 | configure_options: '' 16 | steps: 17 | - name: Install build dependencies 18 | run: | 19 | sudo apt-get -y install git 20 | - uses: actions/checkout@v4 21 | with: 22 | repository: google/oss-fuzz 23 | path: oss-fuzz 24 | - name: Build OSSFuzz fuzz targets 25 | working-directory: oss-fuzz 26 | run: | 27 | mkdir -p projects/libolecf 28 | cp projects/libyal/build.sh projects/libolecf/ 29 | cp projects/libyal/project.yaml projects/libolecf/ 30 | head -n 20 projects/libyal/Dockerfile > projects/libolecf/Dockerfile 31 | echo "RUN git clone --depth 1 https://github.com/libyal/libolecf.git libolecf" >> projects/libolecf/Dockerfile 32 | tail -n 3 projects/libyal/Dockerfile >> projects/libolecf/Dockerfile 33 | python3 infra/helper.py build_image --pull libolecf 34 | python3 infra/helper.py build_fuzzers --sanitizer address libolecf 35 | python3 infra/helper.py check_build libolecf 36 | -------------------------------------------------------------------------------- /.github/workflows/build_shared.yml: -------------------------------------------------------------------------------- 1 | # Build from source with libyal dependencies as shared libraries. 2 | name: build_shared 3 | on: 4 | push: 5 | branches: [main] 6 | permissions: read-all 7 | jobs: 8 | build_shared_ubuntu: 9 | runs-on: ubuntu-22.04 10 | strategy: 11 | matrix: 12 | include: 13 | - architecture: 'x64' 14 | compiler: 'gcc' 15 | configure_options: '--enable-wide-character-type' 16 | steps: 17 | - uses: actions/checkout@v4 18 | - name: Install build dependencies 19 | run: | 20 | sudo apt-get -y install autoconf automake autopoint build-essential git libfuse3-dev libtool pkg-config 21 | - name: Download test data 22 | run: | 23 | if test -x "synctestdata.sh"; then ./synctestdata.sh; fi 24 | - name: Prepare shared libraries 25 | run: | 26 | tests/syncsharedlibs.sh --use-head 27 | - name: Building from source 28 | env: 29 | CC: ${{ matrix.compiler }} 30 | run: | 31 | tests/build.sh ${{ matrix.configure_options }} 32 | - name: Run tests 33 | run: | 34 | tests/runtests.sh 35 | -------------------------------------------------------------------------------- /.github/workflows/build_wheel.yml: -------------------------------------------------------------------------------- 1 | # Build wheel from source using tox. 2 | name: build_wheel 3 | on: [push, pull_request] 4 | permissions: read-all 5 | jobs: 6 | build_wheel: 7 | runs-on: ubuntu-22.04 8 | strategy: 9 | matrix: 10 | include: 11 | - python-version: '3.7' 12 | toxenv: 'py37' 13 | - python-version: '3.8' 14 | toxenv: 'py38' 15 | - python-version: '3.9' 16 | toxenv: 'py39' 17 | - python-version: '3.10' 18 | toxenv: 'py310' 19 | - python-version: '3.11' 20 | toxenv: 'py311' 21 | - python-version: '3.12' 22 | toxenv: 'py312' 23 | steps: 24 | - uses: actions/checkout@v4 25 | - name: Install build dependencies 26 | run: | 27 | sudo add-apt-repository universe && 28 | sudo add-apt-repository -y ppa:deadsnakes/ppa && 29 | sudo apt-get update && 30 | sudo apt-get install -y autoconf automake autopoint build-essential git libtool pkg-config python${{ matrix.python-version }} python${{ matrix.python-version }}-dev python${{ matrix.python-version }}-venv python3-distutils python3-pip python3-setuptools 31 | - name: Install tox 32 | run: | 33 | python3 -m pip install tox 34 | - name: Download test data 35 | run: | 36 | if test -x "synctestdata.sh"; then ./synctestdata.sh; fi 37 | - name: Prepare build 38 | run: | 39 | ./synclibs.sh --use-head && ./autogen.sh && ./configure && make sources >/dev/null 40 | - name: Build Python wheel 41 | run: | 42 | tox -e${{ matrix.toxenv }} 43 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Acknowledgements: libolecf 2 | 3 | Copyright (C) 2008-2024, Joachim Metz 4 | 5 | -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | ACLOCAL_AMFLAGS = -I m4 2 | 3 | SUBDIRS = \ 4 | include \ 5 | common \ 6 | libcerror \ 7 | libcthreads \ 8 | libcdata \ 9 | libclocale \ 10 | libcnotify \ 11 | libcsplit \ 12 | libuna \ 13 | libcfile \ 14 | libcpath \ 15 | libbfio \ 16 | libfdatetime \ 17 | libfguid \ 18 | libfole \ 19 | libfvalue \ 20 | libfwps \ 21 | libolecf \ 22 | olecftools \ 23 | pyolecf \ 24 | po \ 25 | manuals \ 26 | tests \ 27 | ossfuzz \ 28 | msvscpp 29 | 30 | DPKG_FILES = \ 31 | dpkg/changelog \ 32 | dpkg/changelog.in \ 33 | dpkg/compat \ 34 | dpkg/control \ 35 | dpkg/copyright \ 36 | dpkg/rules \ 37 | dpkg/libolecf.install \ 38 | dpkg/libolecf-dev.install \ 39 | dpkg/libolecf-python3.install \ 40 | dpkg/libolecf-tools.install \ 41 | dpkg/source/format 42 | 43 | GETTEXT_FILES = \ 44 | config.rpath \ 45 | po/Makevars.in 46 | 47 | PKGCONFIG_FILES = \ 48 | libolecf.pc.in 49 | 50 | SETUP_PY_FILES = \ 51 | pyproject.toml \ 52 | setup.cfg \ 53 | setup.cfg.in \ 54 | setup.py 55 | 56 | SPEC_FILES = \ 57 | libolecf.spec \ 58 | libolecf.spec.in 59 | 60 | EXTRA_DIST = \ 61 | $(DPKG_FILES) \ 62 | $(GETTEXT_FILES) \ 63 | $(PKGCONFIG_FILES) \ 64 | $(SETUP_PY_FILES) \ 65 | $(SPEC_FILES) 66 | 67 | DISTCLEANFILES = \ 68 | config.status \ 69 | config.cache \ 70 | config.log \ 71 | libolecf.pc \ 72 | libolecf.spec \ 73 | Makefile \ 74 | Makefile.in \ 75 | po/Makevars 76 | 77 | pkgconfigdir = $(libdir)/pkgconfig 78 | 79 | pkgconfig_DATA = \ 80 | libolecf.pc 81 | 82 | libtool: @LIBTOOL_DEPS@ 83 | cd $(srcdir) && $(SHELL) ./config.status --recheck 84 | 85 | lib: library 86 | 87 | library: 88 | (cd $(srcdir)/common && $(MAKE) $(AM_MAKEFLAGS)) 89 | (cd $(srcdir)/libcerror && $(MAKE) $(AM_MAKEFLAGS)) 90 | (cd $(srcdir)/libcthreads && $(MAKE) $(AM_MAKEFLAGS)) 91 | (cd $(srcdir)/libcdata && $(MAKE) $(AM_MAKEFLAGS)) 92 | (cd $(srcdir)/libclocale && $(MAKE) $(AM_MAKEFLAGS)) 93 | (cd $(srcdir)/libcnotify && $(MAKE) $(AM_MAKEFLAGS)) 94 | (cd $(srcdir)/libcsplit && $(MAKE) $(AM_MAKEFLAGS)) 95 | (cd $(srcdir)/libuna && $(MAKE) $(AM_MAKEFLAGS)) 96 | (cd $(srcdir)/libcfile && $(MAKE) $(AM_MAKEFLAGS)) 97 | (cd $(srcdir)/libcpath && $(MAKE) $(AM_MAKEFLAGS)) 98 | (cd $(srcdir)/libbfio && $(MAKE) $(AM_MAKEFLAGS)) 99 | (cd $(srcdir)/libfdatetime && $(MAKE) $(AM_MAKEFLAGS)) 100 | (cd $(srcdir)/libfguid && $(MAKE) $(AM_MAKEFLAGS)) 101 | (cd $(srcdir)/libfole && $(MAKE) $(AM_MAKEFLAGS)) 102 | (cd $(srcdir)/libfvalue && $(MAKE) $(AM_MAKEFLAGS)) 103 | (cd $(srcdir)/libfwps && $(MAKE) $(AM_MAKEFLAGS)) 104 | (cd $(srcdir)/libolecf && $(MAKE) $(AM_MAKEFLAGS)) 105 | (cd $(srcdir)/po && $(MAKE) $(AM_MAKEFLAGS)) 106 | 107 | -------------------------------------------------------------------------------- /NEWS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libyal/libolecf/493b01945f7d2936bb722c8eb6586d6b9d2bd67f/NEWS -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | libolecf is a library to access the OLE 2 Compound File (OLECF) format. 2 | 3 | The OLE 2 Compound File format is used to store certain versions of Microsoft Office files, thumbs.db and other file formats. 4 | 5 | Project information: 6 | 7 | * Status: alpha 8 | * Licence: LGPLv3+ 9 | 10 | Planned: 11 | 12 | * Multi-threading support 13 | 14 | For more information see: 15 | 16 | * Project documentation: https://github.com/libyal/libolecf/wiki/Home 17 | * How to build from source: https://github.com/libyal/libolecf/wiki/Building 18 | 19 | -------------------------------------------------------------------------------- /acinclude.m4: -------------------------------------------------------------------------------- 1 | dnl Checks for required headers and functions 2 | dnl 3 | dnl Version: 20200713 4 | 5 | dnl Function to detect if libolecf dependencies are available 6 | AC_DEFUN([AX_LIBOLECF_CHECK_LOCAL], 7 | [dnl Check for internationalization functions in libolecf/libolecf_i18n.c 8 | AC_CHECK_FUNCS([bindtextdomain]) 9 | ]) 10 | 11 | dnl Function to detect if olecftools dependencies are available 12 | AC_DEFUN([AX_OLECFTOOLS_CHECK_LOCAL], 13 | [AC_CHECK_HEADERS([signal.h sys/signal.h unistd.h]) 14 | 15 | AC_CHECK_FUNCS([close getopt setvbuf]) 16 | 17 | AS_IF( 18 | [test "x$ac_cv_func_close" != xyes], 19 | [AC_MSG_FAILURE( 20 | [Missing function: close], 21 | [1]) 22 | ]) 23 | 24 | dnl Headers included in olecftools/log_handle.c 25 | AC_CHECK_HEADERS([stdarg.h varargs.h]) 26 | 27 | AS_IF( 28 | [test "x$ac_cv_header_stdarg_h" != xyes && test "x$ac_cv_header_varargs_h" != xyes], 29 | [AC_MSG_FAILURE( 30 | [Missing headers: stdarg.h and varargs.h], 31 | [1]) 32 | ]) 33 | 34 | dnl Headers included in olecftools/olecfmount.c 35 | AC_CHECK_HEADERS([errno.h sys/time.h]) 36 | 37 | dnl Functions included in olecftools/mount_file_system.c and olecftools/mount_file_entry.c 38 | AS_IF( 39 | [test "x$ac_cv_enable_winapi" = xno], 40 | [AC_CHECK_FUNCS([clock_gettime getegid geteuid time]) 41 | ]) 42 | ]) 43 | 44 | dnl Function to check if DLL support is needed 45 | AC_DEFUN([AX_LIBOLECF_CHECK_DLL_SUPPORT], 46 | [AS_IF( 47 | [test "x$enable_shared" = xyes && test "x$ac_cv_enable_static_executables" = xno], 48 | [AS_CASE( 49 | [$host], 50 | [*cygwin* | *mingw* | *msys*], 51 | [AC_DEFINE( 52 | [HAVE_DLLMAIN], 53 | [1], 54 | [Define to 1 to enable the DllMain function.]) 55 | AC_SUBST( 56 | [HAVE_DLLMAIN], 57 | [1]) 58 | 59 | AC_SUBST( 60 | [LIBOLECF_DLL_EXPORT], 61 | ["-DLIBOLECF_DLL_EXPORT"]) 62 | 63 | AC_SUBST( 64 | [LIBOLECF_DLL_IMPORT], 65 | ["-DLIBOLECF_DLL_IMPORT"]) 66 | ]) 67 | ]) 68 | ]) 69 | 70 | -------------------------------------------------------------------------------- /builddokan.ps1: -------------------------------------------------------------------------------- 1 | # Script that builds dokan 2 | # 3 | # Version: 20180322 4 | 5 | Param ( 6 | [string]$Configuration = ${Env:Configuration}, 7 | [string]$Platform = ${Env:Platform}, 8 | [switch]$UseLegacyVersion = $false 9 | ) 10 | 11 | If (-not ${Configuration}) 12 | { 13 | $Configuration = "Release" 14 | } 15 | If (-not ${Platform}) 16 | { 17 | $Platform = "Win32" 18 | } 19 | 20 | If (${Env:AppVeyor} -eq "True") 21 | { 22 | $MSBuild = "MSBuild.exe" 23 | } 24 | ElseIf (${Env:VisualStudioVersion} -eq "15.0") 25 | { 26 | $MSBuild = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\amd64\MSBuild.exe" 27 | } 28 | ElseIf (${Env:VisualStudioVersion} -eq "9.0") 29 | { 30 | $MSBuild = "C:\\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe" 31 | } 32 | Else 33 | { 34 | $MSBuild = "C:\\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" 35 | } 36 | $MSBuildOptions = "/verbosity:quiet /target:Build /property:Configuration=${Configuration},Platform=${Platform}" 37 | 38 | If ($UseLegacyVersion) 39 | { 40 | $DokanPath = "../dokan" 41 | $ProjectFile = "msvscpp\dokan.sln" 42 | } 43 | Else 44 | { 45 | $DokanPath = "../dokany" 46 | $ProjectFile = "dokan\dokan.vcxproj" 47 | } 48 | 49 | Push-Location ${DokanPath} 50 | 51 | Try 52 | { 53 | Write-Host "${MSBuild} ${MSBuildOptions} ${ProjectFile}" 54 | 55 | Invoke-Expression -Command "& '${MSBuild}' ${MSBuildOptions} ${ProjectFile}" 56 | } 57 | Finally 58 | { 59 | Pop-Location 60 | } 61 | 62 | -------------------------------------------------------------------------------- /common/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CPPFLAGS = \ 2 | -I../include -I$(top_srcdir)/include 3 | 4 | EXTRA_DIST = \ 5 | byte_stream.h \ 6 | common.h \ 7 | config.h \ 8 | config_borlandc.h \ 9 | config_msc.h \ 10 | config_winapi.h \ 11 | file_stream.h \ 12 | memory.h \ 13 | narrow_string.h \ 14 | system_string.h \ 15 | types.h \ 16 | types.h.in \ 17 | wide_string.h 18 | 19 | DISTCLEANFILES = \ 20 | config.h \ 21 | types.h \ 22 | Makefile \ 23 | Makefile.in 24 | 25 | -------------------------------------------------------------------------------- /common/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Common include file 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _COMMON_H ) 23 | #define _COMMON_H 24 | 25 | #if defined( HAVE_CONFIG_H ) 26 | #include "config.h" 27 | #endif 28 | 29 | /* Include the Borland/CodeGear C++ Builder compiler specific configuration 30 | */ 31 | #if defined( __BORLANDC__ ) 32 | #include "config_borlandc.h" 33 | 34 | /* Include the Microsoft Visual Studio C++ compiler specific configuration 35 | */ 36 | #elif defined( _MSC_VER ) 37 | #include "config_msc.h" 38 | #endif 39 | 40 | #include "config_winapi.h" 41 | 42 | #endif /* !defined( _COMMON_H ) */ 43 | 44 | -------------------------------------------------------------------------------- /common/config_borlandc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Configuration for the Borland/CodeGear C++ Builder compiler 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _CONFIG_BORLANDC_H ) 23 | #define _CONFIG_BORLANDC_H 24 | 25 | #endif /* !defined( _CONFIG_BORLANDC_H ) */ 26 | 27 | -------------------------------------------------------------------------------- /common/config_msc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Configuration for the Microsoft Visual Studio C++ compiler 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _CONFIG_MSC_H ) 23 | #define _CONFIG_MSC_H 24 | 25 | /* Disable warning C4127: conditional expression is constant 26 | */ 27 | #pragma warning( disable : 4127 ) 28 | 29 | /* Disable warning C4201: nonstandard extension used : nameless struct/union 30 | */ 31 | #pragma warning( disable : 4201 ) 32 | 33 | #endif /* !defined( _CONFIG_MSC_H ) */ 34 | 35 | -------------------------------------------------------------------------------- /common/config_winapi.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Configuration file for WINAPI 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _CONFIG_WINAPI_H ) 23 | #define _CONFIG_WINAPI_H 24 | 25 | /* Define the earliest supported WINAPI version 26 | #define WINVER 0x0501 27 | */ 28 | 29 | /* If necessary make sure WINAPI is defined 30 | */ 31 | #if defined( HAVE_WINDOWS_H ) || defined( __BORLANDC__ ) || defined( _MSC_VER ) 32 | #include 33 | #endif 34 | 35 | #if defined( WINAPI ) 36 | 37 | /* Define to the address where bug reports for this package should be sent. 38 | */ 39 | #define PACKAGE_BUGREPORT "joachim.metz@gmail.com" 40 | 41 | /* Define the size of the integer for WINAPI 42 | */ 43 | #if !defined( SIZEOF_INT ) 44 | #define SIZEOF_INT 4 45 | #endif 46 | 47 | /* Define the size of size_t for WINAPI 48 | * Do not define when pyconfig.h has been included via python.h 49 | */ 50 | #if !defined( HAVE_PYCONFIG_H ) 51 | 52 | #if !defined( SIZEOF_SIZE_T ) 53 | #if __WORDSIZE == 64 54 | #define SIZEOF_SIZE_T 8 55 | #else 56 | #define SIZEOF_SIZE_T 4 57 | #endif 58 | #endif 59 | 60 | #endif /* !defined( HAVE_PYCONFIG_H ) */ 61 | 62 | /* Define the size of the wide character for WINAPI 63 | */ 64 | #if !defined( SIZEOF_WCHAR_T ) 65 | #define SIZEOF_WCHAR_T 2 66 | #endif 67 | 68 | /* Enable the DllMain function 69 | */ 70 | #define HAVE_DLLMAIN 1 71 | 72 | /* Enable verbose output 73 | #define HAVE_VERBOSE_OUTPUT 1 74 | */ 75 | 76 | /* Enable debug output 77 | #define HAVE_DEBUG_OUTPUT 1 78 | */ 79 | 80 | /* Enable both the narrow and wide character functions 81 | */ 82 | #if !defined( HAVE_WIDE_CHARACTER_TYPE ) 83 | #define HAVE_WIDE_CHARACTER_TYPE 1 84 | #endif 85 | 86 | /* If not controlled by config.h enable multi-thread support 87 | */ 88 | #if !defined( HAVE_CONFIG_H ) && !defined( HAVE_MULTI_THREAD_SUPPORT ) 89 | #define HAVE_MULTI_THREAD_SUPPORT 1 90 | #endif 91 | 92 | #endif /* defined( WINAPI ) */ 93 | 94 | #endif /* !defined( _CONFIG_WINAPI_H ) */ 95 | 96 | -------------------------------------------------------------------------------- /dpkg/changelog.in: -------------------------------------------------------------------------------- 1 | libolecf (@VERSION@-1) unstable; urgency=low 2 | 3 | * Auto-generated 4 | 5 | -- Joachim Metz @DPKG_DATE@ 6 | -------------------------------------------------------------------------------- /dpkg/compat: -------------------------------------------------------------------------------- 1 | 10 2 | -------------------------------------------------------------------------------- /dpkg/control: -------------------------------------------------------------------------------- 1 | Source: libolecf 2 | Priority: extra 3 | Maintainer: Joachim Metz 4 | Build-Depends: debhelper (>= 9), dh-autoreconf, dh-python, pkg-config, python3-dev, python3-setuptools, libfuse-dev 5 | Standards-Version: 4.1.4 6 | Section: libs 7 | Homepage: https://github.com/libyal/libolecf 8 | Vcs-Git: https://github.com/libyal/libolecf.git 9 | 10 | Package: libolecf 11 | Architecture: any 12 | Depends: ${shlibs:Depends}, ${misc:Depends} 13 | Conflicts: libolecf1 14 | Replaces: libolecf1 15 | Suggests: libolecf-dbg 16 | Description: Library to access the Object Linking and Embedding (OLE) Compound File (CF) format 17 | libolecf is a library to access the Object Linking and Embedding (OLE) Compound File (CF) format. 18 | 19 | Package: libolecf-dbg 20 | Architecture: any 21 | Section: debug 22 | Depends: libolecf (= ${binary:Version}), ${misc:Depends} 23 | Description: Debugging symbols for libolecf 24 | Debugging symbols for libolecf. 25 | 26 | Package: libolecf-dev 27 | Section: libdevel 28 | Architecture: any 29 | Depends: libolecf (= ${binary:Version}), ${misc:Depends} 30 | Description: Header files and libraries for developing applications for libolecf 31 | Header files and libraries for developing applications for libolecf. 32 | 33 | Package: libolecf-tools 34 | Section: utils 35 | Architecture: any 36 | Depends: libolecf (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} 37 | Conflicts: libolecf-utils 38 | Replaces: libolecf-utils 39 | Description: Several tools for reading Object Linking and Embedding (OLE) Compound Files (CF) 40 | Several tools for reading Object Linking and Embedding (OLE) Compound Files (CF). 41 | 42 | Package: libolecf-tools-dbg 43 | Section: debug 44 | Architecture: any 45 | Depends: libolecf-tools (= ${binary:Version}), ${misc:Depends} 46 | Description: Debugging symbols for libolecf-tools 47 | Debugging symbols for libolecf-tools. 48 | 49 | Package: libolecf-python3 50 | Section: python 51 | Architecture: any 52 | Depends: libolecf (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} 53 | Conflicts: python3-libolecf 54 | Replaces: python3-libolecf 55 | Suggests: libolecf-python3-dbg 56 | Description: Python 3 bindings for libolecf 57 | Python 3 bindings for libolecf. 58 | 59 | Package: libolecf-python3-dbg 60 | Section: debug 61 | Architecture: any 62 | Depends: libolecf-python3 (= ${binary:Version}), ${misc:Depends} 63 | Description: Debugging symbols for libolecf-python3 64 | Debugging symbols for libolecf-python3. 65 | 66 | -------------------------------------------------------------------------------- /dpkg/copyright: -------------------------------------------------------------------------------- 1 | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: libolecf 3 | Source: https://github.com/libyal/libolecf 4 | 5 | Files: * 6 | Copyright: 2008-2024, Joachim Metz 7 | License: LGPL-3.0+ 8 | 9 | License: LGPL-3.0+ 10 | This package is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Lesser General Public 12 | License as published by the Free Software Foundation; either 13 | version 3 of the License, or (at your option) any later version. 14 | . 15 | This package is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 | Lesser General Public License for more details. 19 | . 20 | You should have received a copy of the GNU General Public License 21 | along with this program. If not, see . 22 | . 23 | On Debian systems, the complete text of the GNU Lesser General 24 | Public License can be found in "/usr/share/common-licenses/LGPL-3". 25 | 26 | -------------------------------------------------------------------------------- /dpkg/libolecf-dev.install: -------------------------------------------------------------------------------- 1 | usr/include/* 2 | usr/lib/*-*/lib*.a 3 | usr/lib/*-*/lib*.so 4 | usr/lib/*-*/pkgconfig/* 5 | usr/share/man/man3 6 | -------------------------------------------------------------------------------- /dpkg/libolecf-python3.install: -------------------------------------------------------------------------------- 1 | /usr/lib/python3* 2 | -------------------------------------------------------------------------------- /dpkg/libolecf-tools.install: -------------------------------------------------------------------------------- 1 | usr/bin 2 | usr/share/man/man1 3 | -------------------------------------------------------------------------------- /dpkg/libolecf.install: -------------------------------------------------------------------------------- 1 | usr/lib/*-*/lib*.so.* 2 | -------------------------------------------------------------------------------- /dpkg/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | # -*- makefile -*- 3 | 4 | # Uncomment for debhelper verbose output. 5 | # export DH_VERBOSE=1 6 | 7 | export SKIP_PYTHON_TESTS=1 8 | 9 | %: 10 | dh $@ --buildsystem=autoconf --with=autoreconf,python3 11 | 12 | .PHONY: override_dh_auto_configure 13 | override_dh_auto_configure: 14 | dh_auto_configure -- --enable-python CFLAGS="-g" 15 | 16 | .PHONY: override_dh_install 17 | override_dh_install: 18 | dh_install --fail-missing -X.la -X/pyolecf.a 19 | 20 | .PHONY: override_dh_missing 21 | override_dh_missing: 22 | dh_missing -X.la -X/pyolecf.a --fail-missing 23 | 24 | .PHONY: override_dh_strip 25 | override_dh_strip: 26 | ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS))) 27 | dh_strip -plibolecf --dbg-package=libolecf-dbg 28 | dh_strip -plibolecf-tools --dbg-package=libolecf-tools-dbg 29 | dh_strip -plibolecf-python3 --dbg-package=libolecf-python3-dbg 30 | endif 31 | 32 | -------------------------------------------------------------------------------- /dpkg/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (quilt) 2 | -------------------------------------------------------------------------------- /dtfabric.yaml: -------------------------------------------------------------------------------- 1 | name: olecf 2 | type: format 3 | description: Object Linking and Embedding (OLE) Compound File (CF) format 4 | urls: 5 | - 'https://github.com/libyal/libolecf/blob/main/documentation/OLE%20Compound%20File%20format.asciidoc' 6 | metadata: 7 | authors: ['Joachim Metz '] 8 | year: 2008 9 | attributes: 10 | byte_order: little-endian 11 | layout: 12 | - data_type: file_header 13 | --- 14 | name: byte 15 | type: integer 16 | attributes: 17 | format: unsigned 18 | size: 1 19 | units: bytes 20 | --- 21 | name: uint8 22 | type: integer 23 | attributes: 24 | format: unsigned 25 | size: 1 26 | units: bytes 27 | --- 28 | name: uint16 29 | type: integer 30 | attributes: 31 | format: unsigned 32 | size: 2 33 | units: bytes 34 | --- 35 | name: uint32 36 | type: integer 37 | attributes: 38 | format: unsigned 39 | size: 4 40 | units: bytes 41 | --- 42 | name: file_header 43 | type: structure 44 | attributes: 45 | byte_order: little-endian 46 | description: File header 47 | members: 48 | - name: signature 49 | type: stream 50 | element_data_type: byte 51 | elements_data_size: 8 52 | values: 53 | - "\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1" 54 | - "\x0e\x11\xfc\x0d\xd0\xcf\x11\x0e" 55 | - name: class_identifier 56 | data_type: uuid 57 | - name: minor_format_version 58 | data_type: uint16 59 | - name: major_format_version 60 | data_type: uint16 61 | - name: byte_order 62 | data_type: uint16 63 | - name: sector_size 64 | data_type: uint16 65 | - name: short_sector_size 66 | data_type: uint16 67 | - name: unknown1 68 | data_type: uint16 69 | - name: unknown2 70 | data_type: uint32 71 | - name: unknown3 72 | data_type: uint32 73 | - name: number_of_sat_sectors 74 | data_type: uint32 75 | - name: root_directory_sector_identifier 76 | data_type: uint32 77 | - name: transactioning_signature 78 | data_type: uint32 79 | - name: sector_stream_minimum_data_size 80 | data_type: uint32 81 | - name: ssat_sector_identifier 82 | data_type: uint32 83 | - name: number_of_ssat_sectors 84 | data_type: uint32 85 | - name: msat_sector_identifier 86 | data_type: uint32 87 | - name: number_of_msat_sectors 88 | data_type: uint32 89 | - name: msat 90 | type: sequence 91 | element_data_type: uint32 92 | number_of_elements: 109 93 | -------------------------------------------------------------------------------- /include/Makefile.am: -------------------------------------------------------------------------------- 1 | include_HEADERS = \ 2 | libolecf.h 3 | 4 | pkginclude_HEADERS = \ 5 | libolecf/codepage.h \ 6 | libolecf/definitions.h \ 7 | libolecf/error.h \ 8 | libolecf/extern.h \ 9 | libolecf/features.h \ 10 | libolecf/ole.h \ 11 | libolecf/types.h 12 | 13 | EXTRA_DIST = \ 14 | libolecf.h.in \ 15 | libolecf/definitions.h.in \ 16 | libolecf/features.h.in \ 17 | libolecf/types.h.in 18 | 19 | DISTCLEANFILES = \ 20 | libolecf.h \ 21 | libolecf/definitions.h \ 22 | libolecf/features.h \ 23 | libolecf/types.h \ 24 | Makefile \ 25 | Makefile.in 26 | 27 | -------------------------------------------------------------------------------- /include/libolecf/extern.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The extern definition 3 | * 4 | * This header should be included in header files that export or import 5 | * library functions 6 | * 7 | * Copyright (C) 2008-2024, Joachim Metz 8 | * 9 | * Refer to AUTHORS for acknowledgements. 10 | * 11 | * This program is free software: you can redistribute it and/or modify 12 | * it under the terms of the GNU Lesser General Public License as published by 13 | * the Free Software Foundation, either version 3 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU Lesser General Public License 22 | * along with this program. If not, see . 23 | */ 24 | 25 | #if !defined( _LIBOLECF_EXTERN_H ) 26 | #define _LIBOLECF_EXTERN_H 27 | 28 | /* To export functions from the libolecf DLL define LIBOLECF_DLL_EXPORT 29 | * To import functions from the libolecf DLL define LIBOLECF_DLL_IMPORT 30 | * Otherwise use default extern statement 31 | */ 32 | #if defined( LIBOLECF_DLL_EXPORT ) 33 | #define LIBOLECF_EXTERN __declspec(dllexport) 34 | 35 | #elif defined( LIBOLECF_DLL_IMPORT ) 36 | #define LIBOLECF_EXTERN extern __declspec(dllimport) 37 | 38 | #else 39 | #define LIBOLECF_EXTERN extern 40 | 41 | #endif 42 | 43 | #endif /* !defined( _LIBOLECF_EXTERN_H ) */ 44 | 45 | -------------------------------------------------------------------------------- /include/libolecf/features.h.in: -------------------------------------------------------------------------------- 1 | /* 2 | * Features of libolecf 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_FEATURES_H ) 23 | #define _LIBOLECF_FEATURES_H 24 | 25 | /* The libolecf type support features 26 | */ 27 | #if defined( WINAPI ) || @HAVE_WIDE_CHARACTER_TYPE@ 28 | #define LIBOLECF_HAVE_WIDE_CHARACTER_TYPE 1 29 | #endif 30 | 31 | #if defined( WINAPI ) || @HAVE_MULTI_THREAD_SUPPORT@ 32 | #define LIBOLECF_HAVE_MULTI_THREAD_SUPPORT 1 33 | #endif 34 | 35 | #if defined( HAVE_LIBBFIO ) || ( !defined( WINAPI ) && @HAVE_LIBBFIO@ ) 36 | #define LIBOLECF_HAVE_BFIO 1 37 | #endif 38 | 39 | #if !defined( LIBOLECF_DEPRECATED ) 40 | #if defined( __GNUC__ ) && __GNUC__ >= 3 41 | #define LIBOLECF_DEPRECATED __attribute__ ((__deprecated__)) 42 | #elif defined( _MSC_VER ) 43 | #define LIBOLECF_DEPRECATED __declspec(deprecated) 44 | #else 45 | #define LIBOLECF_DEPRECATED 46 | #endif 47 | #endif 48 | 49 | #endif /* !defined( _LIBOLECF_FEATURES_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /libolecf.ini: -------------------------------------------------------------------------------- 1 | [project] 2 | name: "libolecf" 3 | status: "alpha" 4 | year_of_creation: "2008" 5 | data_format: "Object Linking and Embedding (OLE) Compound File (CF)" 6 | documentation_url: "https://github.com/libyal/libolecf/tree/main/documentation" 7 | features: ["debug_output", "ossfuzz", "python_bindings", "tools"] 8 | 9 | [library] 10 | description: "Library to access the Object Linking and Embedding (OLE) Compound File (CF) format" 11 | features: ["pthread", "wide_character_type"] 12 | public_types: ["file", "item", "property_section", "property_set", "property_value"] 13 | 14 | [tools] 15 | build_dependencies: ["fuse"] 16 | description: "Several tools for reading Object Linking and Embedding (OLE) Compound Files (CF)" 17 | names: ["olecfexport", "olecfinfo", "olecfmount"] 18 | 19 | [info_tool] 20 | source_description: "an OLE Compound File" 21 | source_type: "file" 22 | 23 | [mount_tool] 24 | features: ["codepage"] 25 | file_entry_creation_time_type: "filetime" 26 | file_entry_example: "\\x05SummaryInformation" 27 | file_entry_modification_time_type: "filetime" 28 | file_entry_type: "item" 29 | file_system_type: "file" 30 | mounted_description: "directories and files that provide the items contained in the OLECF file" 31 | source: "Text.doc" 32 | source_description: "an OLECF file" 33 | source_description_long: "an Object Linking and Embedding (OLE) Compound File (CF)" 34 | source_type: "file" 35 | 36 | [troubleshooting] 37 | example: "olecfinfo Test.doc" 38 | 39 | [development] 40 | main_object: "file" 41 | main_object_filename: "Test.doc" 42 | 43 | [tests] 44 | profiles: ["libolecf", "pyolecf", "olecfexport", "olecfinfo"] 45 | info_tool_options_per_profile: [""] 46 | info_tool_profiles: ["olecfinfo"] 47 | example_filename1: "Text.doc" 48 | example_filename2: "Numbers.xls" 49 | 50 | [pypi] 51 | appveyor_token: "VHuZiUWgTqTciKE2nsv/Lka0IqI+tcuOS0QqU5Cphf3OFVHSeu6gMmZgOi6pXjYHZDOnCfNsbyxr5cDMrY55Aa+UnMVL5e02HSaOzYTyxpD4eX3qNAw+yVcBJrKVmhplt04kc1sLae1xtGB0MdnTYdk13uM8Uh5gwavrHgayCiIDKP6N5KdI3w4buXjN9gsWGcHsqXoAcswUd6h9HqxOHCNS/jREJLYlQ4abrrTbWF3Z3dDSJIdR+qogMshNCXJGtjynJVM7HRwz4808PSbq04ksUC2lAHu+afQuTJhSrew=" 52 | 53 | -------------------------------------------------------------------------------- /libolecf.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: libolecf 7 | Description: Library to access the Object Linking and Embedding (OLE) Compound File (CF) format 8 | Version: @VERSION@ 9 | Libs: -L${libdir} -lolecf 10 | Libs.private: @ax_libbfio_pc_libs_private@ @ax_libcdata_pc_libs_private@ @ax_libcerror_pc_libs_private@ @ax_libcfile_pc_libs_private@ @ax_libclocale_pc_libs_private@ @ax_libcnotify_pc_libs_private@ @ax_libcpath_pc_libs_private@ @ax_libcsplit_pc_libs_private@ @ax_libcthreads_pc_libs_private@ @ax_libfdatetime_pc_libs_private@ @ax_libfguid_pc_libs_private@ @ax_libfole_pc_libs_private@ @ax_libfvalue_pc_libs_private@ @ax_libfwps_pc_libs_private@ @ax_libuna_pc_libs_private@ @ax_pthread_pc_libs_private@ 11 | Cflags: -I${includedir} 12 | 13 | -------------------------------------------------------------------------------- /libolecf/libolecf.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Library to access the Object Linking and Embedding (OLE) Compound File (CF) format 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #include 23 | 24 | #if defined( WINAPI ) 25 | #include 26 | #endif 27 | 28 | #include "libolecf_unused.h" 29 | 30 | /* Define HAVE_LOCAL_LIBOLECF for local use of libolecf 31 | */ 32 | #if !defined( HAVE_LOCAL_LIBOLECF ) 33 | 34 | #if defined( WINAPI ) && defined( HAVE_DLLMAIN ) 35 | 36 | #if defined( _MANAGED ) 37 | #pragma managed( push, off ) 38 | #endif 39 | 40 | /* Defines the entry point for the DLL 41 | */ 42 | BOOL WINAPI DllMain( 43 | HINSTANCE hinstDLL, 44 | DWORD fdwReason, 45 | LPVOID lpvReserved ) 46 | { 47 | LIBOLECF_UNREFERENCED_PARAMETER( lpvReserved ) 48 | 49 | switch( fdwReason ) 50 | { 51 | case DLL_PROCESS_ATTACH: 52 | DisableThreadLibraryCalls( 53 | hinstDLL ); 54 | break; 55 | 56 | case DLL_THREAD_ATTACH: 57 | break; 58 | 59 | case DLL_THREAD_DETACH: 60 | break; 61 | 62 | case DLL_PROCESS_DETACH: 63 | break; 64 | } 65 | return( TRUE ); 66 | } 67 | 68 | /* Function that indicates the library is a DLL 69 | * Returns 1 70 | */ 71 | int libolecf_is_dll( 72 | void ) 73 | { 74 | return( 1 ); 75 | } 76 | 77 | #endif /* defined( WINAPI ) && defined( HAVE_DLLMAIN ) */ 78 | 79 | #endif /* !defined( HAVE_LOCAL_LIBOLECF ) */ 80 | 81 | -------------------------------------------------------------------------------- /libolecf/libolecf.rc.in: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #ifdef GCC_WINDRES 4 | VS_VERSION_INFO VERSIONINFO 5 | #else 6 | VS_VERSION_INFO VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE 7 | #endif 8 | FILEVERSION 1,0,0,0 9 | PRODUCTVERSION 1,0,0,0 10 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 11 | #ifdef _DEBUG 12 | FILEFLAGS 0x1L 13 | #else 14 | FILEFLAGS 0x0L 15 | #endif 16 | FILEOS VOS__WINDOWS32 17 | FILETYPE VFT_DLL 18 | FILESUBTYPE 0x0L 19 | BEGIN 20 | BLOCK "StringFileInfo" 21 | BEGIN 22 | BLOCK "040904E4" 23 | BEGIN 24 | VALUE "FileDescription", "Library to access the Object Linking and Embedding (OLE) Compound File (CF) format\0" 25 | VALUE "FileVersion", "@VERSION@" "\0" 26 | VALUE "InternalName", "libolecf.dll\0" 27 | VALUE "LegalCopyright", "(C) 2008-2024, Joachim Metz \0" 28 | VALUE "OriginalFilename", "libolecf.dll\0" 29 | VALUE "ProductName", "libolecf\0" 30 | VALUE "ProductVersion", "@VERSION@" "\0" 31 | VALUE "Comments", "For more information visit https://github.com/libyal/libolecf/\0" 32 | END 33 | END 34 | BLOCK "VarFileInfo" 35 | BEGIN 36 | VALUE "Translation", 0x0409, 1200 37 | END 38 | END 39 | -------------------------------------------------------------------------------- /libolecf/libolecf_allocation_table.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Allocation table functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_ALLOCATION_TABLE_H ) 23 | #define _LIBOLECF_ALLOCATION_TABLE_H 24 | 25 | #include 26 | #include 27 | 28 | #include "libolecf_libcerror.h" 29 | 30 | #if defined( __cplusplus ) 31 | extern "C" { 32 | #endif 33 | 34 | typedef struct libolecf_allocation_table libolecf_allocation_table_t; 35 | 36 | struct libolecf_allocation_table 37 | { 38 | /* The number of sector identifiers 39 | */ 40 | int number_of_sector_identifiers; 41 | 42 | /* The sector identifiers 43 | */ 44 | uint32_t *sector_identifiers; 45 | }; 46 | 47 | int libolecf_allocation_table_initialize( 48 | libolecf_allocation_table_t **allocation_table, 49 | int number_of_sector_identifiers, 50 | libcerror_error_t **error ); 51 | 52 | int libolecf_allocation_table_free( 53 | libolecf_allocation_table_t **allocation_table, 54 | libcerror_error_t **error ); 55 | 56 | int libolecf_allocation_table_resize( 57 | libolecf_allocation_table_t *allocation_table, 58 | int number_of_sector_identifiers, 59 | libcerror_error_t **error ); 60 | 61 | int libolecf_allocation_table_get_sector_identifier_by_index( 62 | libolecf_allocation_table_t *allocation_table, 63 | int entry_index, 64 | uint32_t *sector_identifier, 65 | libcerror_error_t **error ); 66 | 67 | #if defined( __cplusplus ) 68 | } 69 | #endif 70 | 71 | #endif /* !defined( _LIBOLECF_ALLOCATION_TABLE_H ) */ 72 | 73 | -------------------------------------------------------------------------------- /libolecf/libolecf_compound_object_stream.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Compound object stream functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_COMPOUND_OBJECT_STREAM_H ) 23 | #define _LIBOLECF_COMPOUND_OBJECT_STREAM_H 24 | 25 | #include 26 | #include 27 | 28 | #include "libolecf_extern.h" 29 | #include "libolecf_libcerror.h" 30 | #include "libolecf_item.h" 31 | 32 | #if defined( __cplusplus ) 33 | extern "C" { 34 | #endif 35 | 36 | /* TODO remove as external function */ 37 | LIBOLECF_EXTERN \ 38 | int libolecf_compound_object_stream_read( 39 | libolecf_item_t *stream, 40 | libcerror_error_t **error ); 41 | 42 | #if defined( __cplusplus ) 43 | } 44 | #endif 45 | 46 | #endif /* !defined( _LIBOLECF_COMPOUND_OBJECT_STREAM_H ) */ 47 | 48 | -------------------------------------------------------------------------------- /libolecf/libolecf_debug.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Debug functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_DEBUG_H ) 23 | #define _LIBOLECF_DEBUG_H 24 | 25 | #include 26 | #include 27 | 28 | #include "libolecf_libbfio.h" 29 | #include "libolecf_libcerror.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | #if defined( HAVE_DEBUG_OUTPUT ) 36 | 37 | const char *libolecf_debug_print_item_type( 38 | uint8_t item_type ); 39 | 40 | int libolecf_debug_print_filetime_value( 41 | const char *function_name, 42 | const char *value_name, 43 | const uint8_t *byte_stream, 44 | size_t byte_stream_size, 45 | int byte_order, 46 | uint32_t string_format_flags, 47 | libcerror_error_t **error ); 48 | 49 | int libolecf_debug_print_guid_value( 50 | const char *function_name, 51 | const char *value_name, 52 | const uint8_t *byte_stream, 53 | size_t byte_stream_size, 54 | int byte_order, 55 | uint32_t string_format_flags, 56 | libcerror_error_t **error ); 57 | 58 | int libolecf_debug_print_utf16_string_value( 59 | const char *function_name, 60 | const char *value_name, 61 | const uint8_t *byte_stream, 62 | size_t byte_stream_size, 63 | int byte_order, 64 | libcerror_error_t **error ); 65 | 66 | int libolecf_debug_print_read_offsets( 67 | libbfio_handle_t *file_io_handle, 68 | libcerror_error_t **error ); 69 | 70 | #endif /* defined( HAVE_DEBUG_OUTPUT ) */ 71 | 72 | #if defined( __cplusplus ) 73 | } 74 | #endif 75 | 76 | #endif /* !defined( _LIBOLECF_DEBUG_H ) */ 77 | 78 | -------------------------------------------------------------------------------- /libolecf/libolecf_directory_list.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The directory list functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_DIRECTORY_LIST_H ) 23 | #define _LIBOLECF_DIRECTORY_LIST_H 24 | 25 | #include 26 | #include 27 | 28 | #include "libolecf_directory_entry.h" 29 | #include "libolecf_libcdata.h" 30 | #include "libolecf_libcerror.h" 31 | 32 | #if defined( __cplusplus ) 33 | extern "C" { 34 | #endif 35 | 36 | int libolecf_directory_list_get_element_by_identifier( 37 | libcdata_list_t *directory_entry_list, 38 | uint32_t directory_entry_identifier, 39 | libolecf_directory_entry_t **directory_entry, 40 | libcerror_error_t **error ); 41 | 42 | #if defined( __cplusplus ) 43 | } 44 | #endif 45 | 46 | #endif /* !defined( _LIBOLECF_DIRECTORY_LIST_H ) */ 47 | 48 | -------------------------------------------------------------------------------- /libolecf/libolecf_directory_tree.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The directory tree functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_DIRECTORY_TREE_H ) 23 | #define _LIBOLECF_DIRECTORY_TREE_H 24 | 25 | #include 26 | #include 27 | 28 | #include "libolecf_directory_entry.h" 29 | #include "libolecf_libcdata.h" 30 | #include "libolecf_libcerror.h" 31 | 32 | #if defined( __cplusplus ) 33 | extern "C" { 34 | #endif 35 | 36 | int libolecf_directory_tree_create( 37 | libcdata_tree_node_t **directory_tree_root_node, 38 | uint32_t *short_sector_stream_start_sector_identifier, 39 | libolecf_directory_entry_t **document_summary_information_directory_entry, 40 | libolecf_directory_entry_t **summary_information_directory_entry, 41 | libcdata_list_t *directory_entry_list, 42 | uint8_t byte_order, 43 | libcerror_error_t **error ); 44 | 45 | int libolecf_directory_tree_create_process_entry( 46 | libcdata_tree_node_t *directory_tree_node, 47 | const libolecf_directory_entry_t *root_directory_entry, 48 | libolecf_directory_entry_t **document_summary_information_directory_entry, 49 | libolecf_directory_entry_t **summary_information_directory_entry, 50 | libcdata_list_t *directory_entry_list, 51 | libolecf_directory_entry_t *directory_entry, 52 | uint8_t byte_order, 53 | libcerror_error_t **error ); 54 | 55 | int libolecf_directory_tree_get_sub_node_by_utf8_name( 56 | libcdata_tree_node_t *directory_tree_node, 57 | const uint8_t *utf8_string, 58 | size_t utf8_string_length, 59 | uint8_t byte_order, 60 | libcdata_tree_node_t **sub_directory_tree_node, 61 | libcerror_error_t **error ); 62 | 63 | int libolecf_directory_tree_get_sub_node_by_utf16_name( 64 | libcdata_tree_node_t *directory_tree_node, 65 | const uint16_t *utf16_string, 66 | size_t utf16_string_length, 67 | uint8_t byte_order, 68 | libcdata_tree_node_t **sub_directory_tree_node, 69 | libcerror_error_t **error ); 70 | 71 | #if defined( __cplusplus ) 72 | } 73 | #endif 74 | 75 | #endif /* !defined( _LIBOLECF_DIRECTORY_TREE_H ) */ 76 | 77 | -------------------------------------------------------------------------------- /libolecf/libolecf_error.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Error functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_INTERNAL_ERROR_H ) 23 | #define _LIBOLECF_INTERNAL_ERROR_H 24 | 25 | #include 26 | #include 27 | #include 28 | 29 | #if !defined( HAVE_LOCAL_LIBOLECF ) 30 | #include 31 | #endif 32 | 33 | #include "libolecf_extern.h" 34 | 35 | #if defined( __cplusplus ) 36 | extern "C" { 37 | #endif 38 | 39 | #if !defined( HAVE_LOCAL_LIBOLECF ) 40 | 41 | LIBOLECF_EXTERN \ 42 | void libolecf_error_free( 43 | libolecf_error_t **error ); 44 | 45 | LIBOLECF_EXTERN \ 46 | int libolecf_error_fprint( 47 | libolecf_error_t *error, 48 | FILE *stream ); 49 | 50 | LIBOLECF_EXTERN \ 51 | int libolecf_error_sprint( 52 | libolecf_error_t *error, 53 | char *string, 54 | size_t size ); 55 | 56 | LIBOLECF_EXTERN \ 57 | int libolecf_error_backtrace_fprint( 58 | libolecf_error_t *error, 59 | FILE *stream ); 60 | 61 | LIBOLECF_EXTERN \ 62 | int libolecf_error_backtrace_sprint( 63 | libolecf_error_t *error, 64 | char *string, 65 | size_t size ); 66 | 67 | #endif /* !defined( HAVE_LOCAL_LIBOLECF ) */ 68 | 69 | #if defined( __cplusplus ) 70 | } 71 | #endif 72 | 73 | #endif /* !defined( _LIBOLECF_INTERNAL_ERROR_H ) */ 74 | 75 | -------------------------------------------------------------------------------- /libolecf/libolecf_extern.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The internal extern definition 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_INTERNAL_EXTERN_H ) 23 | #define _LIBOLECF_INTERNAL_EXTERN_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBOLECF for local use of libolecf 28 | */ 29 | #if !defined( HAVE_LOCAL_LIBOLECF ) 30 | 31 | #include 32 | 33 | #if defined( __CYGWIN__ ) || defined( __MINGW32__ ) 34 | #define LIBOLECF_EXTERN_VARIABLE extern 35 | #else 36 | #define LIBOLECF_EXTERN_VARIABLE LIBOLECF_EXTERN 37 | #endif 38 | 39 | #else 40 | #define LIBOLECF_EXTERN /* extern */ 41 | #define LIBOLECF_EXTERN_VARIABLE extern 42 | 43 | #endif /* !defined( HAVE_LOCAL_LIBOLECF ) */ 44 | 45 | #endif /* !defined( _LIBOLECF_INTERNAL_EXTERN_H ) */ 46 | 47 | -------------------------------------------------------------------------------- /libolecf/libolecf_libbfio.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libbfio header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBBFIO_H ) 23 | #define _LIBOLECF_LIBBFIO_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBBFIO for local use of libbfio 28 | */ 29 | #if defined( HAVE_LOCAL_LIBBFIO ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #else 41 | 42 | /* If libtool DLL support is enabled set LIBBFIO_DLL_IMPORT 43 | * before including libbfio.h 44 | */ 45 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 46 | #define LIBBFIO_DLL_IMPORT 47 | #endif 48 | 49 | #include 50 | 51 | #if defined( HAVE_MULTI_THREAD_SUPPORT ) && !defined( LIBBFIO_HAVE_MULTI_THREAD_SUPPORT ) 52 | #error Multi-threading support requires libbfio with multi-threading support 53 | #endif 54 | 55 | #endif /* defined( HAVE_LOCAL_LIBBFIO ) */ 56 | 57 | #endif /* !defined( _LIBOLECF_LIBBFIO_H ) */ 58 | 59 | -------------------------------------------------------------------------------- /libolecf/libolecf_libcdata.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcdata header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBCDATA_H ) 23 | #define _LIBOLECF_LIBCDATA_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCDATA for local use of libcdata 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCDATA ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #else 41 | 42 | /* If libtool DLL support is enabled set LIBCDATA_DLL_IMPORT 43 | * before including libcdata.h 44 | */ 45 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 46 | #define LIBCDATA_DLL_IMPORT 47 | #endif 48 | 49 | #include 50 | 51 | #endif /* defined( HAVE_LOCAL_LIBCDATA ) */ 52 | 53 | #endif /* !defined( _LIBOLECF_LIBCDATA_H ) */ 54 | 55 | -------------------------------------------------------------------------------- /libolecf/libolecf_libcerror.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcerror header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBCERROR_H ) 23 | #define _LIBOLECF_LIBCERROR_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCERROR for local use of libcerror 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCERROR ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCERROR_DLL_IMPORT 39 | * before including libcerror.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 42 | #define LIBCERROR_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCERROR ) */ 48 | 49 | #endif /* !defined( _LIBOLECF_LIBCERROR_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /libolecf/libolecf_libclocale.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libclocale header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBCLOCALE_H ) 23 | #define _LIBOLECF_LIBCLOCALE_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCLOCALE for local use of libclocale 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCLOCALE ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCLOCALE_DLL_IMPORT 39 | * before including libclocale.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 42 | #define LIBCLOCALE_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCLOCALE ) */ 48 | 49 | #endif /* !defined( _LIBOLECF_LIBCLOCALE_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /libolecf/libolecf_libcnotify.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcnotify header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBCNOTIFY_H ) 23 | #define _LIBOLECF_LIBCNOTIFY_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCNOTIFY for local use of libcnotify 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCNOTIFY ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCNOTIFY_DLL_IMPORT 39 | * before including libcnotify.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 42 | #define LIBCNOTIFY_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCNOTIFY ) */ 48 | 49 | #endif /* !defined( _LIBOLECF_LIBCNOTIFY_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /libolecf/libolecf_libfdatetime.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libfdatetime header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBFDATETIME_H ) 23 | #define _LIBOLECF_LIBFDATETIME_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBFDATETIME for local use of libfdatetime 28 | */ 29 | #if defined( HAVE_LOCAL_LIBFDATETIME ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | 42 | #else 43 | 44 | /* If libtool DLL support is enabled set LIBFDATETIME_DLL_IMPORT 45 | * before including libfdatetime.h 46 | */ 47 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 48 | #define LIBFDATETIME_DLL_IMPORT 49 | #endif 50 | 51 | #include 52 | 53 | #endif /* defined( HAVE_LOCAL_LIBFDATETIME ) */ 54 | 55 | #endif /* !defined( _LIBOLECF_LIBFDATETIME_H ) */ 56 | 57 | -------------------------------------------------------------------------------- /libolecf/libolecf_libfguid.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libfguid header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBFGUID_H ) 23 | #define _LIBOLECF_LIBFGUID_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBFGUID for local use of libfguid 28 | */ 29 | #if defined( HAVE_LOCAL_LIBFGUID ) 30 | 31 | #include 32 | #include 33 | #include 34 | 35 | #else 36 | 37 | /* If libtool DLL support is enabled set LIBFGUID_DLL_IMPORT 38 | * before including libfguid.h 39 | */ 40 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 41 | #define LIBFGUID_DLL_IMPORT 42 | #endif 43 | 44 | #include 45 | 46 | #endif /* defined( HAVE_LOCAL_LIBFGUID ) */ 47 | 48 | #endif /* !defined( _LIBOLECF_LIBFGUID_H ) */ 49 | 50 | -------------------------------------------------------------------------------- /libolecf/libolecf_libfole.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libfole header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBFOLE_H ) 23 | #define _LIBOLECF_LIBFOLE_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBFOLE for local use of libfole 28 | */ 29 | #if defined( HAVE_LOCAL_LIBFOLE ) 30 | 31 | #include 32 | #include 33 | 34 | #else 35 | 36 | /* If libtool DLL support is enabled set LIBFOLE_DLL_IMPORT 37 | * before including libfole.h 38 | */ 39 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 40 | #define LIBFOLE_DLL_IMPORT 41 | #endif 42 | 43 | #include 44 | 45 | #endif 46 | 47 | #endif 48 | 49 | -------------------------------------------------------------------------------- /libolecf/libolecf_libfvalue.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libfvalue header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBFVALUE_H ) 23 | #define _LIBOLECF_LIBFVALUE_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBFVALUE for local use of libfvalue 28 | */ 29 | #if defined( HAVE_LOCAL_LIBFVALUE ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | 46 | #else 47 | 48 | /* If libtool DLL support is enabled set LIBFVALUE_DLL_IMPORT 49 | * before including libfvalue.h 50 | */ 51 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 52 | #define LIBFVALUE_DLL_IMPORT 53 | #endif 54 | 55 | #include 56 | 57 | #endif /* defined( HAVE_LOCAL_LIBFVALUE ) */ 58 | 59 | #endif /* !defined( _LIBOLECF_LIBFVALUE_H ) */ 60 | 61 | -------------------------------------------------------------------------------- /libolecf/libolecf_libfwps.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libfwps header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBFWPS_H ) 23 | #define _LIBOLECF_LIBFWPS_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBFWPS for local use of libfwps 28 | */ 29 | #if defined( HAVE_LOCAL_LIBFWPS ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | 39 | #else 40 | 41 | /* If libtool DLL support is enabled set LIBFWPS_DLL_IMPORT 42 | * before including libfwps.h 43 | */ 44 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 45 | #define LIBFWPS_DLL_IMPORT 46 | #endif 47 | 48 | #include 49 | 50 | #endif /* defined( HAVE_LOCAL_LIBFWPS ) */ 51 | 52 | #endif /* !defined( _LIBOLECF_LIBFWPS_H ) */ 53 | 54 | -------------------------------------------------------------------------------- /libolecf/libolecf_libuna.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libuna header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_LIBUNA_H ) 23 | #define _LIBOLECF_LIBUNA_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBUNA for local use of libuna 28 | */ 29 | #if defined( HAVE_LOCAL_LIBUNA ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | 46 | #else 47 | 48 | /* If libtool DLL support is enabled set LIBUNA_DLL_IMPORT 49 | * before including libuna.h 50 | */ 51 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 52 | #define LIBUNA_DLL_IMPORT 53 | #endif 54 | 55 | #include 56 | 57 | #endif /* defined( HAVE_LOCAL_LIBUNA ) */ 58 | 59 | #endif /* !defined( _LIBOLECF_LIBUNA_H ) */ 60 | 61 | -------------------------------------------------------------------------------- /libolecf/libolecf_notify.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Notification functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_NOTIFY_H ) 23 | #define _LIBOLECF_NOTIFY_H 24 | 25 | #include 26 | #include 27 | #include 28 | 29 | #include "libolecf_extern.h" 30 | #include "libolecf_libcerror.h" 31 | 32 | #if defined( __cplusplus ) 33 | extern "C" { 34 | #endif 35 | 36 | #if !defined( HAVE_LOCAL_LIBOLECF ) 37 | 38 | LIBOLECF_EXTERN \ 39 | void libolecf_notify_set_verbose( 40 | int verbose ); 41 | 42 | LIBOLECF_EXTERN \ 43 | int libolecf_notify_set_stream( 44 | FILE *stream, 45 | libcerror_error_t **error ); 46 | 47 | LIBOLECF_EXTERN \ 48 | int libolecf_notify_stream_open( 49 | const char *filename, 50 | libcerror_error_t **error ); 51 | 52 | LIBOLECF_EXTERN \ 53 | int libolecf_notify_stream_close( 54 | libcerror_error_t **error ); 55 | 56 | #endif /* !defined( HAVE_LOCAL_LIBOLECF ) */ 57 | 58 | #if defined( __cplusplus ) 59 | } 60 | #endif 61 | 62 | #endif /* !defined( _LIBOLECF_NOTIFY_H ) */ 63 | 64 | -------------------------------------------------------------------------------- /libolecf/libolecf_property_set_stream.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Property set stream functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_PROPERTY_SET_STREAM_H ) 23 | #define _LIBOLECF_PROPERTY_SET_STREAM_H 24 | 25 | #include 26 | #include 27 | 28 | #include "libolecf_extern.h" 29 | #include "libolecf_libcerror.h" 30 | #include "libolecf_types.h" 31 | 32 | #if defined( __cplusplus ) 33 | extern "C" { 34 | #endif 35 | 36 | LIBOLECF_EXTERN \ 37 | int libolecf_property_set_stream_get_set( 38 | libolecf_item_t *property_set_stream, 39 | libolecf_property_set_t **property_set, 40 | libcerror_error_t **error ); 41 | 42 | #if defined( __cplusplus ) 43 | } 44 | #endif 45 | 46 | #endif /* !defined( _LIBOLECF_PROPERTY_SET_STREAM_H ) */ 47 | 48 | -------------------------------------------------------------------------------- /libolecf/libolecf_stream.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Stream functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_STREAM_H ) 23 | #define _LIBOLECF_STREAM_H 24 | 25 | #include 26 | #include 27 | 28 | #include "libolecf_extern.h" 29 | #include "libolecf_libcerror.h" 30 | #include "libolecf_item.h" 31 | 32 | #if defined( __cplusplus ) 33 | extern "C" { 34 | #endif 35 | 36 | LIBOLECF_EXTERN \ 37 | ssize_t libolecf_stream_read_buffer( 38 | libolecf_item_t *stream, 39 | uint8_t *buffer, 40 | size_t size, 41 | libcerror_error_t **error ); 42 | 43 | LIBOLECF_EXTERN \ 44 | ssize_t libolecf_stream_read_buffer_at_offset( 45 | libolecf_item_t *stream, 46 | uint8_t *buffer, 47 | size_t size, 48 | off64_t offset, 49 | libcerror_error_t **error ); 50 | 51 | LIBOLECF_EXTERN \ 52 | off64_t libolecf_stream_seek_offset( 53 | libolecf_item_t *stream, 54 | off64_t offset, 55 | int whence, 56 | libcerror_error_t **error ); 57 | 58 | LIBOLECF_EXTERN \ 59 | int libolecf_stream_get_offset( 60 | libolecf_item_t *stream, 61 | off64_t *offset, 62 | libcerror_error_t **error ); 63 | 64 | #if defined( __cplusplus ) 65 | } 66 | #endif 67 | 68 | #endif /* !defined( _LIBOLECF_STREAM_H ) */ 69 | 70 | -------------------------------------------------------------------------------- /libolecf/libolecf_support.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Support functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_SUPPORT_H ) 23 | #define _LIBOLECF_SUPPORT_H 24 | 25 | #include 26 | #include 27 | 28 | #include "libolecf_extern.h" 29 | #include "libolecf_libbfio.h" 30 | #include "libolecf_libcerror.h" 31 | 32 | #if defined( __cplusplus ) 33 | extern "C" { 34 | #endif 35 | 36 | #if !defined( HAVE_LOCAL_LIBOLECF ) 37 | 38 | LIBOLECF_EXTERN \ 39 | const char *libolecf_get_version( 40 | void ); 41 | 42 | LIBOLECF_EXTERN \ 43 | uint8_t libolecf_get_access_flags_read( 44 | void ); 45 | 46 | LIBOLECF_EXTERN \ 47 | int libolecf_get_codepage( 48 | int *codepage, 49 | libcerror_error_t **error ); 50 | 51 | LIBOLECF_EXTERN \ 52 | int libolecf_set_codepage( 53 | int codepage, 54 | libcerror_error_t **error ); 55 | 56 | #endif /* !defined( HAVE_LOCAL_LIBOLECF ) */ 57 | 58 | LIBOLECF_EXTERN \ 59 | int libolecf_check_file_signature( 60 | const char *filename, 61 | libcerror_error_t **error ); 62 | 63 | #if defined( HAVE_WIDE_CHARACTER_TYPE ) 64 | 65 | LIBOLECF_EXTERN \ 66 | int libolecf_check_file_signature_wide( 67 | const wchar_t *filename, 68 | libcerror_error_t **error ); 69 | 70 | #endif /* defined( HAVE_WIDE_CHARACTER_TYPE ) */ 71 | 72 | LIBOLECF_EXTERN \ 73 | int libolecf_check_file_signature_file_io_handle( 74 | libbfio_handle_t *file_io_handle, 75 | libcerror_error_t **error ); 76 | 77 | #if defined( __cplusplus ) 78 | } 79 | #endif 80 | 81 | #endif /* !defined( _LIBOLECF_SUPPORT_H ) */ 82 | 83 | -------------------------------------------------------------------------------- /libolecf/libolecf_types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The internal type definitions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_INTERNAL_TYPES_H ) 23 | #define _LIBOLECF_INTERNAL_TYPES_H 24 | 25 | #include 26 | #include 27 | 28 | /* Define HAVE_LOCAL_LIBOLECF for local use of libolecf 29 | * The definitions in are copied here 30 | * for local use of libolecf 31 | */ 32 | #if defined( HAVE_LOCAL_LIBOLECF ) 33 | 34 | /* The following type definitions hide internal data structures 35 | */ 36 | #if defined( HAVE_DEBUG_OUTPUT ) && !defined( WINAPI ) 37 | typedef struct libolecf_file {} libolecf_file_t; 38 | typedef struct libolecf_item {} libolecf_item_t; 39 | typedef struct libolecf_property_section {} libolecf_property_section_t; 40 | typedef struct libolecf_property_set {} libolecf_property_set_t; 41 | typedef struct libolecf_property_value {} libolecf_property_value_t; 42 | 43 | #else 44 | typedef intptr_t libolecf_file_t; 45 | typedef intptr_t libolecf_item_t; 46 | typedef intptr_t libolecf_property_section_t; 47 | typedef intptr_t libolecf_property_set_t; 48 | typedef intptr_t libolecf_property_value_t; 49 | 50 | #endif /* defined( HAVE_DEBUG_OUTPUT ) && !defined( WINAPI ) */ 51 | 52 | #endif /* defined( HAVE_LOCAL_LIBOLECF ) */ 53 | 54 | #endif /* !defined( _LIBOLECF_INTERNAL_TYPES_H ) */ 55 | 56 | -------------------------------------------------------------------------------- /libolecf/libolecf_unused.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Definitions to silence compiler warnings about unused function attributes/parameters. 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LIBOLECF_UNUSED_H ) 23 | #define _LIBOLECF_UNUSED_H 24 | 25 | #include 26 | 27 | #if !defined( LIBOLECF_ATTRIBUTE_UNUSED ) 28 | #if defined( __GNUC__ ) && __GNUC__ >= 3 29 | #define LIBOLECF_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 30 | #else 31 | #define LIBOLECF_ATTRIBUTE_UNUSED 32 | #endif 33 | #endif 34 | 35 | #if defined( _MSC_VER ) 36 | #define LIBOLECF_UNREFERENCED_PARAMETER( parameter ) \ 37 | UNREFERENCED_PARAMETER( parameter ); 38 | #else 39 | #define LIBOLECF_UNREFERENCED_PARAMETER( parameter ) \ 40 | /* parameter */ 41 | #endif 42 | 43 | #endif /* !defined( _LIBOLECF_UNUSED_H ) */ 44 | 45 | -------------------------------------------------------------------------------- /libolecf/olecf_compound_object.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The compound object 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_COMPOUND_OBJECT_H ) 23 | #define _OLECF_COMPOUND_OBJECT_H 24 | 25 | #include 26 | #include 27 | 28 | #if defined( __cplusplus ) 29 | extern "C" { 30 | #endif 31 | 32 | typedef struct olecf_compound_object_header olecf_compound_object_header_t; 33 | 34 | struct olecf_compound_object_header 35 | { 36 | /* Reserved 37 | * Consists of 4 bytes 38 | */ 39 | uint8_t unknown1[ 4 ]; 40 | 41 | /* Version 42 | * Consists of 4 bytes 43 | */ 44 | uint8_t version[ 4 ]; 45 | 46 | /* Reserved 47 | * Consists of 20 bytes 48 | */ 49 | uint8_t unknown2[ 20 ]; 50 | }; 51 | 52 | #if defined( __cplusplus ) 53 | } 54 | #endif 55 | 56 | #endif /* !defined( _OLECF_COMPOUND_OBJECT_H ) */ 57 | 58 | -------------------------------------------------------------------------------- /m4/tests.m4: -------------------------------------------------------------------------------- 1 | dnl Functions for testing 2 | dnl 3 | dnl Version: 20200712 4 | 5 | dnl Function to detect if tests dependencies are available 6 | AC_DEFUN([AX_TESTS_CHECK_LOCAL], 7 | [AC_CHECK_HEADERS([dlfcn.h]) 8 | 9 | AC_CHECK_FUNCS([fmemopen getopt mkstemp setenv tzset unlink]) 10 | 11 | AC_CHECK_LIB( 12 | dl, 13 | dlsym) 14 | 15 | AS_IF( 16 | [test "x$lt_cv_prog_gnu_ld" = xyes && test "x$ac_cv_lib_dl_dlsym" = xyes], 17 | [AC_DEFINE( 18 | [HAVE_GNU_DL_DLSYM], 19 | [1], 20 | [Define to 1 if dlsym function is available in GNU dl.]) 21 | ]) 22 | ]) 23 | 24 | dnl Function to detect if OSS-Fuzz build environment is available 25 | AC_DEFUN([AX_TESTS_CHECK_OSSFUZZ], 26 | [AM_CONDITIONAL( 27 | HAVE_LIB_FUZZING_ENGINE, 28 | [test "x${LIB_FUZZING_ENGINE}" != x]) 29 | AC_SUBST( 30 | [LIB_FUZZING_ENGINE], 31 | ["${LIB_FUZZING_ENGINE}"]) 32 | ]) 33 | 34 | -------------------------------------------------------------------------------- /m4/types.m4: -------------------------------------------------------------------------------- 1 | dnl Functions for type definitions 2 | dnl 3 | dnl Version: 20180727 4 | 5 | dnl Function to detect if type definitions are available 6 | AC_DEFUN([AX_TYPES_CHECK_LOCAL], 7 | [AS_IF( 8 | [test "x$ac_cv_enable_winapi" = xyes], 9 | [ac_cv_enable_wide_character_type=yes]) 10 | 11 | AS_IF( 12 | [test "x$ac_cv_enable_wide_character_type" = xyes], 13 | [AC_DEFINE( 14 | [HAVE_WIDE_CHARACTER_TYPE], 15 | [1], 16 | [Define to 1 if wide character type should be used.]) 17 | AC_SUBST( 18 | [HAVE_WIDE_CHARACTER_TYPE], 19 | [1]) ], 20 | [AC_SUBST( 21 | [HAVE_WIDE_CHARACTER_TYPE], 22 | [0]) 23 | ]) 24 | 25 | AC_CHECK_HEADERS([sys/types.h inttypes.h stdint.h wchar.h]) 26 | 27 | AS_IF( 28 | [test "x$ac_cv_header_sys_types_h" = xyes], 29 | [AC_SUBST( 30 | [HAVE_SYS_TYPES_H], 31 | [1])], 32 | [AC_SUBST( 33 | [HAVE_SYS_TYPES_H], 34 | [0]) 35 | ]) 36 | 37 | AS_IF( 38 | [test "x$ac_cv_header_inttypes_h" = xyes], 39 | [AC_SUBST( 40 | [HAVE_INTTYPES_H], 41 | [1])], 42 | [AC_SUBST( 43 | [HAVE_INTTYPES_H], 44 | [0]) 45 | ]) 46 | 47 | AS_IF( 48 | [test "x$ac_cv_header_stdint_h" = xyes], 49 | [AC_SUBST( 50 | [HAVE_STDINT_H], 51 | [1])], 52 | [AC_SUBST( 53 | [HAVE_STDINT_H], 54 | [0]) 55 | ]) 56 | 57 | AS_IF( 58 | [test "x$ac_cv_header_wchar_h" = xyes], 59 | [AC_SUBST( 60 | [HAVE_WCHAR_H], 61 | [1]) ], 62 | [AC_SUBST( 63 | [HAVE_WCHAR_H], 64 | [0]) 65 | ]) 66 | 67 | AC_TYPE_MODE_T 68 | AC_TYPE_OFF_T 69 | AC_TYPE_SIZE_T 70 | 71 | AC_CHECK_TYPE( 72 | [size32_t], 73 | [AC_SUBST( 74 | [HAVE_SIZE32_T], 75 | [1])], 76 | [AC_SUBST( 77 | [HAVE_SIZE32_T], 78 | [0]) 79 | ]) 80 | 81 | AC_CHECK_TYPE( 82 | [ssize32_t], 83 | [AC_SUBST( 84 | [HAVE_SSIZE32_T], 85 | [1])], 86 | [AC_SUBST( 87 | [HAVE_SSIZE32_T], 88 | [0]) 89 | ]) 90 | 91 | AC_CHECK_TYPE( 92 | [size64_t], 93 | [AC_SUBST( 94 | [HAVE_SIZE64_T], 95 | [1])], 96 | [AC_SUBST( 97 | [HAVE_SIZE64_T], 98 | [0]) 99 | ]) 100 | 101 | AC_CHECK_TYPE( 102 | [ssize64_t], 103 | [AC_SUBST( 104 | [HAVE_SSIZE64_T], 105 | [1])], 106 | [AC_SUBST( 107 | [HAVE_SSIZE64_T], 108 | [0]) 109 | ]) 110 | 111 | AC_CHECK_TYPE( 112 | [off64_t], 113 | [AC_SUBST( 114 | [HAVE_OFF64_T], 115 | [1])], 116 | [AC_SUBST( 117 | [HAVE_OFF64_T], 118 | [0]) 119 | ]) 120 | 121 | AC_CHECK_TYPE([ssize_t]) 122 | AC_CHECK_TYPE([u64]) 123 | 124 | AC_CHECK_SIZEOF([int]) 125 | AC_CHECK_SIZEOF([long]) 126 | AC_CHECK_SIZEOF([off_t]) 127 | AC_CHECK_SIZEOF([size_t]) 128 | 129 | AS_IF( 130 | [test "x$ac_cv_header_wchar_h" = xyes], 131 | [AC_CHECK_SIZEOF([wchar_t])]) 132 | ]) 133 | 134 | -------------------------------------------------------------------------------- /manuals/Makefile.am: -------------------------------------------------------------------------------- 1 | man_MANS = \ 2 | olecfexport.1 \ 3 | olecfinfo.1 \ 4 | libolecf.3 5 | 6 | EXTRA_DIST = \ 7 | olecfexport.1 \ 8 | olecfinfo.1 \ 9 | libolecf.3 10 | 11 | DISTCLEANFILES = \ 12 | Makefile \ 13 | Makefile.in 14 | 15 | -------------------------------------------------------------------------------- /manuals/olecfexport.1: -------------------------------------------------------------------------------- 1 | .Dd April 25, 2019 2 | .Dt olecfexport 3 | .Os libolecf 4 | .Sh NAME 5 | .Nm olecfexport 6 | .Nd exports items stored in a Object Linking and Embedding (OLE) Compound File (CF) 7 | .Sh SYNOPSIS 8 | .Nm olecfexport 9 | .Op Fl c Ar codepage 10 | .Op Fl f Ar format 11 | .Op Fl l Ar logfile 12 | .Op Fl m Ar mode 13 | .Op Fl t Ar target 14 | .Op Fl dhqvV 15 | .Ar source 16 | .Sh DESCRIPTION 17 | .Nm olecfexport 18 | is a utility to export items stored in a Object Linking and Embedding (OLE) Compound File (CF) 19 | .Pp 20 | .Nm olecfexport 21 | is part of the 22 | .Nm libolecf 23 | package. 24 | .Nm libolecf 25 | is a library to access the Object Linking and Embedding (OLE) Compound File (CF) format 26 | .Pp 27 | .Ar source 28 | is the source file. 29 | .Pp 30 | The options are as follows: 31 | .Bl -tag -width Ds 32 | .It Fl c Ar codepage 33 | specify the codepage of ASCII strings, options: ascii, windows-874, windows-932, windows-936, windows-949, windows-950, windows-1250, windows-1251, windows-1252 (default), windows-1253, windows-1254, windows-1255, windows-1256, windows-1257 or windows-1258 34 | .It Fl d 35 | dumps the item values in a separate file: ItemValues.txt 36 | .It Fl f Ar format 37 | specify the preferred output format, options: all, html, rtf, text (default) 38 | .It Fl h 39 | shows this help 40 | .It Fl l Ar logfile 41 | specify the file in which to log information about the exported items 42 | .It Fl m Ar mode 43 | export mode, option: all, debug, items (default), recovered. 'all' exports the (allocated) items, orphan and recovered items. 'debug' exports all the (allocated) items, also those outside the the root folder. 'items' exports the (allocated) items. 'recovered' exports the orphan and recovered items. 44 | .It Fl q 45 | quiet shows minimal status information 46 | .It Fl t Ar target 47 | specify the basename of the target directory to export to (default is the source filename followed by .export) 48 | .It Fl v 49 | verbose output to stderr 50 | .It Fl V 51 | print version 52 | .El 53 | .Sh ENVIRONMENT 54 | None 55 | .Sh FILES 56 | None 57 | .Sh EXAMPLES 58 | .Bd -literal 59 | # olecfexport file.doc 60 | olecfexport 20101027 61 | .sp 62 | .Dl ... 63 | .sp 64 | .Ed 65 | .Sh DIAGNOSTICS 66 | Errors, verbose and debug output are printed to stderr when verbose output \-v is enabled. 67 | Verbose and debug output are only printed when enabled at compilation. 68 | .Sh BUGS 69 | Please report bugs of any kind to or on the project website: 70 | https://github.com/libyal/libolecf/ 71 | .Sh AUTHOR 72 | These man pages were written by Joachim Metz. 73 | .Sh COPYRIGHT 74 | Copyright (C) 2008-2024, Joachim Metz . 75 | This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 76 | .Sh SEE ALSO 77 | .Xr olecfinfo 1 78 | -------------------------------------------------------------------------------- /manuals/olecfinfo.1: -------------------------------------------------------------------------------- 1 | .Dd April 25, 2019 2 | .Dt olecfinfo 3 | .Os libolecf 4 | .Sh NAME 5 | .Nm olecfinfo 6 | .Nd determines information about a Object Linking and Embedding (OLE) Compound File (CF) 7 | .Sh SYNOPSIS 8 | .Nm olecfinfo 9 | .Op Fl c Ar codepage 10 | .Op Fl ahvV 11 | .Ar source 12 | .Sh DESCRIPTION 13 | .Nm olecfinfo 14 | is a utility to determine information about a Object Linking and Embedding (OLE) Compound File (CF) 15 | .Pp 16 | .Nm olecfinfo 17 | is part of the 18 | .Nm libolecf 19 | package. 20 | .Nm libolecf 21 | is a library to access the Object Linking and Embedding (OLE) Compound File (CF) format 22 | .Pp 23 | .Ar source 24 | is the source file. 25 | .Pp 26 | The options are as follows: 27 | .Bl -tag -width Ds 28 | .It Fl a 29 | shows allocation information 30 | .It Fl c Ar codepage 31 | specify the codepage of ASCII strings, options: ascii, windows-874, windows-932, windows-936, windows-949, windows-950, windows-1250, windows-1251, windows-1252 (default), windows-1253, windows-1254, windows-1255, windows-1256, windows-1257 or windows-1258 32 | .It Fl h 33 | shows this help 34 | .It Fl v 35 | verbose output to stderr 36 | .It Fl V 37 | print version 38 | .El 39 | .Sh ENVIRONMENT 40 | None 41 | .Sh FILES 42 | None 43 | .Sh EXAMPLES 44 | .Bd -literal 45 | # olecfinfo WordDocument.doc 46 | olecfinfo 20131012 47 | .sp 48 | OLE Compound File information: 49 | Version : 3.62 50 | Sector size : 512 51 | Short sector size : 64 52 | .sp 53 | Storage and stream items: 54 | Root Entry (768 bytes) 55 | 1Table (42656 bytes) 56 | WordDocument (4096 bytes) 57 | \\x05SummaryInformation (4096 bytes) 58 | \\x05DocumentSummaryInformation (4096 bytes) 59 | \\x01CompObj (114 bytes) 60 | .sp 61 | Summary information: 62 | .Dl ... 63 | .sp 64 | .Ed 65 | .Sh DIAGNOSTICS 66 | Errors, verbose and debug output are printed to stderr when verbose output \-v is enabled. 67 | Verbose and debug output are only printed when enabled at compilation. 68 | .Sh BUGS 69 | Please report bugs of any kind to or on the project website: 70 | https://github.com/libyal/libolecf/ 71 | .Sh AUTHOR 72 | These man pages were written by Joachim Metz. 73 | .Sh COPYRIGHT 74 | Copyright (C) 2008-2024, Joachim Metz . 75 | This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 76 | .Sh SEE ALSO 77 | .Xr olecfexport 1 78 | -------------------------------------------------------------------------------- /msvscpp/Makefile.am: -------------------------------------------------------------------------------- 1 | MSVSCPP_FILES = \ 2 | libbfio/libbfio.vcproj \ 3 | libcdata/libcdata.vcproj \ 4 | libcerror/libcerror.vcproj \ 5 | libcfile/libcfile.vcproj \ 6 | libclocale/libclocale.vcproj \ 7 | libcnotify/libcnotify.vcproj \ 8 | libcpath/libcpath.vcproj \ 9 | libcsplit/libcsplit.vcproj \ 10 | libcthreads/libcthreads.vcproj \ 11 | libfdatetime/libfdatetime.vcproj \ 12 | libfguid/libfguid.vcproj \ 13 | libfole/libfole.vcproj \ 14 | libfvalue/libfvalue.vcproj \ 15 | libfwps/libfwps.vcproj \ 16 | libolecf/libolecf.vcproj \ 17 | libuna/libuna.vcproj \ 18 | olecf_test_allocation_table/olecf_test_allocation_table.vcproj \ 19 | olecf_test_directory_entry/olecf_test_directory_entry.vcproj \ 20 | olecf_test_error/olecf_test_error.vcproj \ 21 | olecf_test_file/olecf_test_file.vcproj \ 22 | olecf_test_file_header/olecf_test_file_header.vcproj \ 23 | olecf_test_io_handle/olecf_test_io_handle.vcproj \ 24 | olecf_test_item/olecf_test_item.vcproj \ 25 | olecf_test_notify/olecf_test_notify.vcproj \ 26 | olecf_test_property_section/olecf_test_property_section.vcproj \ 27 | olecf_test_property_set/olecf_test_property_set.vcproj \ 28 | olecf_test_property_value/olecf_test_property_value.vcproj \ 29 | olecf_test_support/olecf_test_support.vcproj \ 30 | olecf_test_tools_info_handle/olecf_test_tools_info_handle.vcproj \ 31 | olecf_test_tools_mount_path_string/olecf_test_tools_mount_path_string.vcproj \ 32 | olecf_test_tools_output/olecf_test_tools_output.vcproj \ 33 | olecf_test_tools_signal/olecf_test_tools_signal.vcproj \ 34 | olecfexport/olecfexport.vcproj \ 35 | olecfinfo/olecfinfo.vcproj \ 36 | olecfmount/olecfmount.vcproj \ 37 | pyolecf/pyolecf.vcproj \ 38 | libolecf.sln 39 | 40 | EXTRA_DIST = \ 41 | $(MSVSCPP_FILES) 42 | 43 | DISTCLEANFILES = \ 44 | Makefile \ 45 | Makefile.in 46 | 47 | -------------------------------------------------------------------------------- /olecftools/log_handle.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Log handle 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _LOG_HANDLE_H ) 23 | #define _LOG_HANDLE_H 24 | 25 | #include 26 | #include 27 | #include 28 | 29 | #include "olecftools_libcerror.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | typedef struct log_handle log_handle_t; 36 | 37 | struct log_handle 38 | { 39 | /* The log stream 40 | */ 41 | FILE *log_stream; 42 | }; 43 | 44 | int log_handle_initialize( 45 | log_handle_t **log_handle, 46 | libcerror_error_t **error ); 47 | 48 | int log_handle_free( 49 | log_handle_t **log_handle, 50 | libcerror_error_t **error ); 51 | 52 | int log_handle_open( 53 | log_handle_t *log_handle, 54 | const system_character_t *filename, 55 | libcerror_error_t **error ); 56 | 57 | int log_handle_close( 58 | log_handle_t *log_handle, 59 | libcerror_error_t **error ); 60 | 61 | void log_handle_printf( 62 | log_handle_t *log_handle, 63 | char *format, 64 | ... ); 65 | 66 | #if defined( __cplusplus ) 67 | } 68 | #endif 69 | 70 | #endif /* !defined( _LOG_HANDLE_H ) */ 71 | 72 | -------------------------------------------------------------------------------- /olecftools/mount_file_system.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Mount file system 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _MOUNT_FILE_SYSTEM_H ) 23 | #define _MOUNT_FILE_SYSTEM_H 24 | 25 | #include 26 | #include 27 | 28 | #include "olecftools_libcerror.h" 29 | #include "olecftools_libolecf.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | typedef struct mount_file_system mount_file_system_t; 36 | 37 | struct mount_file_system 38 | { 39 | /* The mounted timestamp 40 | */ 41 | uint64_t mounted_timestamp; 42 | 43 | /* The file 44 | */ 45 | libolecf_file_t *olecf_file; 46 | }; 47 | 48 | int mount_file_system_initialize( 49 | mount_file_system_t **file_system, 50 | libcerror_error_t **error ); 51 | 52 | int mount_file_system_free( 53 | mount_file_system_t **file_system, 54 | libcerror_error_t **error ); 55 | 56 | int mount_file_system_signal_abort( 57 | mount_file_system_t *file_system, 58 | libcerror_error_t **error ); 59 | 60 | int mount_file_system_set_file( 61 | mount_file_system_t *file_system, 62 | libolecf_file_t *olecf_file, 63 | libcerror_error_t **error ); 64 | 65 | int mount_file_system_get_file( 66 | mount_file_system_t *file_system, 67 | libolecf_file_t **olecf_file, 68 | libcerror_error_t **error ); 69 | 70 | int mount_file_system_get_mounted_timestamp( 71 | mount_file_system_t *file_system, 72 | uint64_t *mounted_timestamp, 73 | libcerror_error_t **error ); 74 | 75 | int mount_file_system_get_item_by_path( 76 | mount_file_system_t *file_system, 77 | const system_character_t *path, 78 | size_t path_length, 79 | libolecf_item_t **olecf_item, 80 | libcerror_error_t **error ); 81 | 82 | int mount_file_system_get_filename_from_item( 83 | mount_file_system_t *file_system, 84 | libolecf_item_t *olecf_item, 85 | system_character_t **filename, 86 | size_t *filename_size, 87 | libcerror_error_t **error ); 88 | 89 | #if defined( __cplusplus ) 90 | } 91 | #endif 92 | 93 | #endif /* !defined( _MOUNT_FILE_SYSTEM_H ) */ 94 | 95 | -------------------------------------------------------------------------------- /olecftools/mount_handle.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Mount handle 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _MOUNT_HANDLE_H ) 23 | #define _MOUNT_HANDLE_H 24 | 25 | #include 26 | #include 27 | #include 28 | 29 | #include "mount_file_entry.h" 30 | #include "mount_file_system.h" 31 | #include "olecftools_libcerror.h" 32 | #include "olecftools_libolecf.h" 33 | 34 | #if defined( __cplusplus ) 35 | extern "C" { 36 | #endif 37 | 38 | typedef struct mount_handle mount_handle_t; 39 | 40 | struct mount_handle 41 | { 42 | /* The file system 43 | */ 44 | mount_file_system_t *file_system; 45 | 46 | /* The ASCII codepage 47 | */ 48 | int ascii_codepage; 49 | 50 | /* The notification output stream 51 | */ 52 | FILE *notify_stream; 53 | }; 54 | 55 | int mount_handle_initialize( 56 | mount_handle_t **mount_handle, 57 | libcerror_error_t **error ); 58 | 59 | int mount_handle_free( 60 | mount_handle_t **mount_handle, 61 | libcerror_error_t **error ); 62 | 63 | int mount_handle_signal_abort( 64 | mount_handle_t *mount_handle, 65 | libcerror_error_t **error ); 66 | 67 | int mount_handle_set_ascii_codepage( 68 | mount_handle_t *mount_handle, 69 | const system_character_t *string, 70 | libcerror_error_t **error ); 71 | 72 | int mount_handle_open( 73 | mount_handle_t *mount_handle, 74 | const system_character_t *filename, 75 | libcerror_error_t **error ); 76 | 77 | int mount_handle_close( 78 | mount_handle_t *mount_handle, 79 | libcerror_error_t **error ); 80 | 81 | int mount_handle_get_file_entry_by_path( 82 | mount_handle_t *mount_handle, 83 | const system_character_t *path, 84 | mount_file_entry_t **file_entry, 85 | libcerror_error_t **error ); 86 | 87 | #if defined( __cplusplus ) 88 | } 89 | #endif 90 | 91 | #endif /* !defined( _MOUNT_HANDLE_H ) */ 92 | 93 | -------------------------------------------------------------------------------- /olecftools/mount_path_string.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Mount path string functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _MOUNT_PATH_STRING_H ) 23 | #define _MOUNT_PATH_STRING_H 24 | 25 | #include 26 | #include 27 | 28 | #include "olecftools_libcerror.h" 29 | 30 | #if defined( __cplusplus ) 31 | extern "C" { 32 | #endif 33 | 34 | int mount_path_string_copy_hexadecimal_to_integer_32_bit( 35 | const system_character_t *string, 36 | size_t string_size, 37 | uint32_t *value_32bit, 38 | libcerror_error_t **error ); 39 | 40 | int mount_path_string_copy_from_item_path( 41 | system_character_t **path, 42 | size_t *path_size, 43 | const system_character_t *item_path, 44 | size_t item_path_length, 45 | libcerror_error_t **error ); 46 | 47 | int mount_path_string_copy_to_item_path( 48 | const system_character_t *path, 49 | size_t path_length, 50 | system_character_t **item_path, 51 | size_t *item_path_size, 52 | libcerror_error_t **error ); 53 | 54 | #if defined( __cplusplus ) 55 | } 56 | #endif 57 | 58 | #endif /* !defined( _MOUNT_PATH_STRING_H ) */ 59 | 60 | -------------------------------------------------------------------------------- /olecftools/olecftools_getopt.h: -------------------------------------------------------------------------------- 1 | /* 2 | * GetOpt functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_GETOPT_H ) 23 | #define _OLECFTOOLS_GETOPT_H 24 | 25 | #include 26 | #include 27 | 28 | /* unistd.h is included here to export getopt, optarg, optind and optopt 29 | */ 30 | #if defined( HAVE_UNISTD_H ) 31 | #include 32 | #endif 33 | 34 | #if defined( __cplusplus ) 35 | extern "C" { 36 | #endif 37 | 38 | #if defined( HAVE_GETOPT ) 39 | #define olecftools_getopt( argument_count, argument_values, options_string ) \ 40 | getopt( argument_count, argument_values, options_string ) 41 | 42 | #else 43 | 44 | #if !defined( __CYGWIN__ ) 45 | extern int optind; 46 | extern system_character_t *optarg; 47 | extern system_integer_t optopt; 48 | 49 | #else 50 | int optind; 51 | system_character_t *optarg; 52 | system_integer_t optopt; 53 | 54 | #endif /* !defined( __CYGWIN__ ) */ 55 | 56 | system_integer_t olecftools_getopt( 57 | int argument_count, 58 | system_character_t * const argument_values[], 59 | const system_character_t *options_string ); 60 | 61 | #endif /* defined( HAVE_GETOPT ) */ 62 | 63 | #if defined( __cplusplus ) 64 | } 65 | #endif 66 | 67 | #endif /* !defined( _OLECFTOOLS_GETOPT_H ) */ 68 | 69 | -------------------------------------------------------------------------------- /olecftools/olecftools_i18n.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Internationalization (i18n) functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_I18N_H ) 23 | #define _OLECFTOOLS_I18N_H 24 | 25 | #include 26 | 27 | #if defined( HAVE_LIBINTL_H ) 28 | #include 29 | #endif 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | /* TODO for now do nothing i18n-like 36 | #define _( string ) \ 37 | gettext( string ) 38 | */ 39 | 40 | #define _( string ) \ 41 | string 42 | 43 | #if defined( __cplusplus ) 44 | } 45 | #endif 46 | 47 | #endif /* !defined( _OLECFTOOLS_I18N_H ) */ 48 | 49 | -------------------------------------------------------------------------------- /olecftools/olecftools_libbfio.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libbfio header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBBFIO_H ) 23 | #define _OLECFTOOLS_LIBBFIO_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBBFIO for local use of libbfio 28 | */ 29 | #if defined( HAVE_LOCAL_LIBBFIO ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #else 41 | 42 | /* If libtool DLL support is enabled set LIBBFIO_DLL_IMPORT 43 | * before including libbfio.h 44 | */ 45 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 46 | #define LIBBFIO_DLL_IMPORT 47 | #endif 48 | 49 | #include 50 | 51 | #if defined( HAVE_MULTI_THREAD_SUPPORT ) && !defined( LIBBFIO_HAVE_MULTI_THREAD_SUPPORT ) 52 | #error Multi-threading support requires libbfio with multi-threading support 53 | #endif 54 | 55 | #endif /* defined( HAVE_LOCAL_LIBBFIO ) */ 56 | 57 | #endif /* !defined( _OLECFTOOLS_LIBBFIO_H ) */ 58 | 59 | -------------------------------------------------------------------------------- /olecftools/olecftools_libcerror.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcerror header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBCERROR_H ) 23 | #define _OLECFTOOLS_LIBCERROR_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCERROR for local use of libcerror 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCERROR ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCERROR_DLL_IMPORT 39 | * before including libcerror.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 42 | #define LIBCERROR_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCERROR ) */ 48 | 49 | #endif /* !defined( _OLECFTOOLS_LIBCERROR_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /olecftools/olecftools_libcfile.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcfile header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBCFILE_H ) 23 | #define _OLECFTOOLS_LIBCFILE_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCFILE for local use of libcfile 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCFILE ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCFILE_DLL_IMPORT 39 | * before including libcfile.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 42 | #define LIBCFILE_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCFILE ) */ 48 | 49 | #endif /* !defined( _OLECFTOOLS_LIBCFILE_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /olecftools/olecftools_libclocale.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libclocale header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBCLOCALE_H ) 23 | #define _OLECFTOOLS_LIBCLOCALE_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCLOCALE for local use of libclocale 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCLOCALE ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCLOCALE_DLL_IMPORT 39 | * before including libclocale.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 42 | #define LIBCLOCALE_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCLOCALE ) */ 48 | 49 | #endif /* !defined( _OLECFTOOLS_LIBCLOCALE_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /olecftools/olecftools_libcnotify.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcnotify header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBCNOTIFY_H ) 23 | #define _OLECFTOOLS_LIBCNOTIFY_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCNOTIFY for local use of libcnotify 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCNOTIFY ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCNOTIFY_DLL_IMPORT 39 | * before including libcnotify.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 42 | #define LIBCNOTIFY_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCNOTIFY ) */ 48 | 49 | #endif /* !defined( _OLECFTOOLS_LIBCNOTIFY_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /olecftools/olecftools_libcpath.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcpath header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBCPATH_H ) 23 | #define _OLECFTOOLS_LIBCPATH_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCPATH for local use of libcpath 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCPATH ) 30 | 31 | #include 32 | #include 33 | 34 | #else 35 | 36 | /* If libtool DLL support is enabled set LIBCPATH_DLL_IMPORT 37 | * before including libcpath.h 38 | */ 39 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 40 | #define LIBCPATH_DLL_IMPORT 41 | #endif 42 | 43 | #include 44 | 45 | #endif /* defined( HAVE_LOCAL_LIBCPATH ) */ 46 | 47 | #endif /* !defined( _OLECFTOOLS_LIBCPATH_H ) */ 48 | 49 | -------------------------------------------------------------------------------- /olecftools/olecftools_libfdatetime.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libfdatetime header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBFDATETIME_H ) 23 | #define _OLECFTOOLS_LIBFDATETIME_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBFDATETIME for local use of libfdatetime 28 | */ 29 | #if defined( HAVE_LOCAL_LIBFDATETIME ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | 42 | #else 43 | 44 | /* If libtool DLL support is enabled set LIBFDATETIME_DLL_IMPORT 45 | * before including libfdatetime.h 46 | */ 47 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 48 | #define LIBFDATETIME_DLL_IMPORT 49 | #endif 50 | 51 | #include 52 | 53 | #endif /* defined( HAVE_LOCAL_LIBFDATETIME ) */ 54 | 55 | #endif /* !defined( _OLECFTOOLS_LIBFDATETIME_H ) */ 56 | 57 | -------------------------------------------------------------------------------- /olecftools/olecftools_libfguid.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libfguid header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBFGUID_H ) 23 | #define _OLECFTOOLS_LIBFGUID_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBFGUID for local use of libfguid 28 | */ 29 | #if defined( HAVE_LOCAL_LIBFGUID ) 30 | 31 | #include 32 | #include 33 | #include 34 | 35 | #else 36 | 37 | /* If libtool DLL support is enabled set LIBFGUID_DLL_IMPORT 38 | * before including libfguid.h 39 | */ 40 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 41 | #define LIBFGUID_DLL_IMPORT 42 | #endif 43 | 44 | #include 45 | 46 | #endif /* defined( HAVE_LOCAL_LIBFGUID ) */ 47 | 48 | #endif /* !defined( _OLECFTOOLS_LIBFGUID_H ) */ 49 | 50 | -------------------------------------------------------------------------------- /olecftools/olecftools_libfole.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libfole header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBFOLE_H ) 23 | #define _OLECFTOOLS_LIBFOLE_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBFOLE for local use of libfole 28 | */ 29 | #if defined( HAVE_LOCAL_LIBFOLE ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBFOLE_DLL_IMPORT 39 | * before including libfole.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 42 | #define LIBFOLE_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBFOLE ) */ 48 | 49 | #endif /* !defined( _OLECFTOOLS_LIBFOLE_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /olecftools/olecftools_libolecf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libolecf header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBOLECF_H ) 23 | #define _OLECFTOOLS_LIBOLECF_H 24 | 25 | #include 26 | 27 | #include 28 | 29 | #endif /* !defined( _OLECFTOOLS_LIBOLECF_H ) */ 30 | 31 | -------------------------------------------------------------------------------- /olecftools/olecftools_libuna.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libuna header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_LIBUNA_H ) 23 | #define _OLECFTOOLS_LIBUNA_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBUNA for local use of libuna 28 | */ 29 | #if defined( HAVE_LOCAL_LIBUNA ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | 46 | #else 47 | 48 | /* If libtool DLL support is enabled set LIBUNA_DLL_IMPORT 49 | * before including libuna.h 50 | */ 51 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 52 | #define LIBUNA_DLL_IMPORT 53 | #endif 54 | 55 | #include 56 | 57 | #endif /* defined( HAVE_LOCAL_LIBUNA ) */ 58 | 59 | #endif /* !defined( _OLECFTOOLS_LIBUNA_H ) */ 60 | 61 | -------------------------------------------------------------------------------- /olecftools/olecftools_output.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Output functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_OUTPUT_H ) 23 | #define _OLECFTOOLS_OUTPUT_H 24 | 25 | #include 26 | #include 27 | #include 28 | 29 | #include "olecftools_libcerror.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | int olecftools_output_initialize( 36 | int stdio_mode, 37 | libcerror_error_t **error ); 38 | 39 | void olecftools_output_copyright_fprint( 40 | FILE *stream ); 41 | 42 | void olecftools_output_version_fprint( 43 | FILE *stream, 44 | const char *program ); 45 | 46 | void olecftools_output_detailed_version_fprint( 47 | FILE *stream, 48 | const char *program ); 49 | 50 | #if defined( __cplusplus ) 51 | } 52 | #endif 53 | 54 | #endif /* !defined( _OLECFTOOLS_OUTPUT_H ) */ 55 | 56 | -------------------------------------------------------------------------------- /olecftools/olecftools_signal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Signal handling functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_SIGNAL_H ) 23 | #define _OLECFTOOLS_SIGNAL_H 24 | 25 | #include 26 | #include 27 | 28 | #include "olecftools_libcerror.h" 29 | 30 | #if defined( __cplusplus ) 31 | extern "C" { 32 | #endif 33 | 34 | #if !defined( HAVE_SIGNAL_H ) && !defined( WINAPI ) 35 | #error missing signal functions 36 | #endif 37 | 38 | #if defined( WINAPI ) 39 | typedef unsigned long olecftools_signal_t; 40 | 41 | #else 42 | typedef int olecftools_signal_t; 43 | 44 | #endif /* defined( WINAPI ) */ 45 | 46 | #if defined( WINAPI ) 47 | 48 | BOOL WINAPI olecftools_signal_handler( 49 | olecftools_signal_t signal ); 50 | 51 | #if defined( _MSC_VER ) 52 | 53 | void olecftools_signal_initialize_memory_debug( 54 | void ); 55 | 56 | #endif /* defined( _MSC_VER ) */ 57 | 58 | #endif /* defined( WINAPI ) */ 59 | 60 | int olecftools_signal_attach( 61 | void (*signal_handler)( olecftools_signal_t ), 62 | libcerror_error_t **error ); 63 | 64 | int olecftools_signal_detach( 65 | libcerror_error_t **error ); 66 | 67 | #if defined( __cplusplus ) 68 | } 69 | #endif 70 | 71 | #endif /* !defined( _OLECFTOOLS_SIGNAL_H ) */ 72 | 73 | -------------------------------------------------------------------------------- /olecftools/olecftools_unused.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Definitions to silence compiler warnings about unused function attributes/parameters. 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECFTOOLS_UNUSED_H ) 23 | #define _OLECFTOOLS_UNUSED_H 24 | 25 | #include 26 | 27 | #if !defined( OLECFTOOLS_ATTRIBUTE_UNUSED ) 28 | 29 | #if defined( __GNUC__ ) && __GNUC__ >= 3 30 | #define OLECFTOOLS_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 31 | 32 | #else 33 | #define OLECFTOOLS_ATTRIBUTE_UNUSED 34 | 35 | #endif /* defined( __GNUC__ ) && __GNUC__ >= 3 */ 36 | 37 | #endif /* !defined( OLECFTOOLS_ATTRIBUTE_UNUSED ) */ 38 | 39 | #if defined( _MSC_VER ) 40 | #define OLECFTOOLS_UNREFERENCED_PARAMETER( parameter ) \ 41 | UNREFERENCED_PARAMETER( parameter ); 42 | 43 | #else 44 | #define OLECFTOOLS_UNREFERENCED_PARAMETER( parameter ) \ 45 | /* parameter */ 46 | 47 | #endif /* defined( _MSC_VER ) */ 48 | 49 | #endif /* !defined( _OLECFTOOLS_UNUSED_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /ossfuzz/Makefile.am: -------------------------------------------------------------------------------- 1 | if HAVE_LIB_FUZZING_ENGINE 2 | AM_CPPFLAGS = \ 3 | -I../include -I$(top_srcdir)/include \ 4 | -I../common -I$(top_srcdir)/common \ 5 | @LIBCERROR_CPPFLAGS@ \ 6 | @LIBCDATA_CPPFLAGS@ \ 7 | @LIBCLOCALE_CPPFLAGS@ \ 8 | @LIBCNOTIFY_CPPFLAGS@ \ 9 | @LIBUNA_CPPFLAGS@ \ 10 | @LIBCFILE_CPPFLAGS@ \ 11 | @LIBCPATH_CPPFLAGS@ \ 12 | @LIBBFIO_CPPFLAGS@ 13 | 14 | bin_PROGRAMS = \ 15 | file_fuzzer \ 16 | item_fuzzer 17 | 18 | file_fuzzer_SOURCES = \ 19 | file_fuzzer.cc \ 20 | ossfuzz_libbfio.h \ 21 | ossfuzz_libolecf.h 22 | 23 | file_fuzzer_LDADD = \ 24 | @LIB_FUZZING_ENGINE@ \ 25 | @LIBBFIO_LIBADD@ \ 26 | @LIBCPATH_LIBADD@ \ 27 | @LIBCFILE_LIBADD@ \ 28 | @LIBUNA_LIBADD@ \ 29 | @LIBCDATA_LIBADD@ \ 30 | ../libolecf/libolecf.la \ 31 | @LIBCNOTIFY_LIBADD@ \ 32 | @LIBCLOCALE_LIBADD@ \ 33 | @LIBCERROR_LIBADD@ \ 34 | @LIBINTL@ 35 | 36 | item_fuzzer_SOURCES = \ 37 | item_fuzzer.cc \ 38 | ossfuzz_libbfio.h \ 39 | ossfuzz_libolecf.h 40 | 41 | item_fuzzer_LDADD = \ 42 | @LIB_FUZZING_ENGINE@ \ 43 | @LIBBFIO_LIBADD@ \ 44 | @LIBCPATH_LIBADD@ \ 45 | @LIBCFILE_LIBADD@ \ 46 | @LIBUNA_LIBADD@ \ 47 | @LIBCDATA_LIBADD@ \ 48 | ../libolecf/libolecf.la \ 49 | @LIBCNOTIFY_LIBADD@ \ 50 | @LIBCLOCALE_LIBADD@ \ 51 | @LIBCERROR_LIBADD@ \ 52 | @LIBINTL@ 53 | endif 54 | 55 | DISTCLEANFILES = \ 56 | Makefile \ 57 | Makefile.in 58 | 59 | splint-local: 60 | @echo "Running splint on file_fuzzer ..." 61 | -splint -preproc -redef $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(file_fuzzer_SOURCES) 62 | @echo "Running splint on item_fuzzer ..." 63 | -splint -preproc -redef $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(item_fuzzer_SOURCES) 64 | 65 | -------------------------------------------------------------------------------- /ossfuzz/file_fuzzer.cc: -------------------------------------------------------------------------------- 1 | /* 2 | * OSS-Fuzz target for libolecf file type 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #include 23 | #include 24 | 25 | /* Note that some of the OSS-Fuzz engines use C++ 26 | */ 27 | extern "C" { 28 | 29 | #include "ossfuzz_libbfio.h" 30 | #include "ossfuzz_libolecf.h" 31 | 32 | #if !defined( LIBOLECF_HAVE_BFIO ) 33 | 34 | /* Opens a file using a Basic File IO (bfio) handle 35 | * Returns 1 if successful or -1 on error 36 | */ 37 | LIBOLECF_EXTERN \ 38 | int libolecf_file_open_file_io_handle( 39 | libolecf_file_t *file, 40 | libbfio_handle_t *file_io_handle, 41 | int access_flags, 42 | libolecf_error_t **error ); 43 | 44 | #endif /* !defined( LIBOLECF_HAVE_BFIO ) */ 45 | 46 | int LLVMFuzzerTestOneInput( 47 | const uint8_t *data, 48 | size_t size ) 49 | { 50 | libbfio_handle_t *file_io_handle = NULL; 51 | libolecf_file_t *file = NULL; 52 | 53 | if( libbfio_memory_range_initialize( 54 | &file_io_handle, 55 | NULL ) != 1 ) 56 | { 57 | return( 0 ); 58 | } 59 | if( libbfio_memory_range_set( 60 | file_io_handle, 61 | (uint8_t *) data, 62 | size, 63 | NULL ) != 1 ) 64 | { 65 | goto on_error_libbfio; 66 | } 67 | if( libolecf_file_initialize( 68 | &file, 69 | NULL ) != 1 ) 70 | { 71 | goto on_error_libbfio; 72 | } 73 | if( libolecf_file_open_file_io_handle( 74 | file, 75 | file_io_handle, 76 | LIBOLECF_OPEN_READ, 77 | NULL ) != 1 ) 78 | { 79 | goto on_error_libolecf; 80 | } 81 | libolecf_file_close( 82 | file, 83 | NULL ); 84 | 85 | on_error_libolecf: 86 | libolecf_file_free( 87 | &file, 88 | NULL ); 89 | 90 | on_error_libbfio: 91 | libbfio_handle_free( 92 | &file_io_handle, 93 | NULL ); 94 | 95 | return( 0 ); 96 | } 97 | 98 | } /* extern "C" */ 99 | 100 | -------------------------------------------------------------------------------- /ossfuzz/ossfuzz_libbfio.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libbfio header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OSSFUZZ_LIBBFIO_H ) 23 | #define _OSSFUZZ_LIBBFIO_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBBFIO for local use of libbfio 28 | */ 29 | #if defined( HAVE_LOCAL_LIBBFIO ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #else 41 | 42 | /* If libtool DLL support is enabled set LIBBFIO_DLL_IMPORT 43 | * before including libbfio.h 44 | */ 45 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) && !defined( HAVE_STATIC_EXECUTABLES ) 46 | #define LIBBFIO_DLL_IMPORT 47 | #endif 48 | 49 | #include 50 | 51 | #if defined( HAVE_MULTI_THREAD_SUPPORT ) && !defined( LIBBFIO_HAVE_MULTI_THREAD_SUPPORT ) 52 | #error Multi-threading support requires libbfio with multi-threading support 53 | #endif 54 | 55 | #endif /* defined( HAVE_LOCAL_LIBBFIO ) */ 56 | 57 | #endif /* !defined( _OSSFUZZ_LIBBFIO_H ) */ 58 | 59 | -------------------------------------------------------------------------------- /ossfuzz/ossfuzz_libolecf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libolecf header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OSSFUZZ_LIBOLECF_H ) 23 | #define _OSSFUZZ_LIBOLECF_H 24 | 25 | #include 26 | 27 | #include 28 | 29 | #endif /* !defined( _OSSFUZZ_LIBOLECF_H ) */ 30 | 31 | -------------------------------------------------------------------------------- /po/ChangeLog: -------------------------------------------------------------------------------- 1 | 2016-11-08 gettextize 2 | -------------------------------------------------------------------------------- /po/Makevars.in: -------------------------------------------------------------------------------- 1 | # Makefile variables for PO directory in any package using GNU gettext. 2 | 3 | # Usually the message domain is the same as the package name. 4 | DOMAIN = @PACKAGE@ 5 | 6 | # These two variables depend on the location of this directory. 7 | subdir = po 8 | top_builddir = .. 9 | 10 | # These options get passed to xgettext. 11 | XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ 12 | 13 | # This is the copyright holder that gets inserted into the header of the 14 | # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding 15 | # package. (Note that the msgstr strings, extracted from the package's 16 | # sources, belong to the copyright holder of the package.) Translators are 17 | # expected to transfer the copyright for their translations to this person 18 | # or entity, or to disclaim their copyright. The empty string stands for 19 | # the public domain; in this case the translators are expected to disclaim 20 | # their copyright. 21 | COPYRIGHT_HOLDER = Joachim Metz 22 | 23 | # This is the email address or URL to which the translators shall report 24 | # bugs in the untranslated strings: 25 | # - Strings which are not entire sentences, see the maintainer guidelines 26 | # in the GNU gettext documentation, section 'Preparing Strings'. 27 | # - Strings which use unclear terms or require additional context to be 28 | # understood. 29 | # - Strings which make invalid assumptions about notation of date, time or 30 | # money. 31 | # - Pluralisation problems. 32 | # - Incorrect English spelling. 33 | # - Incorrect formatting. 34 | # It can be your email address, or a mailing list address where translators 35 | # can write to without being subscribed, or the URL of a web page through 36 | # which the translators can contact you. 37 | MSGID_BUGS_ADDRESS = @PACKAGE_BUGREPORT@ 38 | 39 | # This is the list of locale categories, beyond LC_MESSAGES, for which the 40 | # message catalogs shall be used. It is usually empty. 41 | EXTRA_LOCALE_CATEGORIES = 42 | 43 | # Additional make targets. 44 | sources splint: 45 | 46 | -------------------------------------------------------------------------------- /po/POTFILES.in: -------------------------------------------------------------------------------- 1 | # List of source files which contain translatable strings. 2 | -------------------------------------------------------------------------------- /pyolecf/Makefile.am: -------------------------------------------------------------------------------- 1 | if HAVE_PYTHON 2 | AM_CFLAGS = \ 3 | -I../include -I$(top_srcdir)/include \ 4 | -I../common -I$(top_srcdir)/common \ 5 | @LIBCERROR_CPPFLAGS@ \ 6 | @LIBCDATA_CPPFLAGS@ \ 7 | @LIBCLOCALE_CPPFLAGS@ \ 8 | @LIBCSPLIT_CPPFLAGS@ \ 9 | @LIBUNA_CPPFLAGS@ \ 10 | @LIBCFILE_CPPFLAGS@ \ 11 | @LIBCPATH_CPPFLAGS@ \ 12 | @LIBBFIO_CPPFLAGS@ \ 13 | @LIBFGUID_CPPFLAGS@ \ 14 | @LIBOLECF_DLL_IMPORT@ 15 | 16 | pyexec_LTLIBRARIES = pyolecf.la 17 | 18 | pyolecf_la_SOURCES = \ 19 | pyolecf.c pyolecf.h \ 20 | pyolecf_codepage.c pyolecf_codepage.h \ 21 | pyolecf_datetime.c pyolecf_datetime.h \ 22 | pyolecf_error.c pyolecf_error.h \ 23 | pyolecf_file.c pyolecf_file.h \ 24 | pyolecf_file_object_io_handle.c pyolecf_file_object_io_handle.h \ 25 | pyolecf_guid.c pyolecf_guid.h \ 26 | pyolecf_integer.c pyolecf_integer.h \ 27 | pyolecf_item.c pyolecf_item.h \ 28 | pyolecf_item_types.c pyolecf_item_types.h \ 29 | pyolecf_items.c pyolecf_items.h \ 30 | pyolecf_libbfio.h \ 31 | pyolecf_libcerror.h \ 32 | pyolecf_libclocale.h \ 33 | pyolecf_libfguid.h \ 34 | pyolecf_libolecf.h \ 35 | pyolecf_property_section.c pyolecf_property_section.h \ 36 | pyolecf_property_sections.c pyolecf_property_sections.h \ 37 | pyolecf_property_set.c pyolecf_property_set.h \ 38 | pyolecf_property_set_stream.c pyolecf_property_set_stream.h \ 39 | pyolecf_property_value.c pyolecf_property_value.h \ 40 | pyolecf_property_values.c pyolecf_property_values.h \ 41 | pyolecf_python.h \ 42 | pyolecf_stream.c pyolecf_stream.h \ 43 | pyolecf_unused.h \ 44 | pyolecf_value_types.c pyolecf_value_types.h 45 | 46 | pyolecf_la_LIBADD = \ 47 | @LIBCERROR_LIBADD@ \ 48 | ../libolecf/libolecf.la \ 49 | @LIBCDATA_LIBADD@ \ 50 | @LIBCLOCALE_LIBADD@ \ 51 | @LIBCSPLIT_LIBADD@ \ 52 | @LIBUNA_LIBADD@ \ 53 | @LIBCFILE_LIBADD@ \ 54 | @LIBCPATH_LIBADD@ \ 55 | @LIBBFIO_LIBADD@ \ 56 | @LIBFGUID_LIBADD@ 57 | 58 | pyolecf_la_CPPFLAGS = $(PYTHON_CPPFLAGS) 59 | pyolecf_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS) 60 | 61 | endif 62 | 63 | DISTCLEANFILES = \ 64 | Makefile \ 65 | Makefile.in 66 | 67 | -------------------------------------------------------------------------------- /pyolecf/pyolecf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Python bindings module for libolecf (pyolecf) 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_H ) 23 | #define _PYOLECF_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_python.h" 29 | 30 | #if defined( __cplusplus ) 31 | extern "C" { 32 | #endif 33 | 34 | PyObject *pyolecf_get_version( 35 | PyObject *self, 36 | PyObject *arguments ); 37 | 38 | PyObject *pyolecf_check_file_signature( 39 | PyObject *self, 40 | PyObject *arguments, 41 | PyObject *keywords ); 42 | 43 | PyObject *pyolecf_check_file_signature_file_object( 44 | PyObject *self, 45 | PyObject *arguments, 46 | PyObject *keywords ); 47 | 48 | PyObject *pyolecf_open_new_file( 49 | PyObject *self, 50 | PyObject *arguments, 51 | PyObject *keywords ); 52 | 53 | PyObject *pyolecf_open_new_file_with_file_object( 54 | PyObject *self, 55 | PyObject *arguments, 56 | PyObject *keywords ); 57 | 58 | #if PY_MAJOR_VERSION >= 3 59 | PyMODINIT_FUNC PyInit_pyolecf( 60 | void ); 61 | #else 62 | PyMODINIT_FUNC initpyolecf( 63 | void ); 64 | #endif 65 | 66 | #if defined( __cplusplus ) 67 | } 68 | #endif 69 | 70 | #endif /* !defined( _PYOLECF_H ) */ 71 | 72 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_codepage.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Codepage functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_CODEPAGE_H ) 23 | #define _PYOLECF_CODEPAGE_H 24 | 25 | #include 26 | #include 27 | 28 | #if defined( __cplusplus ) 29 | extern "C" { 30 | #endif 31 | 32 | const char *pyolecf_codepage_to_string( 33 | int codepage ); 34 | 35 | /* TODO add list function */ 36 | 37 | #if defined( __cplusplus ) 38 | } 39 | #endif 40 | 41 | #endif /* !defined( _PYOLECF_CODEPAGE_H ) */ 42 | 43 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_datetime.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Date and time functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_DATETIME_H ) 23 | #define _PYOLECF_DATETIME_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_python.h" 29 | 30 | #if defined( __cplusplus ) 31 | extern "C" { 32 | #endif 33 | 34 | PyObject *pyolecf_datetime_new_from_time_elements( 35 | uint16_t year, 36 | uint64_t number_of_days, 37 | uint8_t hours, 38 | uint8_t minutes, 39 | uint8_t seconds, 40 | uint32_t micro_seconds ); 41 | 42 | PyObject *pyolecf_datetime_new_from_fat_date_time( 43 | uint32_t fat_date_time ); 44 | 45 | PyObject *pyolecf_datetime_new_from_filetime( 46 | uint64_t filetime ); 47 | 48 | PyObject *pyolecf_datetime_new_from_floatingtime( 49 | uint64_t floatingtime ); 50 | 51 | PyObject *pyolecf_datetime_new_from_hfs_time( 52 | uint32_t hfs_time ); 53 | 54 | PyObject *pyolecf_datetime_new_from_posix_time( 55 | int64_t posix_time ); 56 | 57 | PyObject *pyolecf_datetime_new_from_posix_time_in_micro_seconds( 58 | int64_t posix_time ); 59 | 60 | #if defined( __cplusplus ) 61 | } 62 | #endif 63 | 64 | #endif /* !defined( _PYOLECF_DATETIME_H ) */ 65 | 66 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_error.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Error functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_ERROR_H ) 23 | #define _PYOLECF_ERROR_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_libcerror.h" 29 | #include "pyolecf_python.h" 30 | 31 | #define PYOLECF_ERROR_STRING_SIZE 2048 32 | 33 | #if defined( __cplusplus ) 34 | extern "C" { 35 | #endif 36 | 37 | void pyolecf_error_fetch( 38 | libcerror_error_t **error, 39 | int error_domain, 40 | int error_code, 41 | const char *format_string, 42 | ... ); 43 | 44 | void pyolecf_error_fetch_and_raise( 45 | PyObject *exception_object, 46 | const char *format_string, 47 | ... ); 48 | 49 | void pyolecf_error_raise( 50 | libcerror_error_t *error, 51 | PyObject *exception_object, 52 | const char *format_string, 53 | ... ); 54 | 55 | #if defined( __cplusplus ) 56 | } 57 | #endif 58 | 59 | #endif /* !defined( _PYOLECF_ERROR_H ) */ 60 | 61 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_guid.h: -------------------------------------------------------------------------------- 1 | /* 2 | * GUID functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_GUID_H ) 23 | #define _PYOLECF_GUID_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_python.h" 29 | 30 | #if defined( __cplusplus ) 31 | extern "C" { 32 | #endif 33 | 34 | PyObject *pyolecf_string_new_from_guid( 35 | const uint8_t *guid_buffer, 36 | size_t guid_buffer_size ); 37 | 38 | #if defined( __cplusplus ) 39 | } 40 | #endif 41 | 42 | #endif /* !defined( _PYOLECF_GUID_H ) */ 43 | 44 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_integer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Integer functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_INTEGER_H ) 23 | #define _PYOLECF_INTEGER_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_libcerror.h" 29 | #include "pyolecf_python.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | PyObject *pyolecf_integer_signed_new_from_64bit( 36 | int64_t value_64bit ); 37 | 38 | PyObject *pyolecf_integer_unsigned_new_from_64bit( 39 | uint64_t value_64bit ); 40 | 41 | int pyolecf_integer_signed_copy_to_64bit( 42 | PyObject *integer_object, 43 | int64_t *value_64bit, 44 | libcerror_error_t **error ); 45 | 46 | int pyolecf_integer_unsigned_copy_to_64bit( 47 | PyObject *integer_object, 48 | uint64_t *value_64bit, 49 | libcerror_error_t **error ); 50 | 51 | #if defined( __cplusplus ) 52 | } 53 | #endif 54 | 55 | #endif /* !defined( _PYOLECF_INTEGER_H ) */ 56 | 57 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_item_types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Python object definition of the libolecf item types 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_ITEM_TYPES_H ) 23 | #define _PYOLECF_ITEM_TYPES_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_libolecf.h" 29 | #include "pyolecf_python.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | typedef struct pyolecf_item_types pyolecf_item_types_t; 36 | 37 | struct pyolecf_item_types 38 | { 39 | /* Python object initialization 40 | */ 41 | PyObject_HEAD 42 | }; 43 | 44 | extern PyTypeObject pyolecf_item_types_type_object; 45 | 46 | int pyolecf_item_types_init_type( 47 | PyTypeObject *type_object ); 48 | 49 | PyObject *pyolecf_item_types_new( 50 | void ); 51 | 52 | int pyolecf_item_types_init( 53 | pyolecf_item_types_t *definitions_object ); 54 | 55 | void pyolecf_item_types_free( 56 | pyolecf_item_types_t *definitions_object ); 57 | 58 | #if defined( __cplusplus ) 59 | } 60 | #endif 61 | 62 | #endif /* !defined( _PYOLECF_ITEM_TYPES_H ) */ 63 | 64 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_items.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Python object definition of the sequence and iterator object of items 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_ITEMS_H ) 23 | #define _PYOLECF_ITEMS_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_libolecf.h" 29 | #include "pyolecf_python.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | typedef struct pyolecf_items pyolecf_items_t; 36 | 37 | struct pyolecf_items 38 | { 39 | /* Python object initialization 40 | */ 41 | PyObject_HEAD 42 | 43 | /* The parent object 44 | */ 45 | PyObject *parent_object; 46 | 47 | /* The get item by index callback function 48 | */ 49 | PyObject* (*get_item_by_index)( 50 | PyObject *parent_object, 51 | int index ); 52 | 53 | /* The current index 54 | */ 55 | int current_index; 56 | 57 | /* The number of items 58 | */ 59 | int number_of_items; 60 | }; 61 | 62 | extern PyTypeObject pyolecf_items_type_object; 63 | 64 | PyObject *pyolecf_items_new( 65 | PyObject *parent_object, 66 | PyObject* (*get_item_by_index)( 67 | PyObject *parent_object, 68 | int index ), 69 | int number_of_items ); 70 | 71 | int pyolecf_items_init( 72 | pyolecf_items_t *sequence_object ); 73 | 74 | void pyolecf_items_free( 75 | pyolecf_items_t *sequence_object ); 76 | 77 | Py_ssize_t pyolecf_items_len( 78 | pyolecf_items_t *sequence_object ); 79 | 80 | PyObject *pyolecf_items_getitem( 81 | pyolecf_items_t *sequence_object, 82 | Py_ssize_t item_index ); 83 | 84 | PyObject *pyolecf_items_iter( 85 | pyolecf_items_t *sequence_object ); 86 | 87 | PyObject *pyolecf_items_iternext( 88 | pyolecf_items_t *sequence_object ); 89 | 90 | #if defined( __cplusplus ) 91 | } 92 | #endif 93 | 94 | #endif /* !defined( _PYOLECF_ITEMS_H ) */ 95 | 96 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_libbfio.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libbfio header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_LIBBFIO_H ) 23 | #define _PYOLECF_LIBBFIO_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBBFIO for local use of libbfio 28 | */ 29 | #if defined( HAVE_LOCAL_LIBBFIO ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #else 41 | 42 | /* If libtool DLL support is enabled set LIBBFIO_DLL_IMPORT 43 | * before including libbfio.h 44 | */ 45 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 46 | #define LIBBFIO_DLL_IMPORT 47 | #endif 48 | 49 | #include 50 | 51 | #endif /* defined( HAVE_LOCAL_LIBBFIO ) */ 52 | 53 | #endif /* !defined( _PYOLECF_LIBBFIO_H ) */ 54 | 55 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_libcerror.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcerror header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_LIBCERROR_H ) 23 | #define _PYOLECF_LIBCERROR_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCERROR for local use of libcerror 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCERROR ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCERROR_DLL_IMPORT 39 | * before including libcerror.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 42 | #define LIBCERROR_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCERROR ) */ 48 | 49 | #endif /* !defined( _PYOLECF_LIBCERROR_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_libclocale.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libclocale header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_LIBCLOCALE_H ) 23 | #define _PYOLECF_LIBCLOCALE_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCLOCALE for local use of libclocale 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCLOCALE ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCLOCALE_DLL_IMPORT 39 | * before including libclocale.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 42 | #define LIBCLOCALE_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCLOCALE ) */ 48 | 49 | #endif /* !defined( _PYOLECF_LIBCLOCALE_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_libfguid.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libfguid header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_LIBFGUID_H ) 23 | #define _PYOLECF_LIBFGUID_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBFGUID for local use of libfguid 28 | */ 29 | #if defined( HAVE_LOCAL_LIBFGUID ) 30 | 31 | #include 32 | #include 33 | #include 34 | 35 | #else 36 | 37 | /* If libtool DLL support is enabled set LIBFGUID_DLL_IMPORT 38 | * before including libfguid.h 39 | */ 40 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 41 | #define LIBFGUID_DLL_IMPORT 42 | #endif 43 | 44 | #include 45 | 46 | #endif 47 | 48 | #endif /* !defined( _PYOLECF_LIBFGUID_H ) */ 49 | 50 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_libolecf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The internal libolecf header 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_LIBOLECF_H ) 23 | #define _PYOLECF_LIBOLECF_H 24 | 25 | #include 26 | 27 | #include 28 | 29 | #endif /* !defined( _PYOLECF_LIBOLECF_H ) */ 30 | 31 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_property_set.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Python object wrapper of libolecf_property_set_t 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_PROPERTY_SET_H ) 23 | #define _PYOLECF_PROPERTY_SET_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_libolecf.h" 29 | #include "pyolecf_python.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | typedef struct pyolecf_property_set pyolecf_property_set_t; 36 | 37 | struct pyolecf_property_set 38 | { 39 | /* Python object initialization 40 | */ 41 | PyObject_HEAD 42 | 43 | /* The libolecf property set 44 | */ 45 | libolecf_property_set_t *property_set; 46 | 47 | /* The parent object 48 | */ 49 | PyObject *parent_object; 50 | }; 51 | 52 | extern PyMethodDef pyolecf_property_set_object_methods[]; 53 | extern PyTypeObject pyolecf_property_set_type_object; 54 | 55 | PyObject *pyolecf_property_set_new( 56 | libolecf_property_set_t *property_set, 57 | PyObject *parent_object ); 58 | 59 | int pyolecf_property_set_init( 60 | pyolecf_property_set_t *pyolecf_property_set ); 61 | 62 | void pyolecf_property_set_free( 63 | pyolecf_property_set_t *pyolecf_property_set ); 64 | 65 | PyObject *pyolecf_property_set_get_class_identifier( 66 | pyolecf_property_set_t *pyolecf_property_set, 67 | PyObject *arguments ); 68 | 69 | PyObject *pyolecf_property_set_get_number_of_sections( 70 | pyolecf_property_set_t *pyolecf_property_set, 71 | PyObject *arguments ); 72 | 73 | PyObject *pyolecf_property_set_get_section_by_index( 74 | PyObject *pyolecf_property_set, 75 | int section_index ); 76 | 77 | PyObject *pyolecf_property_set_get_section( 78 | pyolecf_property_set_t *pyolecf_property_set, 79 | PyObject *arguments, 80 | PyObject *keywords ); 81 | 82 | PyObject *pyolecf_property_set_get_sections( 83 | pyolecf_property_set_t *pyolecf_property_set, 84 | PyObject *arguments ); 85 | 86 | #if defined( __cplusplus ) 87 | } 88 | #endif 89 | 90 | #endif /* !defined( _PYOLECF_PROPERTY_SET_H ) */ 91 | 92 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_property_set_stream.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Python object definition of the libolecf property set stream 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_PROPERTY_SET_STREAM_H ) 23 | #define _PYOLECF_PROPERTY_SET_STREAM_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_item.h" 29 | #include "pyolecf_python.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | extern PyMethodDef pyolecf_property_set_stream_object_methods[]; 36 | extern PyTypeObject pyolecf_property_set_stream_type_object; 37 | 38 | PyObject *pyolecf_property_set_stream_get_set( 39 | pyolecf_item_t *pyolecf_item, 40 | PyObject *arguments ); 41 | 42 | #if defined( __cplusplus ) 43 | } 44 | #endif 45 | 46 | #endif /* !defined( _PYOLECF_PROPERTY_SET_STREAM_H ) */ 47 | 48 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_python.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The python header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_PYTHON_H ) 23 | #define _PYOLECF_PYTHON_H 24 | 25 | #include 26 | 27 | #if PY_MAJOR_VERSION < 3 28 | 29 | /* Fix defines in pyconfig.h 30 | */ 31 | #undef _POSIX_C_SOURCE 32 | #undef _XOPEN_SOURCE 33 | 34 | /* Fix defines in pyport.h 35 | */ 36 | #undef HAVE_FSTAT 37 | #undef HAVE_STAT 38 | #undef HAVE_SSIZE_T 39 | #undef HAVE_INT32_T 40 | #undef HAVE_UINT32_T 41 | #undef HAVE_INT64_T 42 | #undef HAVE_UINT64_T 43 | 44 | #endif /* PY_MAJOR_VERSION < 3 */ 45 | 46 | /* Define PY_SSIZE_T_CLEAN to silence: 47 | * DeprecationWarning: PY_SSIZE_T_CLEAN will be required for '#' formats 48 | * 49 | * PY_SSIZE_T_CLEAN was introduced in Python 2.5 50 | */ 51 | #define PY_SSIZE_T_CLEAN 52 | 53 | #include 54 | 55 | /* Python compatibility macros 56 | */ 57 | #if !defined( PyMODINIT_FUNC ) 58 | #if PY_MAJOR_VERSION >= 3 59 | #define PyMODINIT_FUNC PyObject * 60 | #else 61 | #define PyMODINIT_FUNC void 62 | #endif 63 | #endif /* !defined( PyMODINIT_FUNC ) */ 64 | 65 | #if !defined( PyVarObject_HEAD_INIT ) 66 | #define PyVarObject_HEAD_INIT( type, size ) \ 67 | PyObject_HEAD_INIT( type ) \ 68 | size, 69 | 70 | #endif /* !defined( PyVarObject_HEAD_INIT ) */ 71 | 72 | #if PY_MAJOR_VERSION >= 3 73 | #define Py_TPFLAGS_HAVE_ITER 0 74 | #endif 75 | 76 | #if !defined( Py_TYPE ) 77 | #define Py_TYPE( object ) \ 78 | ( ( (PyObject *) object )->ob_type ) 79 | 80 | #endif /* !defined( Py_TYPE ) */ 81 | 82 | #endif /* !defined( _PYOLECF_PYTHON_H ) */ 83 | 84 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_stream.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Python object definition of the libolecf stream 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_STREAM_H ) 23 | #define _PYOLECF_STREAM_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_item.h" 29 | #include "pyolecf_python.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | extern PyMethodDef pyolecf_stream_object_methods[]; 36 | extern PyTypeObject pyolecf_stream_type_object; 37 | 38 | PyObject *pyolecf_stream_read_buffer( 39 | pyolecf_item_t *pyolecf_item, 40 | PyObject *arguments, 41 | PyObject *keywords ); 42 | 43 | PyObject *pyolecf_stream_read_buffer_at_offset( 44 | pyolecf_item_t *pyolecf_item, 45 | PyObject *arguments, 46 | PyObject *keywords ); 47 | 48 | PyObject *pyolecf_stream_seek_offset( 49 | pyolecf_item_t *pyolecf_item, 50 | PyObject *arguments, 51 | PyObject *keywords ); 52 | 53 | PyObject *pyolecf_stream_get_offset( 54 | pyolecf_item_t *pyolecf_item, 55 | PyObject *arguments ); 56 | 57 | #if defined( __cplusplus ) 58 | } 59 | #endif 60 | 61 | #endif /* !defined( _PYOLECF_STREAM_H ) */ 62 | 63 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_unused.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Definitions to silence compiler warnings about unused function attributes/parameters. 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_UNUSED_H ) 23 | #define _PYOLECF_UNUSED_H 24 | 25 | #include 26 | 27 | #if !defined( PYOLECF_ATTRIBUTE_UNUSED ) 28 | #if defined( __GNUC__ ) && __GNUC__ >= 3 29 | #define PYOLECF_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 30 | #else 31 | #define PYOLECF_ATTRIBUTE_UNUSED 32 | #endif 33 | #endif 34 | 35 | #if defined( _MSC_VER ) 36 | #define PYOLECF_UNREFERENCED_PARAMETER( parameter ) \ 37 | UNREFERENCED_PARAMETER( parameter ); 38 | #else 39 | #define PYOLECF_UNREFERENCED_PARAMETER( parameter ) \ 40 | /* parameter */ 41 | #endif 42 | 43 | #endif /* !defined( _PYOLECF_UNUSED_H ) */ 44 | 45 | -------------------------------------------------------------------------------- /pyolecf/pyolecf_value_types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Python object definition of the libolecf value types 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _PYOLECF_VALUE_TYPES_H ) 23 | #define _PYOLECF_VALUE_TYPES_H 24 | 25 | #include 26 | #include 27 | 28 | #include "pyolecf_libolecf.h" 29 | #include "pyolecf_python.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | typedef struct pyolecf_value_types pyolecf_value_types_t; 36 | 37 | struct pyolecf_value_types 38 | { 39 | /* Python object initialization 40 | */ 41 | PyObject_HEAD 42 | }; 43 | 44 | extern PyTypeObject pyolecf_value_types_type_object; 45 | 46 | int pyolecf_value_types_init_type( 47 | PyTypeObject *type_object ); 48 | 49 | PyObject *pyolecf_value_types_new( 50 | void ); 51 | 52 | int pyolecf_value_types_init( 53 | pyolecf_value_types_t *pyolecf_value_types ); 54 | 55 | void pyolecf_value_types_free( 56 | pyolecf_value_types_t *pyolecf_value_types ); 57 | 58 | #if defined( __cplusplus ) 59 | } 60 | #endif 61 | 62 | #endif /* !defined( _PYOLECF_VALUE_TYPES_H ) */ 63 | 64 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools", "wheel"] 3 | build-backend = "setuptools.build_meta" 4 | 5 | -------------------------------------------------------------------------------- /runtests.ps1: -------------------------------------------------------------------------------- 1 | # Script that runs the tests 2 | # 3 | # Version: 20220103 4 | 5 | $ExitSuccess = 0 6 | $ExitFailure = 1 7 | $ExitIgnore = 77 8 | 9 | Set-Location -Path "tests" 10 | 11 | $Result = ${ExitSuccess} 12 | 13 | $Lines = Get-Content "Makefile.am" 14 | $InTests = $FALSE 15 | 16 | Foreach (${Line} in ${Lines}) 17 | { 18 | If (${InTests}) 19 | { 20 | If (-Not ${Line}) 21 | { 22 | ${InTests} = $FALSE 23 | 24 | Continue 25 | } 26 | ${Line} = ${Line}.TrimStart() 27 | 28 | If (${Line}.EndsWith(" \")) 29 | { 30 | ${Line} = ${Line}.Substring(0, ${Line}.Length - 2) 31 | } 32 | If (-Not (${Line}.EndsWith(".sh"))) 33 | { 34 | Continue 35 | } 36 | ${Line} = ${Line}.Substring(0, ${Line}.Length - 3) 37 | ${Line} = ".\${Line}.ps1" 38 | 39 | Try 40 | { 41 | Invoke-Expression ${Line} 42 | } 43 | Catch 44 | { 45 | $LastExitCode = ${ExitIgnore} 46 | } 47 | If (${LastExitCode} -eq ${ExitFailure}) 48 | { 49 | $Result = ${ExitFailure} 50 | Write-Host "FAIL" -foreground Red -nonewline 51 | } 52 | ElseIf (${LastExitCode} -eq ${ExitIgnore}) 53 | { 54 | Write-Host "SKIP" -foreground Cyan -nonewline 55 | } 56 | Else 57 | { 58 | Write-Host "PASS" -foreground Green -nonewline 59 | } 60 | Write-Host ": ${Line}" 61 | } 62 | ElseIf (${Line}.StartsWith("TESTS = ")) 63 | { 64 | ${InTests} = $TRUE 65 | } 66 | } 67 | 68 | Set-Location -Path ".." 69 | 70 | Exit ${Result} 71 | -------------------------------------------------------------------------------- /setup.cfg.in: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = libolecf-python 3 | version = @VERSION@ 4 | description = Python bindings module for libolecf 5 | long_description = Python bindings module for libolecf 6 | long_description_content_type = text/plain 7 | author = Joachim Metz 8 | author_email = joachim.metz@gmail.com 9 | license = GNU Lesser General Public License v3 or later (LGPLv3+) 10 | license_files = COPYING COPYING.LESSER 11 | classifiers = 12 | Development Status :: 3 - Alpha 13 | Programming Language :: Python 14 | 15 | [options] 16 | python_requires = >=3.7 17 | -------------------------------------------------------------------------------- /syncdokan.ps1: -------------------------------------------------------------------------------- 1 | # Script that synchronizes dokan 2 | # 3 | # Version: 20190810 4 | 5 | Param ( 6 | [switch]$UseHead = $false, 7 | [switch]$UseLegacyVersion = $false 8 | ) 9 | 10 | $Git = "git" 11 | 12 | If (${UseLegacyVersion}) 13 | { 14 | # Patched version of dokan 0.6.0 15 | $GitUrl = "https://github.com/joachimmetz/dokan.git" 16 | $Destination = "..\dokan" 17 | } 18 | Else 19 | { 20 | $GitUrl = "https://github.com/dokan-dev/dokany.git" 21 | $Destination = "..\dokany" 22 | } 23 | 24 | # PowerShell will raise NativeCommandError if git writes to stdout or stderr 25 | # therefore 2>&1 is added and the output is stored in a variable. 26 | $Output = Invoke-Expression -Command "${Git} clone ${GitUrl} ${Destination} 2>&1" 27 | 28 | Push-Location ${Destination} 29 | 30 | Try 31 | { 32 | $Output = Invoke-Expression -Command "${Git} fetch --quiet --all --tags --prune 2>&1" 33 | 34 | $LatestTag = Invoke-Expression -Command "${Git} describe --tags --abbrev=0 2>&1" 35 | 36 | If (${LatestTag} -and -not ${UseHead}) 37 | { 38 | Write-Host "Synchronizing: dokan from ${GitUrl} tag ${LatestTag}" 39 | 40 | $Output = Invoke-Expression -Command "${Git} checkout --quiet tags/${LatestTag} 2>&1" 41 | } 42 | Else 43 | { 44 | Write-Host "Synchronizing: dokan from ${GitUrl} HEAD" 45 | } 46 | If (-Not ${UseLegacyVersion}) 47 | { 48 | # AppVeyor does not come with platform toolset version 142 49 | ((Get-Content -Path "..\dokany\dokan\dokan.vcxproj" -Raw) -Replace 'v142','v141') | Set-Content -Path "..\dokany\dokan\dokan.vcxproj" 50 | } 51 | } 52 | Finally 53 | { 54 | Pop-Location 55 | } 56 | 57 | -------------------------------------------------------------------------------- /synctestdata.ps1: -------------------------------------------------------------------------------- 1 | # Script that synchronizes the local test data 2 | # 3 | # Version: 20230709 4 | 5 | $TestSet = "public" 6 | $TestInputDirectory = "tests/input" 7 | $TestFiles = "1b4dd67f29cb1962.automaticDestinations-ms 9d1f905ce5044aee.automaticDestinations-ms" 8 | 9 | If (-Not (Test-Path ${TestInputDirectory})) 10 | { 11 | New-Item -Name ${TestInputDirectory} -ItemType "directory" | Out-Null 12 | } 13 | If (-Not (Test-Path "${TestInputDirectory}\${TestSet}")) 14 | { 15 | New-Item -Name "${TestInputDirectory}\${TestSet}" -ItemType "directory" | Out-Null 16 | } 17 | ForEach ($TestFile in ${TestFiles} -split " ") 18 | { 19 | $Url = "https://github.com/log2timeline/plaso/blob/main/test_data/automatic_destinations/${TestFile}?raw=true" 20 | 21 | Invoke-WebRequest -Uri ${Url} -OutFile "${TestInputDirectory}\${TestSet}\${TestFile}" 22 | } 23 | 24 | -------------------------------------------------------------------------------- /synctestdata.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Script that synchronizes the local test data 3 | # 4 | # Version: 20161009 5 | 6 | TEST_SET="public"; 7 | TEST_INPUT_DIRECTORY="tests/input"; 8 | TEST_FILES="1b4dd67f29cb1962.automaticDestinations-ms 9d1f905ce5044aee.automaticDestinations-ms"; 9 | 10 | mkdir -p "${TEST_INPUT_DIRECTORY}/${TEST_SET}"; 11 | 12 | for TEST_FILE in ${TEST_FILES}; 13 | do 14 | URL="https://github.com/log2timeline/plaso/blob/main/test_data/automatic_destinations/${TEST_FILE}?raw=true"; 15 | 16 | curl -L -o "${TEST_INPUT_DIRECTORY}/${TEST_SET}/${TEST_FILE}" ${URL}; 17 | done 18 | 19 | -------------------------------------------------------------------------------- /tests/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Script to build from source 3 | # 4 | # Version: 20201121 5 | 6 | set -e 7 | 8 | ./synclibs.sh --use-head 9 | ./autogen.sh 10 | ./configure "$@" 11 | make > /dev/null 12 | 13 | -------------------------------------------------------------------------------- /tests/data/file_header.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libyal/libolecf/493b01945f7d2936bb722c8eb6586d6b9d2bd67f/tests/data/file_header.1 -------------------------------------------------------------------------------- /tests/data/property_section_list_entry.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libyal/libolecf/493b01945f7d2936bb722c8eb6586d6b9d2bd67f/tests/data/property_section_list_entry.1 -------------------------------------------------------------------------------- /tests/data/property_set_header.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libyal/libolecf/493b01945f7d2936bb722c8eb6586d6b9d2bd67f/tests/data/property_set_header.1 -------------------------------------------------------------------------------- /tests/lsan.suppressions: -------------------------------------------------------------------------------- 1 | leak:/lib*/libpython* 2 | -------------------------------------------------------------------------------- /tests/olecf_test_functions.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Functions for testing 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_FUNCTIONS_H ) 23 | #define _OLECF_TEST_FUNCTIONS_H 24 | 25 | #include 26 | #include 27 | 28 | #include "olecf_test_libbfio.h" 29 | #include "olecf_test_libcerror.h" 30 | 31 | #if defined( __cplusplus ) 32 | extern "C" { 33 | #endif 34 | 35 | int olecf_test_get_narrow_source( 36 | const system_character_t *source, 37 | char *narrow_string, 38 | size_t narrow_string_size, 39 | libcerror_error_t **error ); 40 | 41 | #if defined( HAVE_WIDE_CHARACTER_TYPE ) 42 | 43 | int olecf_test_get_wide_source( 44 | const system_character_t *source, 45 | wchar_t *wide_string, 46 | size_t wide_string_size, 47 | libcerror_error_t **error ); 48 | 49 | #endif /* defined( HAVE_WIDE_CHARACTER_TYPE ) */ 50 | 51 | int olecf_test_open_file_io_handle( 52 | libbfio_handle_t **file_io_handle, 53 | uint8_t *data, 54 | size_t data_size, 55 | libcerror_error_t **error ); 56 | 57 | int olecf_test_close_file_io_handle( 58 | libbfio_handle_t **file_io_handle, 59 | libcerror_error_t **error ); 60 | 61 | #if defined( __cplusplus ) 62 | } 63 | #endif 64 | 65 | #endif /* !defined( _OLECF_TEST_FUNCTIONS_H ) */ 66 | 67 | -------------------------------------------------------------------------------- /tests/olecf_test_getopt.h: -------------------------------------------------------------------------------- 1 | /* 2 | * GetOpt functions 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_GETOPT_H ) 23 | #define _OLECF_TEST_GETOPT_H 24 | 25 | #include 26 | #include 27 | 28 | /* unistd.h is included here to export getopt, optarg, optind and optopt 29 | */ 30 | #if defined( HAVE_UNISTD_H ) 31 | #include 32 | #endif 33 | 34 | #if defined( __cplusplus ) 35 | extern "C" { 36 | #endif 37 | 38 | #if defined( HAVE_GETOPT ) 39 | #define olecf_test_getopt( argument_count, argument_values, options_string ) \ 40 | getopt( argument_count, argument_values, options_string ) 41 | 42 | #else 43 | 44 | #if !defined( __CYGWIN__ ) 45 | extern int optind; 46 | extern system_character_t *optarg; 47 | extern system_integer_t optopt; 48 | 49 | #else 50 | int optind; 51 | system_character_t *optarg; 52 | system_integer_t optopt; 53 | 54 | #endif /* !defined( __CYGWIN__ ) */ 55 | 56 | system_integer_t olecf_test_getopt( 57 | int argument_count, 58 | system_character_t * const argument_values[], 59 | const system_character_t *options_string ); 60 | 61 | #endif /* defined( HAVE_GETOPT ) */ 62 | 63 | #if defined( __cplusplus ) 64 | } 65 | #endif 66 | 67 | #endif /* !defined( _OLECF_TEST_GETOPT_H ) */ 68 | 69 | -------------------------------------------------------------------------------- /tests/olecf_test_libbfio.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libbfio header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_LIBBFIO_H ) 23 | #define _OLECF_TEST_LIBBFIO_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBBFIO for local use of libbfio 28 | */ 29 | #if defined( HAVE_LOCAL_LIBBFIO ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #else 41 | 42 | /* If libtool DLL support is enabled set LIBBFIO_DLL_IMPORT 43 | * before including libbfio.h 44 | */ 45 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 46 | #define LIBBFIO_DLL_IMPORT 47 | #endif 48 | 49 | #include 50 | 51 | #if defined( HAVE_MULTI_THREAD_SUPPORT ) && !defined( LIBBFIO_HAVE_MULTI_THREAD_SUPPORT ) 52 | #error Multi-threading support requires libbfio with multi-threading support 53 | #endif 54 | 55 | #endif /* defined( HAVE_LOCAL_LIBBFIO ) */ 56 | 57 | #endif /* !defined( _OLECF_TEST_LIBBFIO_H ) */ 58 | 59 | -------------------------------------------------------------------------------- /tests/olecf_test_libcdata.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcdata header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_LIBCDATA_H ) 23 | #define _OLECF_TEST_LIBCDATA_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCDATA for local use of libcdata 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCDATA ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #else 41 | 42 | /* If libtool DLL support is enabled set LIBCDATA_DLL_IMPORT 43 | * before including libcdata.h 44 | */ 45 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 46 | #define LIBCDATA_DLL_IMPORT 47 | #endif 48 | 49 | #include 50 | 51 | #endif /* defined( HAVE_LOCAL_LIBCDATA ) */ 52 | 53 | #endif /* !defined( _OLECF_TEST_LIBCDATA_H ) */ 54 | 55 | -------------------------------------------------------------------------------- /tests/olecf_test_libcerror.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcerror header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_LIBCERROR_H ) 23 | #define _OLECF_TEST_LIBCERROR_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCERROR for local use of libcerror 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCERROR ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCERROR_DLL_IMPORT 39 | * before including libcerror.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 42 | #define LIBCERROR_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCERROR ) */ 48 | 49 | #endif /* !defined( _OLECF_TEST_LIBCERROR_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /tests/olecf_test_libclocale.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libclocale header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_LIBCLOCALE_H ) 23 | #define _OLECF_TEST_LIBCLOCALE_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCLOCALE for local use of libclocale 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCLOCALE ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCLOCALE_DLL_IMPORT 39 | * before including libclocale.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 42 | #define LIBCLOCALE_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCLOCALE ) */ 48 | 49 | #endif /* !defined( _OLECF_TEST_LIBCLOCALE_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /tests/olecf_test_libcnotify.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcnotify header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_LIBCNOTIFY_H ) 23 | #define _OLECF_TEST_LIBCNOTIFY_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCNOTIFY for local use of libcnotify 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCNOTIFY ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #else 37 | 38 | /* If libtool DLL support is enabled set LIBCNOTIFY_DLL_IMPORT 39 | * before including libcnotify.h 40 | */ 41 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 42 | #define LIBCNOTIFY_DLL_IMPORT 43 | #endif 44 | 45 | #include 46 | 47 | #endif /* defined( HAVE_LOCAL_LIBCNOTIFY ) */ 48 | 49 | #endif /* !defined( _OLECF_TEST_LIBCNOTIFY_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /tests/olecf_test_libcpath.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libcpath header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_LIBCPATH_H ) 23 | #define _OLECF_TEST_LIBCPATH_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBCPATH for local use of libcpath 28 | */ 29 | #if defined( HAVE_LOCAL_LIBCPATH ) 30 | 31 | #include 32 | #include 33 | 34 | #else 35 | 36 | /* If libtool DLL support is enabled set LIBCPATH_DLL_IMPORT 37 | * before including libcpath.h 38 | */ 39 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 40 | #define LIBCPATH_DLL_IMPORT 41 | #endif 42 | 43 | #include 44 | 45 | #endif /* defined( HAVE_LOCAL_LIBCPATH ) */ 46 | 47 | #endif /* !defined( _OLECF_TEST_LIBCPATH_H ) */ 48 | 49 | -------------------------------------------------------------------------------- /tests/olecf_test_libolecf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libolecf header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_LIBOLECF_H ) 23 | #define _OLECF_TEST_LIBOLECF_H 24 | 25 | #include 26 | 27 | #include 28 | 29 | #endif /* !defined( _OLECF_TEST_LIBOLECF_H ) */ 30 | 31 | -------------------------------------------------------------------------------- /tests/olecf_test_libuna.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The libuna header wrapper 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_LIBUNA_H ) 23 | #define _OLECF_TEST_LIBUNA_H 24 | 25 | #include 26 | 27 | /* Define HAVE_LOCAL_LIBUNA for local use of libuna 28 | */ 29 | #if defined( HAVE_LOCAL_LIBUNA ) 30 | 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #include 44 | #include 45 | 46 | #else 47 | 48 | /* If libtool DLL support is enabled set LIBUNA_DLL_IMPORT 49 | * before including libuna.h 50 | */ 51 | #if defined( _WIN32 ) && defined( DLL_IMPORT ) 52 | #define LIBUNA_DLL_IMPORT 53 | #endif 54 | 55 | #include 56 | 57 | #endif /* defined( HAVE_LOCAL_LIBUNA ) */ 58 | 59 | #endif /* !defined( _OLECF_TEST_LIBUNA_H ) */ 60 | 61 | -------------------------------------------------------------------------------- /tests/olecf_test_memory.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Memory allocation functions for testing 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_MEMORY_H ) 23 | #define _OLECF_TEST_MEMORY_H 24 | 25 | #include 26 | 27 | #if defined( __cplusplus ) 28 | extern "C" { 29 | #endif 30 | 31 | #if defined( HAVE_GNU_DL_DLSYM ) && defined( __GNUC__ ) && !defined( LIBOLECF_DLL_IMPORT ) && !defined( __arm__ ) && !defined( __clang__ ) && !defined( __CYGWIN__ ) && !defined( __hppa__ ) && !defined( __loongarch__ ) && !defined( __mips__ ) && !defined( __riscv ) && !defined( __sparc__ ) && !defined( HAVE_ASAN ) 32 | #define HAVE_OLECF_TEST_MEMORY 1 33 | #endif 34 | 35 | #if defined( HAVE_OLECF_TEST_MEMORY ) 36 | 37 | extern int olecf_test_malloc_attempts_before_fail; 38 | 39 | extern int olecf_test_memcpy_attempts_before_fail; 40 | 41 | extern int olecf_test_memset_attempts_before_fail; 42 | 43 | extern int olecf_test_realloc_attempts_before_fail; 44 | 45 | #endif /* defined( HAVE_OLECF_TEST_MEMORY ) */ 46 | 47 | #if defined( __cplusplus ) 48 | } 49 | #endif 50 | 51 | #endif /* !defined( _OLECF_TEST_MEMORY_H ) */ 52 | 53 | -------------------------------------------------------------------------------- /tests/olecf_test_unused.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Definitions to silence compiler warnings about unused function attributes/parameters. 3 | * 4 | * Copyright (C) 2008-2024, Joachim Metz 5 | * 6 | * Refer to AUTHORS for acknowledgements. 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as published by 10 | * the Free Software Foundation, either version 3 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined( _OLECF_TEST_UNUSED_H ) 23 | #define _OLECF_TEST_UNUSED_H 24 | 25 | #include 26 | 27 | #if !defined( OLECF_TEST_ATTRIBUTE_UNUSED ) 28 | 29 | #if defined( __GNUC__ ) && __GNUC__ >= 3 30 | #define OLECF_TEST_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 31 | 32 | #else 33 | #define OLECF_TEST_ATTRIBUTE_UNUSED 34 | 35 | #endif /* defined( __GNUC__ ) && __GNUC__ >= 3 */ 36 | 37 | #endif /* !defined( OLECF_TEST_ATTRIBUTE_UNUSED ) */ 38 | 39 | #if defined( _MSC_VER ) 40 | #define OLECF_TEST_UNREFERENCED_PARAMETER( parameter ) \ 41 | UNREFERENCED_PARAMETER( parameter ); 42 | 43 | #else 44 | #define OLECF_TEST_UNREFERENCED_PARAMETER( parameter ) \ 45 | /* parameter */ 46 | 47 | #endif /* defined( _MSC_VER ) */ 48 | 49 | #endif /* !defined( _OLECF_TEST_UNUSED_H ) */ 50 | 51 | -------------------------------------------------------------------------------- /tests/pkgbuild.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Script to build a MacOS pkg 3 | # 4 | # Version: 20201121 5 | 6 | set -e 7 | 8 | make install DESTDIR=${PWD}/osx-pkg 9 | mkdir -p ${PWD}/osx-pkg/usr/share/doc/libolecf 10 | cp AUTHORS COPYING COPYING.LESSER NEWS README ${PWD}/osx-pkg/usr/share/doc/libolecf 11 | 12 | VERSION=`sed '5!d; s/^ \[//;s/\],$//' configure.ac` 13 | pkgbuild --root osx-pkg --identifier com.github.libyal.libolecf --version ${VERSION} --ownership recommended ../libolecf-${VERSION}.pkg 14 | 15 | -------------------------------------------------------------------------------- /tests/runtests.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Script to run Python test scripts. 4 | # 5 | # Version: 20231024 6 | 7 | import glob 8 | import os 9 | import sys 10 | import unittest 11 | 12 | 13 | test_profile = ".pyolecf" 14 | input_glob = "*" 15 | option_sets = [] 16 | 17 | 18 | def ReadIgnoreList(test_profile): 19 | """Reads the test profile ignore file if it exists. 20 | 21 | Args: 22 | test_profile (str): test profile. 23 | 24 | Returns: 25 | set[str]: ignore list. 26 | """ 27 | ignore_file_path = os.path.join("tests", "input", test_profile, "ignore") 28 | if os.path.isfile(ignore_file_path): 29 | with open(ignore_file_path, "r", encoding="utf-8") as file_object: 30 | return set([line.strip() for line in file_object.readlines()]) 31 | 32 | return set() 33 | 34 | 35 | if __name__ == "__main__": 36 | print(f"Using Python version {sys.version!s}") 37 | 38 | test_loader = unittest.TestLoader() 39 | test_runner = unittest.TextTestRunner(verbosity=2) 40 | 41 | test_scripts = test_loader.discover("tests", pattern="*.py") 42 | 43 | ignore_list = ReadIgnoreList(test_profile) 44 | 45 | test_set = None 46 | source_file = None 47 | 48 | for test_set in glob.glob(os.path.join("tests", "input", "*")): 49 | test_set = test_set.rsplit(os.path.sep, maxsplit=1)[-1] 50 | if not test_set or test_set[0] == '.' or test_set in ignore_list: 51 | continue 52 | 53 | source_files = glob.glob(os.path.join( 54 | "tests", "input", test_set, input_glob)) 55 | if source_files: 56 | source_file = source_files[0] 57 | break 58 | 59 | setattr(unittest, "source", source_file) 60 | 61 | if source_file: 62 | for option_set in option_sets: 63 | test_file = os.path.basename(source_file) 64 | test_options_file_path = os.path.join( 65 | "tests", "input", test_profile, test_set, 66 | f"{test_file:s}.{option_set:s}") 67 | if os.path.isfile(test_options_file_path): 68 | with open(test_options_file_path, "r", encoding="utf-8") as file_object: 69 | lines = [line.strip() for line in file_object.readlines()] 70 | if lines[0] == "# libyal test data options": 71 | for line in lines[1:]: 72 | key, value = line.split("=", maxsplit=1) 73 | if key == 'offset': 74 | value = int(value) 75 | 76 | setattr(unittest, key, value) 77 | 78 | test_results = test_runner.run(test_scripts) 79 | if not test_results.wasSuccessful(): 80 | sys.exit(1) 81 | -------------------------------------------------------------------------------- /tests/runtests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Script to run tests 3 | # 4 | # Version: 20201121 5 | 6 | if test -f ${PWD}/libolecf/.libs/libolecf.1.dylib && test -f ./pyolecf/.libs/pyolecf.so; 7 | then 8 | install_name_tool -change /usr/local/lib/libolecf.1.dylib ${PWD}/libolecf/.libs/libolecf.1.dylib ./pyolecf/.libs/pyolecf.so; 9 | fi 10 | 11 | make check CHECK_WITH_STDERR=1; 12 | RESULT=$?; 13 | 14 | if test ${RESULT} -ne 0 && test -f tests/test-suite.log; 15 | then 16 | cat tests/test-suite.log; 17 | fi 18 | exit ${RESULT}; 19 | 20 | -------------------------------------------------------------------------------- /tests/syncsharedlibs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Script that synchronizes the shared library dependencies 3 | # 4 | # Version: 20201121 5 | 6 | EXIT_SUCCESS=0; 7 | EXIT_FAILURE=1; 8 | 9 | GIT_URL_PREFIX="https://github.com/libyal"; 10 | SHARED_LIBS="libcerror libcthreads libcdata libclocale libcnotify libcsplit libuna libcfile libcpath libbfio libfdatetime libfguid libfole libfvalue libfwps"; 11 | 12 | USE_HEAD=""; 13 | 14 | if test "$1" = "--use-head"; 15 | then 16 | USE_HEAD="--use-head"; 17 | fi 18 | 19 | OLDIFS=$IFS; 20 | IFS=" "; 21 | 22 | for SHARED_LIB in ${SHARED_LIBS}; 23 | do 24 | GIT_URL="${GIT_URL_PREFIX}/${SHARED_LIB}.git"; 25 | 26 | git clone --quiet ${GIT_URL} ${SHARED_LIB}-$$; 27 | 28 | if ! test -d ${SHARED_LIB}-$$; 29 | then 30 | echo "Unable to git clone: ${GIT_URL}"; 31 | 32 | IFS=$OLDIFS; 33 | 34 | exit ${EXIT_FAILURE}; 35 | fi 36 | (cd ${SHARED_LIB}-$$ && git fetch --quiet --all --tags --prune) 37 | 38 | LATEST_TAG=`cd ${SHARED_LIB}-$$ && git describe --tags --abbrev=0`; 39 | 40 | if test -n ${LATEST_TAG} && test -z ${USE_HEAD}; 41 | then 42 | echo "Synchronizing: ${SHARED_LIB} from ${GIT_URL} tag ${LATEST_TAG}"; 43 | 44 | (cd ${SHARED_LIB}-$$ && git checkout --quiet tags/${LATEST_TAG}); 45 | else 46 | echo "Synchronizing: ${SHARED_LIB} from ${GIT_URL} HEAD"; 47 | fi 48 | 49 | (cd ${SHARED_LIB}-$$ && ./synclibs.sh ${USE_HEAD} && ./autogen.sh); 50 | 51 | CONFIGURE_OPTIONS=""; 52 | 53 | (cd ${SHARED_LIB}-$$ && ./configure --help | grep -- '--enable-wide-character-type' > /dev/null); 54 | 55 | if test $? -eq 0; 56 | then 57 | CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} --enable-wide-character-type"; 58 | fi 59 | 60 | (cd ${SHARED_LIB}-$$ && ./configure --prefix=/usr ${CONFIGURE_OPTIONS} && make && sudo make install); 61 | 62 | rm -rf ${SHARED_LIB}-$$; 63 | done 64 | 65 | IFS=$OLDIFS; 66 | 67 | exit ${EXIT_SUCCESS}; 68 | 69 | -------------------------------------------------------------------------------- /tests/test_manpage.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Tests man pages. 3 | # 4 | # Version: 20240413 5 | 6 | EXIT_SUCCESS=0; 7 | EXIT_FAILURE=1; 8 | EXIT_IGNORE=77; 9 | 10 | run_test() 11 | { 12 | local INPUT_FILE=$1; 13 | local RESULT=0 14 | 15 | TEST_NAME=`basename ${INPUT_FILE}`; 16 | echo -n "Testing man with input: ${TEST_NAME}"; 17 | 18 | LC_ALL=en_US.UTF-8 MANROFFSEQ='' MANWIDTH=80 man --warnings -E UTF-8 -l -Tutf8 -Z ${INPUT_FILE} > /dev/null 2> ${TMPDIR}/${TEST_NAME}.warnings; 19 | RESULT=$?; 20 | 21 | # For now line break warnings are ignored. 22 | if test -f ${TMPDIR}/${TEST_NAME}.warnings; 23 | then 24 | sed "/can't break line/ d" -i ${TMPDIR}/${TEST_NAME}.warnings; 25 | fi 26 | if test -s ${TMPDIR}/${TEST_NAME}.warnings; 27 | then 28 | RESULT=${EXIT_FAILURE}; 29 | fi 30 | if test ${RESULT} -ne ${EXIT_SUCCESS}; 31 | then 32 | echo " (FAIL)"; 33 | else 34 | echo " (PASS)"; 35 | fi 36 | if test -s ${TMPDIR}/${TEST_NAME}.warnings; 37 | then 38 | cat ${TMPDIR}/${TEST_NAME}.warnings; 39 | fi 40 | return ${RESULT}; 41 | } 42 | 43 | if test "${OSTYPE}" = "msys"; 44 | then 45 | exit ${EXIT_IGNORE}; 46 | fi 47 | 48 | TEST_DIRECTORY=`dirname $0`; 49 | 50 | TEST_RUNNER="${TEST_DIRECTORY}/test_runner.sh"; 51 | 52 | if ! test -f "${TEST_RUNNER}"; 53 | then 54 | echo "Missing test runner: ${TEST_RUNNER}"; 55 | 56 | exit ${EXIT_FAILURE}; 57 | fi 58 | 59 | source ${TEST_RUNNER}; 60 | 61 | assert_availability_binary man; 62 | 63 | RESULT=${EXIT_IGNORE}; 64 | 65 | TMPDIR="tmp$$"; 66 | 67 | rm -rf ${TMPDIR}; 68 | mkdir ${TMPDIR}; 69 | 70 | MANUALS_PATH="../manuals"; 71 | 72 | if ! test -d ${MANUALS_PATH}; 73 | then 74 | MANUALS_PATH="manuals"; 75 | fi 76 | 77 | if ! test -d ${MANUALS_PATH}; 78 | then 79 | echo "Manuals directory not found."; 80 | 81 | exit ${EXIT_IGNORE}; 82 | fi 83 | 84 | for INPUT_FILE in ${MANUALS_PATH}/*.[13]; 85 | do 86 | run_test "${INPUT_FILE}"; 87 | RESULT=$?; 88 | 89 | if test ${RESULT} -ne ${EXIT_SUCCESS}; 90 | then 91 | break; 92 | fi 93 | done 94 | 95 | rm -rf ${TMPDIR}; 96 | 97 | exit ${RESULT}; 98 | 99 | -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | envlist = auditwheel,py3{7,8,9,10,11,12} 3 | 4 | [testenv] 5 | usedevelop = True 6 | pip_pre = True 7 | passenv = 8 | CFLAGS 9 | CPPFLAGS 10 | INCLUDE 11 | LDFLAGS 12 | LIB 13 | deps = 14 | build 15 | setuptools >= 65 16 | wheel 17 | commands = 18 | python -m build --no-isolation --outdir=dist --wheel 19 | python -m pip install --no-index --find-links=dist libolecf-python 20 | python tests/runtests.py 21 | 22 | [testenv:auditwheel] 23 | usedevelop = True 24 | pip_pre = True 25 | deps = 26 | auditwheel 27 | setuptools >= 65 28 | commands = 29 | python -m auditwheel repair {posargs} 30 | --------------------------------------------------------------------------------