http://tcllib.sourceforge.net/doc/yencode.html
----
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.
----
See also [uudecode], [base64] for related functionality (other encoders)
----
''[Pat Thoyts] wrote in [the comp.lang.tcl newsgroup]:''
I found out about yenc encoding ... and it's not the
same as uuencoding. Hopefully you are not trying to decode yenc data
using the [uuencode]/[uudecode] code :) If you want a tcl yenc decoder I'm going to add one to [tcllib]'s [base64] module shortly.
[LV] and in fact Pat has added (to the latest base64 module of tcllib) a yencode set of functions.
In the meantime here is the core of this method:
namespace eval yencode {} ;# added by RS
proc yencode::yEncode {s} {
set r {}
binary scan $s c* d
foreach {c} $d {
set v [expr {($c + 42) % 256}]
if {$v == 0x00 || $v == 0x09 || $v == 0x0A
|| $v == 0x0D || $v == 0x3D} {
append r "="
set v [expr {($v + 42) % 256}]
}
append r [format %c $v]
}
return $r
}
proc yencode::yDecode {s} {
set r {}
set esc 0
binary scan $s c* d
foreach c $d {
if {$c == 61 && $esc == 0} {
set esc 1
continue
}
set v [expr {($c - 42) % 256}]
if {$esc} {
set v [expr {($v - 42) % 256}]
set esc 0
}
append r [format %c $v]
}
return $r
}
----
Someone recently posted a question on comp.lang.tcl asking about yenc multi-part support in Tcl; anyone know of such code?
----
[[
[Category Package], subset [Tcllib] |
[Arts and crafts of Tcl-Tk programming]
]]