xyproto/tinyxxd
Drop-in cross-platform replacement and standalone version of the hex dump utility that comes with ViM. Licensed only under MIT and/or GPL2 (dual license).
19 Releases
Latest: 1mo ago
tinyxxd 1.3.16v1.3.16Latest
📋 Changes
- Improve the Makefile so that fuzzing also works on Fedora.
- Use `%08lu` as a format string instead of `%08ld` in connection with the `-d` flag (thanks @mattn).
tinyxxd 1.3.15v1.3.15
📋 Changes
- Fix an issue with `\r` handling.
- Fix a padding bug in `hex_littleendian`.
- Performance improvements.
- Improve color handling, inspired by https://github.com/vim/vim/commit/1578ea9d97aefcdd6e89774d274ad0f440c34383, thanks @h-east.
- Respect the `NO_COLOR` environment variable.
- Use `strtoll` for `xxd->length`.
- Update CI configuration.
- Some refactoring / removing unused code / renaming variables.
- + 1 more
tinyxxd 1.3.14v1.3.14
📋 Changes
- Fix the `stderr`/`stdout` redirection for `-h`/`--help` ref #34, thanks @noahgitsham
tinyxxd 1.3.12v1.3.12
📋 Changes
- Add Windows suppoort, thanks @kungfubeaner, ref #30
- Add a `-t` flag, thanks @Kycilak, ref [vim@4d262b4](https://github.com/vim/vim/commit/4d262b4952754f9e14ccf699e26a27dd37435e1a)
- Add a `-h`/`--help` flag use a different exit code, thanks @noahgitsham, ref #33
- Add a tiny performance improvement (`setvbuf`).
- Some refactoring.
- Make the EBCDIC lookup table `static const`.
- Update benchmarks.
- Update CI configuration.
- + 1 more
tinyxxd 1.3.11v1.3.11
📋 Changes
- Fix issue #29, thanks @salvogiangri
tinyxxd 1.3.10v1.3.10
**Full Changelog**: https://github.com/xyproto/tinyxxd/compare/v1.3.9...v1.3.10
tinyxxd 1.3.9v1.3.9
📋 What's Changed
- Do not use `-fno-plt` on Darwin by @reckenrode in https://github.com/xyproto/tinyxxd/pull/27
✨ New Contributors
- @reckenrode made their first contribution in https://github.com/xyproto/tinyxxd/pull/27
- Full Changelog: https://github.com/xyproto/tinyxxd/compare/v1.3.8...v1.3.9
tinyxxd 1.3.8v1.3.8
**Full Changelog**: https://github.com/xyproto/tinyxxd/compare/v1.3.7...v1.3.8
tinyxxd 1.3.7v1.3.7
📋 Changes
- Fix a whitespace-related issue when reversing postscript, ref #15 (thanks @Villemoes)
tinyxxd 1.3.6v1.3.6
📋 Changes
- Make it so that `-i` and `-b` be used together, ref #13 (thanks @a2chang)
- Adjust the column placement when the little endian flag is used, ref #14 (thanks @chrisbra)
tinyxxd 1.3.5v1.3.5
📋 Changes
- Dual license `tinyxxd` under both `GPL-2.0-only` and `MIT` (closes #7, thanks @philiptaron, @emilazy, @Ordoviz and @oliverkwebb)
tinyxxd 1.3.4v1.3.4
📋 Changes
- Update benchmark scripts.
- Update CI configuration.
- Update documentation.
- Add an initial man page (ref #6, thanks @philiptaron).
- Add `AUTHORS.md` (ref #7, thanks @philiptaron and @emilazy).
- Updated `README.md` (ref #8, thanks @philiptaron).
tinyxxd 1.3.3v1.3.3
📋 Changes
- Use the address sanitizer for unit tests + add tests b49cca53833b3f336a5744b88b89ae1d1bbec13c (thanks @Ordoviz)
- Add tests to the Makefile 3c48309e7de6e44e5262353c9316c322466946c0 (thanks @Ordoviz)
- Add asterisks to output in autoskip mode (`-a`), 2204d75eede6ff3b9628202780dbde6f04054a33 (thanks @Ordoviz)
- Fix bss buffer overflows 8c5cb0f431173ade03b89e779195e146e3eeef86 (thanks @Ordoviz)
- Fix `-a -E -R always` behaving incorrectly 27df9896ae95cc8200e80a70cfb5cbacb3d2a577 (thanks @Ordoviz)
- Use `EXIT_FAILURE` instead of `1`.
- Update documentation.
tinyxxd 1.3.2v1.3.2
📋 Changes
- Some refactoring.
- Re-order some if/elseif/else blocks based on the most used execution paths.
- Declare and initialize buffers in the main function + remove a `#define`.
- Add 1 to `LLEN` only once.
- Remove the last remaining `#define` by replacing it with an `enum`.
- Add a `COLS` enum instead of passing it in as an argument to several functions.
- Add `(void)` to a function signature so that the program also compiles on macOS.
- Various changes to benchmarks and tests.
- + 1 more
tinyxxd 1.3.1v1.3.1
📋 Changes
- Mark three functions as `static inline`.
- Make adjustments to the default `CFLAGS` in the `Makefile`.
- Update the CI configuration and the CI badge in `README.md`.
tinyxxd 1.3.0v1.3.0
⚡ Performance
- Let colors enabled and ASCII (as opposed to EBCDIC) be the "happy path" that the code is optimized for.
- Do not check `hextype` in multiple locations. Check it once in `main` and then call the right function.
- Refactor several if-expressions and switches.
- Mark several functions as `inline`.
- Use `const` for several of the function arguments and variables.
- Identify performance bottlenecks using Valgrind and `kcachegrind`.
📦 Code quality
- Use implicit checks for `NULL` and `0`. (thanks @oliverkwebb).
- Add missing `(void)` arguments (thanks @oliverkwebb).
- Output usage information without using `snprintf` (thanks @oliverkwebb).
- Introduce a `fflush_or_die` and a `fflush_fseek_and_putc` function.
- Use an `enum` for the terminal colors.
- Use `setColor` and `clearColor` instead of `colorPrologue` and `colorEpilogue`.
- Let the `ignore` variable be a `bool` instead of an `int`.
- Remove unused variables and function arguments.
- + 2 more
📦 Tooling
- Add a `profile` target to the `Makefile`.
- Add a benchmark script for Python 3 named `bench.py` that confirms that the performance is mostly IO-bound, and also outputs a couple of graphs by using `gnuplot`.
- Add GitHub action configuration for benchmarking, generating Markdown and graphs and committing the results to the `main` branch.
- Move the functionality of the `release.sh` script into the `Makefile`, and remove the script.
- Add support for fuzzing by running `make fuzz`, by using `afl-gcc` and `afl-fuzz`.
tinyxxd 1.2.0v1.2.0
📦 `main.c`
- Remove an unused function call (ref #1, thanks @Harazi).
- Use a `switch` instead of `if`/`else` in `get_ascii_char` and `get_ebcdic_char` .
- Rename `pname` to `program_name`, `fpi` to `input_file` and `fpo` to `output_file` .
- Let `output_file` be global, and use char literals instead of numbers (ref #2, thanks @oliverkwebb).
- Let the `input_file` be global.
- Let the variables `COL` and `LLEN` be defines instead of `constexpr`, to support versions of C before C23.
- Use `boolean`s instead of `int`s, whenever possible.
- Remove the `perror_exit` function, but let the `error_exit` have the same functionality if no message is passed in.
- + 4 more
📦 `Makefile`
- Add tests.
- Add a `fmt` target to the Makefile that calls `clang-format` and formats the source code.
- Add `-finline-functions` to the default flags, and remove the `inline` keyword from all function declarations.
- Let `make clean` also remove `*.o`.
- Support macOS.
📦 Various
- Specifically support C11.
- Format the source code with `clang-format` and the `WebKit` style.
- Add CI configuration for both Arch Linux and macOS.
- Update documentation.
tinyxxd 1.1.0v1.1.0
📋 Changes
- Minor changes and performance improvements.
- New logo.
tinyxxd 1.0.0v1.0.0
Create a standalone, GPL2-licensed, better performing, C18 version of the `xxd` utility that comes with ViM.
