---
name: "yencode"
section: "3tcl"
platform: "linux"
package: "tcllib"
version: "2.0+dfsg-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/yencode/3tcl"
---

# yencode(3tcl)

Y-encode/decode binary data

```

```

## NAME

yencode - Y-encode/decode binary data

## SYNOPSIS

package require **Tcl 8.5 9**

package require **yencode ?1.1.4?**

**::yencode::encode** *string*

**::yencode::decode** *string*

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

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

```

```

## DESCRIPTION

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 *http://www.yenc.org/* 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.

## OPTIONS

- \-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
```

## REFERENCES

- \[1\]

  *http://www.yenc.org/yenc-draft.1.3.txt*

## 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* \[http://core.tcl.tk/tcllib/reportlist\]. 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.

## KEYWORDS

encoding, yEnc, ydecode, yencode

## CATEGORY

Text processing

## COPYRIGHT

```
Copyright (c) 2002, Pat Thoyts
```
