Home > filehatchet

filehatchet

Filehatchet is a project mainly written in C and SHELL, based on the View license.

Splits large files into multiple chips for distribution or archiving.

File Hatchet

File Hatchet is a utility for splitting a large file into multiple smaller segment files for distribution. The segment files use the file format .B2S (Big To Small). Planned features for File Hatchet include the ability to verify data integrity of both the segments and the restored orignal file; the ability to incrementally rebuild the original file from the segments; the ability to regenerate any one segment from the original file; and the ability to repair the corrupted parts of the orignal file using the chips.

Contents

  1. Disclaimer
  2. Software Requirements
  3. File Format .B2S Version 1
  4. Maintainers
  5. Community
  6. Source Code
  7. Package Maintence Notes

Disclaimer

This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall Bindle Binaries be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.

Software Requirements

Git 1.7.2.3 GNU Autoconf 2.68 GNU Automake 1.11.1 GNU Libtool 2.4 GCC 4.2.1 OpenSSL 1.0.0c XZ Utils 5.0.0

File Format .B2S Version 1

The Big To Small file format is used to split a large file into multiple smaller segment files. The segment files internally store the contents of the original file as data chunks.

                      Original File
                           /|
                         /  |  
           /    |    
       Segment   Segment   Segment
       /          /           /
              /          /           /  
      Chunk Chunk  Chunk Chunk  Chunk Chunk

Each segment file contains an identifier which specifies the format of the file, options used to encode the file, data which describes the segment of content from the original file, a series of chunks, and a digest of the segnment file.

Each chunk contains the offset of the chunk's data within the original file, the length of the encoded data within the segment file, a piece of the encoded data of the original file, and a digest of the original data contained within the chunk.

/ XDR Description of .B2S file Format /

const B2S_MAGIC_ID 0x42325300 / "B2S" /

const B2S_OPT_UNICODE 0x01 const B2S_OPT_LZMA 0x02 const B2S_OPT_SHA1DIGEST 0x04 const B2S_OPT_SHA1ID 0x08

struct { unsigned hyper offset; / offset of data from original / opaque data<>; / encoded data from original / opaque digest[20]; / digest of data from original / } b2sChunk;

struct { unsigned int magicNumber; / Magic Number of .B2S file / unsigned int versionCurrent; / File format version of file / unsigned int versionAge; / File format version age / unsigned hyper flags; / Encoding options of file / opaque origID[20]; / ID of original file / unsigned hyper origSize; / size of original file / unsigned hyper origNumOfSeg; / num of segments from original / unsigned hyper origMaxSegSize; / maximum size of segment content / unsigned hyper origMaxChunkSize; / maximum size of chunk content / hyper contentIndex; / index number of current segment / unsigned hyper contentOffset; / offset of content from original / unsigned hyper contentSize; / size of content from original / opaque origFileName<>; / name of original / struct b2sChunk chunks<>; / array of chunks / opaque digest[20]; / digest of segment / } b2sFile;

/ end of XDR description /

A segment file with content index of zero is used as an index file and will not contain content from the original file, but can be used to regenerate a specific segment from the original file, to generate a custom segment from the original file, to validate the recreated original file, and to identify corrupt parts of the original file.

A segment with content index of negative one indicates that the content is not from of a series of segments, but of a custom segment size and offset.

Maintainers

David M. Syzdek Bindle Binaries [email protected]

Source Code

The source code for this project is maintained using git (http://git-scm.com). The following contains information to checkout the source code from the git repository.

Git URLs: git://github.com/bindle/filehatchet.git git://git.scm.bindlebinaries.com/pub/scm/com.bindlebinaries/filehatchet.git http://http.scm.bindlebinaries.com/pub/scm/com.bindlebinaries/filehatchet.git ssh://ssh.scm.bindlebinaries.com/pub/scm/com.bindlebinaries/filehatchet.git

Downloading Source:

  $ git clone git://github.com/bindle/filehatchet.git

Preparing Source:

  $ cd filehatchet
  $ autoreconf -i -f -I m4

Git Branches: master - Current release of packages. next - changes staged for next release pu - proposed updates for next release xx/yy+ - branch for testing new changes before merging to 'pu' branch

Package Maintence Notes

This is a collection of notes for developers to use when maintaining this package.

New Release Checklist:

  - Switch to 'master' branch in Git repository.
  - Update version in configure.ac.
  - Update date and version in ChangeLog.
  - Commit configure.ac and ChangeLog changes to repository.
  - Create tag in git repository:
       $ git tag -s v${MAJOR}.${MINOR}
  - Push repository to publishing server:
       $ git push --tags origin master:master next:next pu:pu

Creating Source Distribution Archives:

  $ ./configure
  $ make autoreconf
  $ make distcheck
  $ make dist-bzip2
Previous:ps3-jailbreak