\section{\module{binhex} ---
         Encode and decode binhex4 files}

\declaremodule{standard}{binhex}
\modulesynopsis{Encode and decode files in binhex4 format.}


This module encodes and decodes files in binhex4 format, a format
allowing representation of Macintosh files in \ASCII{}. On the Macintosh,
both forks of a file and the finder information are encoded (or
decoded), on other platforms only the data fork is handled.

The \module{binhex} module defines the following functions:

\begin{funcdesc}{binhex}{input, output}
Convert a binary file with filename \var{input} to binhex file
\var{output}. The \var{output} parameter can either be a filename or a
file-like object (any object supporting a \method{write()} and
\method{close()} method).
\end{funcdesc}

\begin{funcdesc}{hexbin}{input\optional{, output}}
Decode a binhex file \var{input}. \var{input} may be a filename or a
file-like object supporting \method{read()} and \method{close()} methods.
The resulting file is written to a file named \var{output}, unless the
argument is omitted in which case the output filename is read from the
binhex file.
\end{funcdesc}


\begin{seealso}
  \seemodule{binascii}{Support module containing \ASCII-to-binary
                       and binary-to-\ASCII{} conversions.}
\end{seealso}


\subsection{Notes \label{binhex-notes}}

There is an alternative, more powerful interface to the coder and
decoder, see the source for details.

If you code or decode textfiles on non-Macintosh platforms they will
still use the Macintosh newline convention (carriage-return as end of
line).

As of this writing, \function{hexbin()} appears to not work in all
cases.
