Tcl Library Source Code
yencode - Text encoding & decoding binary data
Not logged in
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2018 Conference, Houston/TX, US, Oct 15-19
Send your abstracts to
or submit via the online form by Aug 20.

[ Main Table Of Contents | Table Of Contents | Keyword Index | Categories | Modules | Applications ]

yencode(n) 1.1.2 tcllib "Text encoding & decoding binary data"


yencode - Y-encode/decode binary data


This package provides a Tcl-only implementation of the yEnc file encoding. This is a recently introduced method of encoding binary files for transmission through Usenet. This encoding packs binary data into a format that requires an 8-bit clean transmission layer but that escapes characters special to the NNTP posting protocols. See for details concerning the algorithm.

::yencode::encode string

returns the yEnc encoded data.

::yencode::decode string

Decodes the given yEnc encoded data.

::yencode::yencode ?-name string? ?-line integer? ?-crc32 boolean? (-file filename | ?--? string)

Encode a file or block of data.

::yencode::ydecode (-file filename | ?--? string)

Decode a file or block of data. A file may contain more than one embedded file so the result is a list where each element is a three element list of filename, file size and data.


-filename name

Cause the yencode or ydecode commands to read their data from the named file rather that taking a string parameter.

-name string

The encoded data header line contains the suggested file name to be used when unpacking the data. Use this option to change this from the default of "data.dat".

-line integer

The yencoded data header line contains records the line length used during the encoding. Use this option to select a line length other that the default of 128. Note that NNTP imposes a 1000 character line length limit and some gateways may have trouble with more than 255 characters per line.

-crc32 boolean

The yEnc specification recommends the inclusion of a cyclic redundancy check value in the footer. Use this option to change the default from true to false.

% set d [yencode::yencode -file testfile.txt]
=ybegin line=128 size=584 name=testfile.txt
 -o- data not shown -o-
=yend size=584 crc32=ded29f4f

Bugs, Ideas, Feedback

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category base64 of the Tcllib Trackers. Please also report any ideas for enhancements you may have for either package and/or documentation.

When proposing code changes, please provide unified diffs, i.e the output of diff -u.

Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.


Text processing