a topological pax implementation
  • C 59.5%
  • Shell 28.3%
  • Makefile 8.8%
  • M4 3.4%
Find a file
2026-02-17 03:09:40 +00:00
include/tpax api: struct tpax_unit_ctx: remove .x_any (not used). 2025-10-17 03:09:15 +00:00
project api: move declarations of utility interfaces to the new tpax_util.h header. 2025-10-16 18:40:36 +00:00
sofort build system: Makefile.in: added the BUILD_DIR variable. 2026-02-17 03:09:40 +00:00
src Annual chores. 2025-10-23 15:28:12 +00:00
.gitignore .gitignore: updated to match the current build system. 2024-05-16 02:05:43 +00:00
config.project project: default cflags: favor modern bsd targets. 2022-12-01 04:25:48 +00:00
config.usage build system: configure: added the --pkgdatadir switch and associated logic. 2025-06-28 12:32:33 +00:00
configure build system: Makefile.in: added the BUILD_DIR variable. 2026-02-17 03:09:40 +00:00
COPYING.SOFORT build system: cfgtest: added cfgtest_function_presence(), fnapi.m4. 2025-09-09 03:26:04 +00:00
COPYING.TPAX Annual chores. 2025-10-23 15:28:12 +00:00
Makefile.in build system: Makefile.in: added the BUILD_DIR variable. 2026-02-17 03:09:40 +00:00
PORTING internals: added tpax_getdents() and related PORTING document. 2021-04-20 19:27:27 +00:00
README created repository. 2020-05-23 05:59:01 +00:00

tpax: a topological pax implementation.
---------------------------------------

This project has the twofold aim of:

a) providing a standards-compliant pax(1) implementation.
b) providing a means for the creation of reproducible ustar archives.

In order to accomplish the latter aim, tpax defines and accepts as
a format argument the ``rustar'' (reproducible ustar) format.

A reproducible ustar archive is an archive conforming to posix ustar
interchange format specification that specially handles the uid, gid,
uname, gname, name, and prefix fields, specifically in the following
manner:

* the `uid' and `gid' fields consist of 8 zero ('0') characters each.
* the `gname' and `uname' fields consist of 32 null characters each.
* the `name' and `prefix' fields are populated as follows:
-  if a path name (not including the terminall null-character) can fit
   in the `name' field alone (that is, when strlen(pathname) <= 100),
   then only the `name' field shall be used.
-  otherwise, the name field shall be used for as few directory elements
   as possible, but not less that one directory element (namely the last
   element, also known as the path's base name), and the `prefix' field
   shall be used for the remainder of the path name.