FileBarge development
This page is the entry point for FileBarge contributors.
Development documents
- Protocol defines the version 1 wire protocol, packet layouts, state machine, and encryption framing.
- Tests describes the unit and end-to-end test suites.
Building
FileBarge requires a POSIX shell, make, and Clang. make builds the debug-friendly default binary at .build/filebarge. make test also builds the unit-test executables in .test/bin and a sender that forces chunked transfer in .test/stage4/bin/filebarge.
The project uses Clang with warnings enabled as errors. Keep existing indentation, use tabs in new C source files, and keep lines within 79 columns after tabs count as four spaces.
Source layout
src/main.cparses configuration, prints usage, and dispatches to sender or receiver execution.src/config.*parses and owns command-line configuration.src/sender.*andsrc/receiver.*implement the two application roles.src/session.*coordinates a connected protocol session.src/protocol/contains packet definitions, serialization, and packet tests.src/checksums/implements the selectable checksum algorithms.src/crypto/implements Ascon and Ascon-AEAD128 for encrypted sessions.src/lib/squinch/provides the integrated Squinch compressor and decompressor.src/platform/provides platform-neutral interfaces with POSIX and Windows implementations.
Protocol changes need matching packet and session tests. Behavioural changes need a focused staged shell test in addition to unit coverage where it applies.