aboutsummaryrefslogtreecommitdiffstats
path: root/main/minimime/mm-docs/latex
diff options
context:
space:
mode:
Diffstat (limited to 'main/minimime/mm-docs/latex')
-rw-r--r--main/minimime/mm-docs/latex/Makefile39
-rw-r--r--main/minimime/mm-docs/latex/bug.tex9
-rw-r--r--main/minimime/mm-docs/latex/doxygen.sty78
-rw-r--r--main/minimime/mm-docs/latex/files.tex21
-rw-r--r--main/minimime/mm-docs/latex/group__codecs.tex119
-rw-r--r--main/minimime/mm-docs/latex/group__contenttype.tex246
-rw-r--r--main/minimime/mm-docs/latex/group__context.tex214
-rw-r--r--main/minimime/mm-docs/latex/group__envelope.tex65
-rw-r--r--main/minimime/mm-docs/latex/group__error.tex43
-rw-r--r--main/minimime/mm-docs/latex/group__mimepart.tex333
-rw-r--r--main/minimime/mm-docs/latex/group__mimeutil.tex2
-rw-r--r--main/minimime/mm-docs/latex/group__param.tex127
-rw-r--r--main/minimime/mm-docs/latex/group__util.tex128
-rw-r--r--main/minimime/mm-docs/latex/mm__codecs_8c.tex41
-rw-r--r--main/minimime/mm-docs/latex/mm__contenttype_8c.tex61
-rw-r--r--main/minimime/mm-docs/latex/mm__context_8c.tex44
-rw-r--r--main/minimime/mm-docs/latex/mm__envelope_8c.tex25
-rw-r--r--main/minimime/mm-docs/latex/mm__error_8c.tex29
-rw-r--r--main/minimime/mm-docs/latex/mm__header_8c.tex63
-rw-r--r--main/minimime/mm-docs/latex/mm__internal_8h.tex45
-rw-r--r--main/minimime/mm-docs/latex/mm__mimepart_8c.tex69
-rw-r--r--main/minimime/mm-docs/latex/mm__mimeutil_8c.tex50
-rw-r--r--main/minimime/mm-docs/latex/mm__param_8c.tex38
-rw-r--r--main/minimime/mm-docs/latex/mm__parse_8c.tex90
-rw-r--r--main/minimime/mm-docs/latex/mm__util_8c.tex38
-rw-r--r--main/minimime/mm-docs/latex/modules.tex12
-rw-r--r--main/minimime/mm-docs/latex/pages.tex5
-rw-r--r--main/minimime/mm-docs/latex/refman.tex62
28 files changed, 2096 insertions, 0 deletions
diff --git a/main/minimime/mm-docs/latex/Makefile b/main/minimime/mm-docs/latex/Makefile
new file mode 100644
index 000000000..776fcf968
--- /dev/null
+++ b/main/minimime/mm-docs/latex/Makefile
@@ -0,0 +1,39 @@
+all: clean refman.dvi
+
+ps: refman.ps
+
+pdf: refman.pdf
+
+ps_2on1: refman_2on1.ps
+
+pdf_2on1: refman_2on1.pdf
+
+refman.ps: refman.dvi
+ dvips -o refman.ps refman.dvi
+
+refman.pdf: refman.ps
+ ps2pdf refman.ps refman.pdf
+
+refman.dvi: refman.tex doxygen.sty
+ echo "Running latex..."
+ latex refman.tex
+ echo "Running makeindex..."
+ makeindex refman.idx
+ echo "Rerunning latex...."
+ latex refman.tex
+ latex_count=5 ; \
+ while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+ do \
+ echo "Rerunning latex...." ;\
+ latex refman.tex ;\
+ latex_count=`expr $$latex_count - 1` ;\
+ done
+
+refman_2on1.ps: refman.ps
+ psnup -2 refman.ps >refman_2on1.ps
+
+refman_2on1.pdf: refman_2on1.ps
+ ps2pdf refman_2on1.ps refman_2on1.pdf
+
+clean:
+ rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf
diff --git a/main/minimime/mm-docs/latex/bug.tex b/main/minimime/mm-docs/latex/bug.tex
new file mode 100644
index 000000000..0850a8f78
--- /dev/null
+++ b/main/minimime/mm-docs/latex/bug.tex
@@ -0,0 +1,9 @@
+\section{Bug List}\label{bug}
+\label{bug__bug000001}
+ \begin{description}
+\item[Global \doxyref{mm\_\-content\_\-setmaintype}{p.}{group__contenttype_g7bab273d117c6c0cacad20361d8fb1c8} ]The xfree() call could lead to undesirable results. Do we really need it? \end{description}
+
+
+\label{bug__bug000002}
+ \begin{description}
+\item[Global \doxyref{mm\_\-content\_\-setsubtype}{p.}{group__contenttype_g14b0738410d566ad2312405946f22212} ]The xfree() call could lead to undesirable results. Do we really need it? \end{description}
diff --git a/main/minimime/mm-docs/latex/doxygen.sty b/main/minimime/mm-docs/latex/doxygen.sty
new file mode 100644
index 000000000..37e398292
--- /dev/null
+++ b/main/minimime/mm-docs/latex/doxygen.sty
@@ -0,0 +1,78 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{doxygen}
+\RequirePackage{calc}
+\RequirePackage{array}
+\pagestyle{fancyplain}
+\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
+\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
+\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
+\lhead[\fancyplain{}{\bfseries\thepage}]
+ {\fancyplain{}{\bfseries\rightmark}}
+\rhead[\fancyplain{}{\bfseries\leftmark}]
+ {\fancyplain{}{\bfseries\thepage}}
+\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Thu Mar 29 17:59:08 2007 for Mini\-MIME by Doxygen }]{}
+\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Thu Mar 29 17:59:08 2007 for Mini\-MIME by Doxygen }}
+\cfoot{}
+\newenvironment{Code}
+{\footnotesize}
+{\normalsize}
+\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})}
+\newenvironment{DocInclude}
+{\footnotesize}
+{\normalsize}
+\newenvironment{VerbInclude}
+{\footnotesize}
+{\normalsize}
+\newenvironment{Image}
+{\begin{figure}[H]}
+{\end{figure}}
+\newenvironment{ImageNoCaption}{}{}
+\newenvironment{CompactList}
+{\begin{list}{}{
+ \setlength{\leftmargin}{0.5cm}
+ \setlength{\itemsep}{0pt}
+ \setlength{\parsep}{0pt}
+ \setlength{\topsep}{0pt}
+ \renewcommand{\makelabel}{\hfill}}}
+{\end{list}}
+\newenvironment{CompactItemize}
+{
+ \begin{itemize}
+ \setlength{\itemsep}{-3pt}
+ \setlength{\parsep}{0pt}
+ \setlength{\topsep}{0pt}
+ \setlength{\partopsep}{0pt}
+}
+{\end{itemize}}
+\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
+\newlength{\tmplength}
+\newenvironment{TabularC}[1]
+{
+\setlength{\tmplength}
+ {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
+ \par\begin{tabular*}{\linewidth}
+ {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
+}
+{\end{tabular*}\par}
+\newcommand{\entrylabel}[1]{
+ {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}}
+\newenvironment{Desc}
+{\begin{list}{}
+ {
+ \settowidth{\labelwidth}{40pt}
+ \setlength{\leftmargin}{\labelwidth}
+ \setlength{\parsep}{0pt}
+ \setlength{\itemsep}{-4pt}
+ \renewcommand{\makelabel}{\entrylabel}
+ }
+}
+{\end{list}}
+\newenvironment{Indent}
+ {\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
+ \item[]\ignorespaces}
+ {\unskip\end{list}}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{0.2cm}
+\addtocounter{secnumdepth}{1}
+\sloppy
+\usepackage[T1]{fontenc}
diff --git a/main/minimime/mm-docs/latex/files.tex b/main/minimime/mm-docs/latex/files.tex
new file mode 100644
index 000000000..fd49692db
--- /dev/null
+++ b/main/minimime/mm-docs/latex/files.tex
@@ -0,0 +1,21 @@
+\section{Mini\-MIME File List}
+Here is a list of all documented files with brief descriptions:\begin{CompactList}
+\item\contentsline{section}{\textbf{mimeparser.h} }{\pageref{mimeparser_8h}}{}
+\item\contentsline{section}{\textbf{mimeparser.tab.h} }{\pageref{mimeparser_8tab_8h}}{}
+\item\contentsline{section}{\textbf{mm.h} }{\pageref{mm_8h}}{}
+\item\contentsline{section}{{\bf mm\_\-codecs.c} }{\pageref{mm__codecs_8c}}{}
+\item\contentsline{section}{{\bf mm\_\-contenttype.c} }{\pageref{mm__contenttype_8c}}{}
+\item\contentsline{section}{{\bf mm\_\-context.c} }{\pageref{mm__context_8c}}{}
+\item\contentsline{section}{{\bf mm\_\-envelope.c} }{\pageref{mm__envelope_8c}}{}
+\item\contentsline{section}{{\bf mm\_\-error.c} }{\pageref{mm__error_8c}}{}
+\item\contentsline{section}{{\bf mm\_\-header.c} }{\pageref{mm__header_8c}}{}
+\item\contentsline{section}{{\bf mm\_\-internal.h} }{\pageref{mm__internal_8h}}{}
+\item\contentsline{section}{\textbf{mm\_\-mem.h} }{\pageref{mm__mem_8h}}{}
+\item\contentsline{section}{{\bf mm\_\-mimepart.c} }{\pageref{mm__mimepart_8c}}{}
+\item\contentsline{section}{{\bf mm\_\-mimeutil.c} }{\pageref{mm__mimeutil_8c}}{}
+\item\contentsline{section}{{\bf mm\_\-param.c} }{\pageref{mm__param_8c}}{}
+\item\contentsline{section}{{\bf mm\_\-parse.c} }{\pageref{mm__parse_8c}}{}
+\item\contentsline{section}{\textbf{mm\_\-queue.h} }{\pageref{mm__queue_8h}}{}
+\item\contentsline{section}{{\bf mm\_\-util.c} }{\pageref{mm__util_8c}}{}
+\item\contentsline{section}{\textbf{mm\_\-util.h} }{\pageref{mm__util_8h}}{}
+\end{CompactList}
diff --git a/main/minimime/mm-docs/latex/group__codecs.tex b/main/minimime/mm-docs/latex/group__codecs.tex
new file mode 100644
index 000000000..33c15f6d9
--- /dev/null
+++ b/main/minimime/mm-docs/latex/group__codecs.tex
@@ -0,0 +1,119 @@
+\section{Manipulating Mini\-MIME codecs}
+\label{group__codecs}\index{Manipulating MiniMIME codecs@{Manipulating MiniMIME codecs}}
+\subsection*{Codec manipulation}
+\begin{CompactItemize}
+\item
+int {\bf mm\_\-codec\_\-hasdecoder} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-codec\_\-hasencoder} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-codec\_\-isregistered} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-codec\_\-register} (const char $\ast$encoding, char $\ast$($\ast$encoder)(char $\ast$data, u\_\-int32\_\-t i), char $\ast$($\ast$decoder)(char $\ast$data))
+\item
+int {\bf mm\_\-codec\_\-unregister} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-codec\_\-unregisterall} (void)
+\item
+void {\bf mm\_\-codec\_\-registerdefaultcodecs} (void)
+\end{CompactItemize}
+
+
+\subsection{Function Documentation}
+\index{codecs@{codecs}!mm_codec_hasdecoder@{mm\_\-codec\_\-hasdecoder}}
+\index{mm_codec_hasdecoder@{mm\_\-codec\_\-hasdecoder}!codecs@{codecs}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-codec\_\-hasdecoder (const char $\ast$ {\em encoding})}\label{group__codecs_g6ccb0f7a1d7c870dc3dae04f31d6ccca}
+
+
+Looks up whether a context has an decoder installed for a given encoding
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em encoding}]The encoding specifier to look up \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]1 if a decoder is installed or 0 if not \end{Desc}
+\index{codecs@{codecs}!mm_codec_hasencoder@{mm\_\-codec\_\-hasencoder}}
+\index{mm_codec_hasencoder@{mm\_\-codec\_\-hasencoder}!codecs@{codecs}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-codec\_\-hasencoder (const char $\ast$ {\em encoding})}\label{group__codecs_g50ff257b794ceaec7aedf9ae18bfcc57}
+
+
+Looks up whether a context has an encoder installed for a given encoding
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid MIME context \item[{\em encoding}]The encoding specifier to look up \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]1 if an encoder is installed or 0 if not \end{Desc}
+\index{codecs@{codecs}!mm_codec_isregistered@{mm\_\-codec\_\-isregistered}}
+\index{mm_codec_isregistered@{mm\_\-codec\_\-isregistered}!codecs@{codecs}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-codec\_\-isregistered (const char $\ast$ {\em encoding})}\label{group__codecs_g9e19f6343128fd7e4ec57c3d55049b55}
+
+
+Looks up whether a codec for a given encoding is installed to a context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em encoding}]The encoding specifier to look up \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]1 if a codec was found or 0 if not \end{Desc}
+\index{codecs@{codecs}!mm_codec_register@{mm\_\-codec\_\-register}}
+\index{mm_codec_register@{mm\_\-codec\_\-register}!codecs@{codecs}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-codec\_\-register (const char $\ast$ {\em encoding}, char $\ast$($\ast$)(char $\ast$data, u\_\-int32\_\-t i) {\em encoder}, char $\ast$($\ast$)(char $\ast$data) {\em decoder})}\label{group__codecs_gf97a7311c909888ed9f6f14d6f1bf397}
+
+
+Registers a codec with the Mini\-MIME library
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em encoding}]The encoding specifier for which to register the codec \item[{\em encoder}]The encoder function for this encoding \item[{\em decoder}]The decoder function for this encoding \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]1 if successfull or 0 if not\end{Desc}
+This function registers a codec for a given Mini\-MIME context. The codec may provide an decoder, an encoder or both (but not none). If there is a codec already installed for this encoding, the function will puke. \index{codecs@{codecs}!mm_codec_registerdefaultcodecs@{mm\_\-codec\_\-registerdefaultcodecs}}
+\index{mm_codec_registerdefaultcodecs@{mm\_\-codec\_\-registerdefaultcodecs}!codecs@{codecs}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-codec\_\-registerdefaultcodecs (void)}\label{group__codecs_gf39e72460fb85f5ca41f6e270a68aacc}
+
+
+Registers the default codecs to a Mini\-MIME context
+
+This functions registers the codecs for the following encodings to a Mini\-MIME context:
+
+\begin{itemize}
+\item Base64\item (TODO:) Quoted-Printable \end{itemize}
+\index{codecs@{codecs}!mm_codec_unregister@{mm\_\-codec\_\-unregister}}
+\index{mm_codec_unregister@{mm\_\-codec\_\-unregister}!codecs@{codecs}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-codec\_\-unregister (const char $\ast$ {\em encoding})}\label{group__codecs_g0c71696bc70f834386193e3c7a0e2ca4}
+
+
+Unregisters a Mini\-MIME codec
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em encoding}]The encoding specifier which to unregister \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 if unregistered successfully, or -1 if there was no such codec \end{Desc}
+\index{codecs@{codecs}!mm_codec_unregisterall@{mm\_\-codec\_\-unregisterall}}
+\index{mm_codec_unregisterall@{mm\_\-codec\_\-unregisterall}!codecs@{codecs}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-codec\_\-unregisterall (void)}\label{group__codecs_g7c9e6538f84c368be2b56a3c9ba702be}
+
+
+Unregisters all codecs within a context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 if all codecs were unregistered successfully or -1 if an error occured. \end{Desc}
+\begin{Desc}
+\item[Note:]Foobar \end{Desc}
diff --git a/main/minimime/mm-docs/latex/group__contenttype.tex b/main/minimime/mm-docs/latex/group__contenttype.tex
new file mode 100644
index 000000000..166261a62
--- /dev/null
+++ b/main/minimime/mm-docs/latex/group__contenttype.tex
@@ -0,0 +1,246 @@
+\section{Accessing and manipulating Content-Type objects}
+\label{group__contenttype}\index{Accessing and manipulating Content-Type objects@{Accessing and manipulating Content-Type objects}}
+\subsection*{Functions for manipulating Content-Type objects}
+\begin{CompactItemize}
+\item
+mm\_\-content $\ast$ {\bf mm\_\-content\_\-new} (void)
+\item
+void {\bf mm\_\-content\_\-free} (struct mm\_\-content $\ast$ct)
+\item
+int {\bf mm\_\-content\_\-attachparam} (struct mm\_\-content $\ast$ct, struct mm\_\-param $\ast$param)
+\item
+char $\ast$ {\bf mm\_\-content\_\-getparambyname} (struct mm\_\-content $\ast$ct, const char $\ast$name)
+\item
+mm\_\-param $\ast$ \textbf{mm\_\-content\_\-getparamobjbyname} (struct mm\_\-content $\ast$ct, const char $\ast$name)\label{group__contenttype_g1ba63e679d2b49aceb6cfec8a6752581}
+
+\item
+int {\bf mm\_\-content\_\-setmaintype} (struct mm\_\-content $\ast$ct, char $\ast$value, int copy)
+\item
+char $\ast$ {\bf mm\_\-content\_\-getmaintype} (struct mm\_\-content $\ast$ct)
+\item
+char $\ast$ {\bf mm\_\-content\_\-getsubtype} (struct mm\_\-content $\ast$ct)
+\item
+char $\ast$ \textbf{mm\_\-content\_\-gettype} (struct mm\_\-content $\ast$ct)\label{group__contenttype_ga6d8453eb35bd695c4944e53b7040b65}
+
+\item
+int {\bf mm\_\-content\_\-setsubtype} (struct mm\_\-content $\ast$ct, char $\ast$value, int copy)
+\item
+int \textbf{mm\_\-content\_\-settype} (struct mm\_\-content $\ast$ct, const char $\ast$fmt,...)\label{group__contenttype_g878686678ea2ba97aa8edb1206a564d8}
+
+\item
+int {\bf mm\_\-content\_\-iscomposite} (struct mm\_\-content $\ast$ct)
+\item
+int {\bf mm\_\-content\_\-isvalidencoding} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-content\_\-setencoding} (struct mm\_\-content $\ast$ct, const char $\ast$encoding)
+\item
+int {\bf mm\_\-content\_\-getencoding} (struct mm\_\-content $\ast$ct, const char $\ast$encoding)
+\item
+char $\ast$ {\bf mm\_\-content\_\-paramstostring} (struct mm\_\-content $\ast$ct)
+\item
+char $\ast$ {\bf mm\_\-content\_\-tostring} (struct mm\_\-content $\ast$ct)
+\end{CompactItemize}
+\subsection*{Variables}
+\begin{CompactItemize}
+\item
+int \textbf{mm\_\-encoding\_\-mappings::type}\label{group__contenttype_g6c458a8611981109bf0519b5ae21e12e}
+
+\end{CompactItemize}
+
+
+\subsection{Function Documentation}
+\index{contenttype@{contenttype}!mm_content_attachparam@{mm\_\-content\_\-attachparam}}
+\index{mm_content_attachparam@{mm\_\-content\_\-attachparam}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-content\_\-attachparam (struct mm\_\-content $\ast$ {\em ct}, struct mm\_\-param $\ast$ {\em param})}\label{group__contenttype_g080b7ed798ed497dcd635a6bab86962f}
+
+
+Attaches a parameter to a Content-Type object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]The target Content-Type object \item[{\em param}]The Content-Type parameter which to attach \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success and -1 on failure \end{Desc}
+\index{contenttype@{contenttype}!mm_content_free@{mm\_\-content\_\-free}}
+\index{mm_content_free@{mm\_\-content\_\-free}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-content\_\-free (struct mm\_\-content $\ast$ {\em ct})}\label{group__contenttype_g404314481125849bce869ee4b0f647af}
+
+
+Releases all memory associated with an Content-Type object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]A Content-Type object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]Nothing \end{Desc}
+\index{contenttype@{contenttype}!mm_content_getencoding@{mm\_\-content\_\-getencoding}}
+\index{mm_content_getencoding@{mm\_\-content\_\-getencoding}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-content\_\-getencoding (struct mm\_\-content $\ast$ {\em ct}, const char $\ast$ {\em encoding})}\label{group__contenttype_gbff87e581cd04db16e91245e9e9de67d}
+
+
+Gets the numerical ID of a content encoding identifier
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]A valid Content Type object \item[{\em encoding}]A string representing the content encoding identifier \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The numerical ID of the content encoding \end{Desc}
+\index{contenttype@{contenttype}!mm_content_getmaintype@{mm\_\-content\_\-getmaintype}}
+\index{mm_content_getmaintype@{mm\_\-content\_\-getmaintype}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-content\_\-getmaintype (struct mm\_\-content $\ast$ {\em ct})}\label{group__contenttype_gb213081017abf6bc7e601c6bf4214924}
+
+
+Retrieves the main MIME type stored in a Content-Type object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]A valid Content-Type object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the string representing the main type \end{Desc}
+\index{contenttype@{contenttype}!mm_content_getparambyname@{mm\_\-content\_\-getparambyname}}
+\index{mm_content_getparambyname@{mm\_\-content\_\-getparambyname}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-content\_\-getparambyname (struct mm\_\-content $\ast$ {\em ct}, const char $\ast$ {\em name})}\label{group__contenttype_g451441ee557ab5ef29477f3dc8330bf6}
+
+
+Gets a parameter value from a Content-Type object.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]the Content-Type object \item[{\em name}]the name of the parameter to retrieve \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The value of the parameter on success or a NULL pointer on failure \end{Desc}
+\index{contenttype@{contenttype}!mm_content_getsubtype@{mm\_\-content\_\-getsubtype}}
+\index{mm_content_getsubtype@{mm\_\-content\_\-getsubtype}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-content\_\-getsubtype (struct mm\_\-content $\ast$ {\em ct})}\label{group__contenttype_g97f77ef40c14cd0fb397bad358ee5d49}
+
+
+Retrieves the sub MIME type stored in a Content-Type object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]A valid Content-Type object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the string holding the current sub MIME type \end{Desc}
+\index{contenttype@{contenttype}!mm_content_iscomposite@{mm\_\-content\_\-iscomposite}}
+\index{mm_content_iscomposite@{mm\_\-content\_\-iscomposite}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-content\_\-iscomposite (struct mm\_\-content $\ast$ {\em ct})}\label{group__contenttype_ga7fa479f27e73dea57257421d8fc9fc5}
+
+
+Checks whether the Content-Type represents a composite message or not
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]A valid Content-Type object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]1 if the Content-Type object represents a composite message or 0 if not. \end{Desc}
+\index{contenttype@{contenttype}!mm_content_isvalidencoding@{mm\_\-content\_\-isvalidencoding}}
+\index{mm_content_isvalidencoding@{mm\_\-content\_\-isvalidencoding}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-content\_\-isvalidencoding (const char $\ast$ {\em encoding})}\label{group__contenttype_gb724b5979182fa272fe4fd1b72b395d5}
+
+
+Verifies whether a string represents a valid encoding or not.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em encoding}]The string to verify \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]1 if the encoding string is valid or 0 if not \end{Desc}
+\index{contenttype@{contenttype}!mm_content_new@{mm\_\-content\_\-new}}
+\index{mm_content_new@{mm\_\-content\_\-new}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-content$\ast$ mm\_\-content\_\-new (void)}\label{group__contenttype_g3880ac74a20b4a9f610a4159568e1801}
+
+
+Creates a new object to hold a Content-Type representation. The allocated memory must later be freed using \doxyref{mm\_\-content\_\-free()}{p.}{group__contenttype_g404314481125849bce869ee4b0f647af}
+
+\begin{Desc}
+\item[Returns:]An object representing a MIME Content-Type \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-content\_\-free}{p.}{group__contenttype_g404314481125849bce869ee4b0f647af} \end{Desc}
+\index{contenttype@{contenttype}!mm_content_paramstostring@{mm\_\-content\_\-paramstostring}}
+\index{mm_content_paramstostring@{mm\_\-content\_\-paramstostring}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-content\_\-paramstostring (struct mm\_\-content $\ast$ {\em ct})}\label{group__contenttype_g792e7d33fbb30e0123408bcef9d3204c}
+
+
+Constructs a MIME conform string of Content-Type parameters.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]A valid Content Type object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to a string representing the Content-Type parameters in MIME terminology, or NULL if either the Content-Type object is invalid, has no parameters or no memory could be allocated.\end{Desc}
+This function constructs a MIME conform string including all the parameters associated with the given Content-Type object. It should NOT be used if you need an opaque copy of the current MIME part (e.g. for PGP purposes). \index{contenttype@{contenttype}!mm_content_setencoding@{mm\_\-content\_\-setencoding}}
+\index{mm_content_setencoding@{mm\_\-content\_\-setencoding}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-content\_\-setencoding (struct mm\_\-content $\ast$ {\em ct}, const char $\ast$ {\em encoding})}\label{group__contenttype_gea945e48ac5cca846715543634b9afe4}
+
+
+Set the encoding of a MIME entitity according to a mapping table
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]A valid content type object \item[{\em encoding}]A string representing the content encoding \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 if successfull or -1 if not (i.e. unknown content encoding) \end{Desc}
+\index{contenttype@{contenttype}!mm_content_setmaintype@{mm\_\-content\_\-setmaintype}}
+\index{mm_content_setmaintype@{mm\_\-content\_\-setmaintype}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-content\_\-setmaintype (struct mm\_\-content $\ast$ {\em ct}, char $\ast$ {\em value}, int {\em copy})}\label{group__contenttype_g7bab273d117c6c0cacad20361d8fb1c8}
+
+
+Sets the MIME main type for a MIME Content-Type object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]The MIME Content-Type object \item[{\em value}]The value which to set the main type to \item[{\em copy}]Whether to make a copy of the value (original value must be freed afterwards to prevent memory leaks). \end{description}
+\end{Desc}
+
+
+\begin{Desc}
+\item[{\bf Bug}]The xfree() call could lead to undesirable results. Do we really need it? \end{Desc}
+\index{contenttype@{contenttype}!mm_content_setsubtype@{mm\_\-content\_\-setsubtype}}
+\index{mm_content_setsubtype@{mm\_\-content\_\-setsubtype}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-content\_\-setsubtype (struct mm\_\-content $\ast$ {\em ct}, char $\ast$ {\em value}, int {\em copy})}\label{group__contenttype_g14b0738410d566ad2312405946f22212}
+
+
+Sets the MIME sub type for a MIME Content-Type object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]The MIME Content-Type object \item[{\em value}]The value which to set the sub type to \item[{\em copy}]Whether to make a copy of the value (original value must be freed afterwards to prevent memory leaks). \end{description}
+\end{Desc}
+
+
+\begin{Desc}
+\item[{\bf Bug}]The xfree() call could lead to undesirable results. Do we really need it? \end{Desc}
+\index{contenttype@{contenttype}!mm_content_tostring@{mm\_\-content\_\-tostring}}
+\index{mm_content_tostring@{mm\_\-content\_\-tostring}!contenttype@{contenttype}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-content\_\-tostring (struct mm\_\-content $\ast$ {\em ct})}\label{group__contenttype_g18a99c95e35a76f13a77a83c4231e738}
+
+
+Creates a Content-Type header according to the object given
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ct}]A valid Content-Type object \end{description}
+\end{Desc}
diff --git a/main/minimime/mm-docs/latex/group__context.tex b/main/minimime/mm-docs/latex/group__context.tex
new file mode 100644
index 000000000..aa28a7ba5
--- /dev/null
+++ b/main/minimime/mm-docs/latex/group__context.tex
@@ -0,0 +1,214 @@
+\section{Accessing and manipulating MIME contexts}
+\label{group__context}\index{Accessing and manipulating MIME contexts@{Accessing and manipulating MIME contexts}}
+\subsection*{Manipulating Mini\-MIME contexts}
+\begin{CompactItemize}
+\item
+MM\_\-CTX $\ast$ {\bf mm\_\-context\_\-new} (void)
+\item
+void {\bf mm\_\-context\_\-free} (MM\_\-CTX $\ast$ctx)
+\item
+int {\bf mm\_\-context\_\-attachpart} (MM\_\-CTX $\ast$ctx, struct mm\_\-mimepart $\ast$part)
+\item
+int {\bf mm\_\-context\_\-attachpart\_\-after} (MM\_\-CTX $\ast$ctx, struct mm\_\-mimepart $\ast$part, int pos)
+\item
+int {\bf mm\_\-context\_\-deletepart} (MM\_\-CTX $\ast$ctx, int which, int freemem)
+\item
+int {\bf mm\_\-context\_\-countparts} (MM\_\-CTX $\ast$ctx)
+\item
+mm\_\-mimepart $\ast$ {\bf mm\_\-context\_\-getpart} (MM\_\-CTX $\ast$ctx, int which)
+\item
+int {\bf mm\_\-context\_\-iscomposite} (MM\_\-CTX $\ast$ctx)
+\item
+int {\bf mm\_\-context\_\-haswarnings} (MM\_\-CTX $\ast$ctx)
+\item
+int {\bf mm\_\-context\_\-generateboundary} (MM\_\-CTX $\ast$ctx)
+\item
+int {\bf mm\_\-context\_\-setpreamble} (MM\_\-CTX $\ast$ctx, char $\ast$preamble)
+\item
+char $\ast$ \textbf{mm\_\-context\_\-getpreamble} (MM\_\-CTX $\ast$ctx)\label{group__context_g1ebbdd51106ccdee77ca421f9692bde7}
+
+\item
+int {\bf mm\_\-context\_\-flatten} (MM\_\-CTX $\ast$ctx, char $\ast$$\ast$flat, size\_\-t $\ast$length, int flags)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Each message in Mini\-MIME is represented by a so called ``context''. A context holds all necessary information given about a MIME message, such as the envelope, all MIME parts etc.
+
+\subsection{Function Documentation}
+\index{context@{context}!mm_context_attachpart@{mm\_\-context\_\-attachpart}}
+\index{mm_context_attachpart@{mm\_\-context\_\-attachpart}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-context\_\-attachpart (MM\_\-CTX $\ast$ {\em ctx}, struct mm\_\-mimepart $\ast$ {\em part})}\label{group__context_gec3ca486a61b392ff68774242086768e}
+
+
+Attaches a MIME part object to a Mini\-MIME context.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]the Mini\-MIME context \item[{\em part}]the MIME part object to attach \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure. Sets mm\_\-errno on failure.\end{Desc}
+This function attaches a MIME part to a context, appending it to the end of the message.
+
+The MIME part should be initialized before attaching it using \doxyref{mm\_\-mimepart\_\-new()}{p.}{group__mimepart_g417e5dd361e30cddb91e1d9a5e30b223}. \index{context@{context}!mm_context_attachpart_after@{mm\_\-context\_\-attachpart\_\-after}}
+\index{mm_context_attachpart_after@{mm\_\-context\_\-attachpart\_\-after}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-context\_\-attachpart\_\-after (MM\_\-CTX $\ast$ {\em ctx}, struct mm\_\-mimepart $\ast$ {\em part}, int {\em pos})}\label{group__context_g73a3dd187053aeabca4836dc28a6c468}
+
+
+Attaches a MIME part object to a Mini\-MIME context at a given position
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context \item[{\em part}]The MIME part object to attach \item[{\em pos}]After which part to attach the object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 if the given position is invalid \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-context\_\-attachpart}{p.}{group__context_gec3ca486a61b392ff68774242086768e}\end{Desc}
+This function attaches a MIME part object after a given position in the specified context. If the position is invalid (out of range), the part will not get attached to the message and the function returns -1. If the index was in range, the MIME part will get attached after the MIME part at the given position, moving any possible following MIME parts one down the hierarchy. \index{context@{context}!mm_context_countparts@{mm\_\-context\_\-countparts}}
+\index{mm_context_countparts@{mm\_\-context\_\-countparts}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-context\_\-countparts (MM\_\-CTX $\ast$ {\em ctx})}\label{group__context_gf5bb032ad1c481d31d7b1b0710939712}
+
+
+Counts the number of attached MIME part objects in a given Mini\-MIME context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]The Mini\-MIME context \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The number of attached MIME part objects \end{Desc}
+\index{context@{context}!mm_context_deletepart@{mm\_\-context\_\-deletepart}}
+\index{mm_context_deletepart@{mm\_\-context\_\-deletepart}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-context\_\-deletepart (MM\_\-CTX $\ast$ {\em ctx}, int {\em which}, int {\em freemem})}\label{group__context_g53d20c33a401539ef1ffa45f3dddb983}
+
+
+Deletes a MIME part object from a Mini\-MIME context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context object \item[{\em which}]The number of the MIME part object to delete \item[{\em freemem}]Whether to free the memory associated with the MIME part object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure. Sets mm\_\-errno on failure.\end{Desc}
+This function deletes a MIME part from a given context. The MIME part to delete is specified as numerical index by the parameter ``which''. If the parameter ``freemem'' is set to anything greater than 0, the memory that is associated will be free'd by using \doxyref{mm\_\-mimepart\_\-free()}{p.}{group__mimepart_gbf47790a0bb96b22bc5e236bc40cb32e}, otherwise the memory is left untouched (if you still have a pointer to the MIME part around). \index{context@{context}!mm_context_flatten@{mm\_\-context\_\-flatten}}
+\index{mm_context_flatten@{mm\_\-context\_\-flatten}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-context\_\-flatten (MM\_\-CTX $\ast$ {\em ctx}, char $\ast$$\ast$ {\em flat}, size\_\-t $\ast$ {\em length}, int {\em flags})}\label{group__context_g5288136ab923605f6508c09359ae5772}
+
+
+Creates an ASCII message of the specified context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context object \item[{\em flat}]Where to store the message \item[{\em flags}]Flags that affect the flattening process\end{description}
+\end{Desc}
+This function ``flattens'' a Mini\-MIME context, that is, it creates an ASCII represantation of the message the context contains. The flags can be a bitwise combination of the following constants:
+
+\begin{itemize}
+\item MM\_\-FLATTEN\_\-OPAQUE : use opaque MIME parts when flattening\item MM\_\-FLATTEN\_\-SKIPENVELOPE : do not flatten the envelope part\end{itemize}
+
+
+Great care is taken to not produce invalid MIME output. \index{context@{context}!mm_context_free@{mm\_\-context\_\-free}}
+\index{mm_context_free@{mm\_\-context\_\-free}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-context\_\-free (MM\_\-CTX $\ast$ {\em ctx})}\label{group__context_g76392d5269e9ef340c2f5f8336f7193b}
+
+
+Releases a Mini\-MIME context object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context \end{description}
+\end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-context\_\-new}{p.}{group__context_g919fd41f85534d9c87c256857faa2610}\end{Desc}
+This function releases all memory associated with Mini\-MIME context object that was created using \doxyref{mm\_\-context\_\-new()}{p.}{group__context_g919fd41f85534d9c87c256857faa2610}. It will also release all memory used for the MIME parts attached, and their specific properties (such as Content-Type information, headers, and the body data). \index{context@{context}!mm_context_generateboundary@{mm\_\-context\_\-generateboundary}}
+\index{mm_context_generateboundary@{mm\_\-context\_\-generateboundary}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-context\_\-generateboundary (MM\_\-CTX $\ast$ {\em ctx})}\label{group__context_g9710e485f51167099d90f0d659979068}
+
+
+Generates a generic boundary string for a given context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure\end{Desc}
+This function generates a default boundary string for the given context. If there is already a boundary for the context, the memory will be free()'d. \index{context@{context}!mm_context_getpart@{mm\_\-context\_\-getpart}}
+\index{mm_context_getpart@{mm\_\-context\_\-getpart}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-mimepart$\ast$ mm\_\-context\_\-getpart (MM\_\-CTX $\ast$ {\em ctx}, int {\em which})}\label{group__context_g57fea229675f3e56a77eb40bb8193ee3}
+
+
+Gets a specified MIME part object from a Mime\-MIME context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]The Mini\-MIME context \item[{\em which}]The number of the MIME part object to retrieve \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The requested MIME part object on success or a NULL pointer if there is no such part. \end{Desc}
+\index{context@{context}!mm_context_haswarnings@{mm\_\-context\_\-haswarnings}}
+\index{mm_context_haswarnings@{mm\_\-context\_\-haswarnings}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-context\_\-haswarnings (MM\_\-CTX $\ast$ {\em ctx})}\label{group__context_g8733dee7d83d3205349a7ee4ee5b2750}
+
+
+Checks whether there are any warnings associated with a given context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]1 if there are warnings associated with the context, otherwise 0 \end{Desc}
+\index{context@{context}!mm_context_iscomposite@{mm\_\-context\_\-iscomposite}}
+\index{mm_context_iscomposite@{mm\_\-context\_\-iscomposite}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-context\_\-iscomposite (MM\_\-CTX $\ast$ {\em ctx})}\label{group__context_g1e73cadba4acd3ef9dd148dd0c2c3e70}
+
+
+Checks whether a given context represents a composite (multipart) message
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]1 if the context is a composite message or 0 if it's flat \end{Desc}
+\index{context@{context}!mm_context_new@{mm\_\-context\_\-new}}
+\index{mm_context_new@{mm\_\-context\_\-new}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}MM\_\-CTX$\ast$ mm\_\-context\_\-new (void)}\label{group__context_g919fd41f85534d9c87c256857faa2610}
+
+
+Creates a new Mini\-MIME context object.
+
+\begin{Desc}
+\item[Returns:]a new Mini\-MIME context object \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-context\_\-free}{p.}{group__context_g76392d5269e9ef340c2f5f8336f7193b}\end{Desc}
+This function creates a new Mini\-MIME context, which will hold a message. The memory needed is allocated dynamically and should later be free'd using \doxyref{mm\_\-context\_\-free()}{p.}{group__context_g76392d5269e9ef340c2f5f8336f7193b}.
+
+Before a context can be created, the Mini\-MIME library needs to be initialized properly using mm\_\-library\_\-init(). \index{context@{context}!mm_context_setpreamble@{mm\_\-context\_\-setpreamble}}
+\index{mm_context_setpreamble@{mm\_\-context\_\-setpreamble}!context@{context}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-context\_\-setpreamble (MM\_\-CTX $\ast$ {\em ctx}, char $\ast$ {\em preamble})}\label{group__context_gc0e7cc297516618d4773830a1988fc8d}
+
+
+Sets a preamble for the given Mini\-MIME context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context \item[{\em preamble}]The preamble to set \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure\end{Desc}
+This function sets the MIME preamble (the text between the end of envelope headers and the beginning of the first MIME part) for a given context object. If preamble is a NULL-pointer then the preamble will be deleted, and the currently associated memory will be free automagically. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/group__envelope.tex b/main/minimime/mm-docs/latex/group__envelope.tex
new file mode 100644
index 000000000..613c87948
--- /dev/null
+++ b/main/minimime/mm-docs/latex/group__envelope.tex
@@ -0,0 +1,65 @@
+\section{Accessing and manipulating a message's envelope}
+\label{group__envelope}\index{Accessing and manipulating a message's envelope@{Accessing and manipulating a message's envelope}}
+\subsection*{Accessing and manipulating a message's envelope}
+\begin{CompactItemize}
+\item
+int {\bf mm\_\-envelope\_\-getheaders} (MM\_\-CTX $\ast$ctx, char $\ast$$\ast$result, size\_\-t $\ast$length)
+\item
+int {\bf mm\_\-envelope\_\-setheader} (MM\_\-CTX $\ast$ctx, const char $\ast$name, const char $\ast$fmt,...)
+\item
+int {\bf mm\_\-envelope\_\-getrecipients} (MM\_\-CTX $\ast$ctx, char $\ast$$\ast$result, size\_\-t $\ast$length)
+\end{CompactItemize}
+
+
+\subsection{Function Documentation}
+\index{envelope@{envelope}!mm_envelope_getheaders@{mm\_\-envelope\_\-getheaders}}
+\index{mm_envelope_getheaders@{mm\_\-envelope\_\-getheaders}!envelope@{envelope}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-envelope\_\-getheaders (MM\_\-CTX $\ast$ {\em ctx}, char $\ast$$\ast$ {\em result}, size\_\-t $\ast$ {\em length})}\label{group__envelope_g38f1164142cedfc3253b068a81f85563}
+
+
+Gets an ASCII representation of all envelope headers
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context \item[{\em result}]Where to store the resulting ASCII headers \item[{\em length}]Where to store the length of the result \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure. \end{Desc}
+\begin{Desc}
+\item[Note:]Sets mm\_\-errno on failure\end{Desc}
+This is mainly a convinience function. It constructs an ASCII representation from all of the message's envelope headers and stores the result in headers. Memory is allocated dynamically, and the total length of the result is stored in length. This function takes care that the output is MIME conform, and folds long lines according to the MIME standard at position 78 of the string. It also nicely formats all MIME related header fields, such as the Content-Type header.
+
+Since the memory needed to store the result is allocated dynamically, one should take care of freeing it again when it's not needed anymore. If an error occurs, $\ast$result will be set to NULL, $\ast$length will be set to zero and mm\_\-errno will be set to a reasonable value. \index{envelope@{envelope}!mm_envelope_getrecipients@{mm\_\-envelope\_\-getrecipients}}
+\index{mm_envelope_getrecipients@{mm\_\-envelope\_\-getrecipients}!envelope@{envelope}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-envelope\_\-getrecipients (MM\_\-CTX $\ast$ {\em ctx}, char $\ast$$\ast$ {\em result}, size\_\-t $\ast$ {\em length})}\label{group__envelope_ge63da17c56867ca2406a4eaf73230baf}
+
+
+Gets the list of recipients for a MIME message
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context \item[{\em result}]Where to store the result \item[{\em length}]Where to store the length of the result \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on error \end{Desc}
+\begin{Desc}
+\item[Note:]Sets mm\_\-errno on error\end{Desc}
+This functions gets the list of recipients for a given MIME message. It does so by concatenating the \char`\"{}From\char`\"{} and \char`\"{}Cc\char`\"{} header fields, and storing the results in recipients. The memory needed to store the result is allocated dynamically, and the total length of the result is stored in length.
+
+One should take care to free() the result once it's not needed anymore. \index{envelope@{envelope}!mm_envelope_setheader@{mm\_\-envelope\_\-setheader}}
+\index{mm_envelope_setheader@{mm\_\-envelope\_\-setheader}!envelope@{envelope}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-envelope\_\-setheader (MM\_\-CTX $\ast$ {\em ctx}, const char $\ast$ {\em name}, const char $\ast$ {\em fmt}, {\em ...})}\label{group__envelope_gb2c43c1645e42ae0860c902ce1dda788}
+
+
+Sets a header field in the envelope
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context \item[{\em name}]The name of the header field to set \item[{\em fmt}]A format string specifying the value of the header field \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure\end{Desc}
+This function generates a new MIME header and attaches it to the first MIME part (the envelope) found in the given context. If no part is attached already, the function will return an error. The function will store a copy of ``name'' as the header's name field, and dynamically allocate the memory needed to build the format string. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/group__error.tex b/main/minimime/mm-docs/latex/group__error.tex
new file mode 100644
index 000000000..c9c49034e
--- /dev/null
+++ b/main/minimime/mm-docs/latex/group__error.tex
@@ -0,0 +1,43 @@
+\section{Mini\-MIME error functions}
+\label{group__error}\index{MiniMIME error functions@{MiniMIME error functions}}
+\subsection*{Functions}
+\begin{CompactItemize}
+\item
+void {\bf mm\_\-error\_\-init} (void)
+\item
+void {\bf mm\_\-error\_\-setmsg} (const char $\ast$fmt,...)
+\item
+char $\ast$ {\bf mm\_\-error\_\-string} (void)
+\end{CompactItemize}
+
+
+\subsection{Function Documentation}
+\index{error@{error}!mm_error_init@{mm\_\-error\_\-init}}
+\index{mm_error_init@{mm\_\-error\_\-init}!error@{error}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-error\_\-init (void)}\label{group__error_g69de7c9bee1d535593a55807590de543}
+
+
+Initializes the global error object
+
+This function initializes the global error object mm\_\-error. This must be done when the library is initialized, and is automatically called from mm\_\-init\_\-library(). \index{error@{error}!mm_error_setmsg@{mm\_\-error\_\-setmsg}}
+\index{mm_error_setmsg@{mm\_\-error\_\-setmsg}!error@{error}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-error\_\-setmsg (const char $\ast$ {\em fmt}, {\em ...})}\label{group__error_g92006c97728639d8f32f5bc4c6e2a47f}
+
+
+Sets a descriptive error message
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em fmt}]The error message as format string\end{description}
+\end{Desc}
+This function is called from the various Mini\-MIME modules in case an error occured. Should never be called by the user. \index{error@{error}!mm_error_string@{mm\_\-error\_\-string}}
+\index{mm_error_string@{mm\_\-error\_\-string}!error@{error}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-error\_\-string (void)}\label{group__error_g8654857a3ac349b87d798902912371a3}
+
+
+Retrieves the current error message
+
+\begin{Desc}
+\item[Returns:]The currently set error message\end{Desc}
+This function can be used to retrieve a descriptive error message for the current error, much like strerror() function of libc. When this function is called without an error being set, it returns the string \char`\"{}No error\char`\"{}. The string returned does not need to be freed, since it is not dynamically allocated by the library. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/group__mimepart.tex b/main/minimime/mm-docs/latex/group__mimepart.tex
new file mode 100644
index 000000000..e9f9742d9
--- /dev/null
+++ b/main/minimime/mm-docs/latex/group__mimepart.tex
@@ -0,0 +1,333 @@
+\section{Accessing and manipulating MIME parts}
+\label{group__mimepart}\index{Accessing and manipulating MIME parts@{Accessing and manipulating MIME parts}}
+\subsection*{Creating and destroying MIME parts}
+\begin{CompactItemize}
+\item
+mm\_\-mimepart $\ast$ {\bf mm\_\-mimepart\_\-new} (void)
+\item
+mm\_\-mimepart $\ast$ {\bf mm\_\-mimepart\_\-fromfile} (const char $\ast$filename)
+\item
+void {\bf mm\_\-mimepart\_\-free} (struct mm\_\-mimepart $\ast$part)
+\end{CompactItemize}
+\subsection*{Accessing the MIME part's mail header}
+\begin{CompactItemize}
+\item
+int {\bf mm\_\-mimepart\_\-attachheader} (struct mm\_\-mimepart $\ast$part, struct mm\_\-mimeheader $\ast$header)
+\item
+int {\bf mm\_\-mimepart\_\-countheaders} (struct mm\_\-mimepart $\ast$part)
+\item
+int {\bf mm\_\-mimepart\_\-countheaderbyname} (struct mm\_\-mimepart $\ast$part, const char $\ast$name)
+\item
+mm\_\-mimeheader $\ast$ {\bf mm\_\-mimepart\_\-getheaderbyname} (struct mm\_\-mimepart $\ast$part, const char $\ast$name, int idx)
+\item
+const char $\ast$ {\bf mm\_\-mimepart\_\-getheadervalue} (struct mm\_\-mimepart $\ast$part, const char $\ast$name, int idx)
+\item
+int {\bf mm\_\-mimepart\_\-headers\_\-start} (struct mm\_\-mimepart $\ast$part, struct mm\_\-mimeheader $\ast$$\ast$id)
+\item
+mm\_\-mimeheader $\ast$ {\bf mm\_\-mimepart\_\-headers\_\-next} (struct mm\_\-mimepart $\ast$part, struct mm\_\-mimeheader $\ast$$\ast$id)
+\end{CompactItemize}
+\subsection*{Accessing and manipulating the MIME part's body}
+\begin{CompactItemize}
+\item
+char $\ast$ {\bf mm\_\-mimepart\_\-getbody} (struct mm\_\-mimepart $\ast$part, int opaque)
+\item
+void {\bf mm\_\-mimepart\_\-setbody} (struct mm\_\-mimepart $\ast$part, const char $\ast$data, int opaque)
+\item
+size\_\-t {\bf mm\_\-mimepart\_\-getlength} (struct mm\_\-mimepart $\ast$part)
+\item
+char $\ast$ {\bf mm\_\-mimepart\_\-decode} (struct mm\_\-mimepart $\ast$part)
+\item
+int {\bf mm\_\-mimepart\_\-flatten} (struct mm\_\-mimepart $\ast$part, char $\ast$$\ast$result, size\_\-t $\ast$length, int opaque)
+\item
+int {\bf mm\_\-mimepart\_\-setdefaultcontenttype} (struct mm\_\-mimepart $\ast$part, int composite)
+\end{CompactItemize}
+\subsection*{Accessing the MIME part's Content-Type information}
+\begin{CompactItemize}
+\item
+void {\bf mm\_\-mimepart\_\-attachcontenttype} (struct mm\_\-mimepart $\ast$part, struct mm\_\-content $\ast$ct)
+\item
+mm\_\-content $\ast$ {\bf mm\_\-mimepart\_\-gettype} (struct mm\_\-mimepart $\ast$part)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+MIME parts, also called entities, represent the structure of a MIME message. ``Normal'' internet messages have only a single part, and are called ``flat'' messages. Multipart messages have more then one part, and each MIME part can have it's own subset of headers.
+
+Provided here are functions to easily access all informations from a MIME part, including their specific headers and bodies.
+
+\subsection{Function Documentation}
+\index{mimepart@{mimepart}!mm_mimepart_attachcontenttype@{mm\_\-mimepart\_\-attachcontenttype}}
+\index{mm_mimepart_attachcontenttype@{mm\_\-mimepart\_\-attachcontenttype}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-mimepart\_\-attachcontenttype (struct mm\_\-mimepart $\ast$ {\em part}, struct mm\_\-content $\ast$ {\em ct})}\label{group__mimepart_g01822bc93b4741af75b5379384354e37}
+
+
+Attaches a context type object to a MIME part
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em ct}]The content type object to attach \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]Nothing\end{Desc}
+This function attaches a Content-Type object to a MIME part. It does not care whether the Content-Type suites the actual content in the MIME part, so the programmer should take care of that. \index{mimepart@{mimepart}!mm_mimepart_attachheader@{mm\_\-mimepart\_\-attachheader}}
+\index{mm_mimepart_attachheader@{mm\_\-mimepart\_\-attachheader}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-mimepart\_\-attachheader (struct mm\_\-mimepart $\ast$ {\em part}, struct mm\_\-mimeheader $\ast$ {\em header})}\label{group__mimepart_g46a674ff6b9873c0c45fa4eb5d94fd62}
+
+
+Attaches a mm\_\-mimeheader object to a MIME part
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em header}]A valid MIME header object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 if successfull or -1 if the header could not be attached \end{Desc}
+\index{mimepart@{mimepart}!mm_mimepart_countheaderbyname@{mm\_\-mimepart\_\-countheaderbyname}}
+\index{mm_mimepart_countheaderbyname@{mm\_\-mimepart\_\-countheaderbyname}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-mimepart\_\-countheaderbyname (struct mm\_\-mimepart $\ast$ {\em part}, const char $\ast$ {\em name})}\label{group__mimepart_gf89da502ac54306994bdb452448a8026}
+
+
+Retrieves the number of MIME headers with a given name in a MIME part
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em name}]The name of the MIME header which to count for \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The number of MIME headers within the MIME part \end{Desc}
+\index{mimepart@{mimepart}!mm_mimepart_countheaders@{mm\_\-mimepart\_\-countheaders}}
+\index{mm_mimepart_countheaders@{mm\_\-mimepart\_\-countheaders}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-mimepart\_\-countheaders (struct mm\_\-mimepart $\ast$ {\em part})}\label{group__mimepart_g44c78abfb0535312bcb427a2cd220026}
+
+
+Retrieves the number of MIME headers available in a MIME part
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The number of MIME headers within the MIME part \end{Desc}
+\index{mimepart@{mimepart}!mm_mimepart_decode@{mm\_\-mimepart\_\-decode}}
+\index{mm_mimepart_decode@{mm\_\-mimepart\_\-decode}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-mimepart\_\-decode (struct mm\_\-mimepart $\ast$ {\em part})}\label{group__mimepart_g4551bf4460e5d165bbcd9f32d4f625de}
+
+
+Decodes a MIME part according to it's encoding using Mini\-MIME codecs
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em A}]valid MIME part object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 if the MIME part could be successfully decoded or -1 if not \end{Desc}
+\begin{Desc}
+\item[Note:]Sets mm\_\-errno on error\end{Desc}
+This function decodes the body of a MIME part with a registered decoder according to it's Content-Transfer-Encoding header field. \index{mimepart@{mimepart}!mm_mimepart_flatten@{mm\_\-mimepart\_\-flatten}}
+\index{mm_mimepart_flatten@{mm\_\-mimepart\_\-flatten}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-mimepart\_\-flatten (struct mm\_\-mimepart $\ast$ {\em part}, char $\ast$$\ast$ {\em result}, size\_\-t $\ast$ {\em length}, int {\em opaque})}\label{group__mimepart_gf19d3ace5ae174b3eaa35f9ddbe6e216}
+
+
+Creates an ASCII representation of the given MIME part
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em result}]Where to store the result \item[{\em length}]Where to store the length of the result \item[{\em opaque}]Whether to use the opaque MIME part 0 on success or -1 on error. \end{description}
+\end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-context\_\-flatten}{p.}{group__context_g5288136ab923605f6508c09359ae5772}\end{Desc}
+This function creates an ASCII representation of a given MIME part. It will dynamically allocate the memory needed and stores the result in the memory region pointed to by result. The length of the result will be stored in length. If opaque is set to 1, mm\_\-mimepart\_\-flatten will store an opaque version of the MIME part in result, which means no headers will be created or sanitized. This is particulary useful if the part is digitally signed by e.g. PGP, and the signature spans the header fields of the part in question. \index{mimepart@{mimepart}!mm_mimepart_free@{mm\_\-mimepart\_\-free}}
+\index{mm_mimepart_free@{mm\_\-mimepart\_\-free}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-mimepart\_\-free (struct mm\_\-mimepart $\ast$ {\em part})}\label{group__mimepart_gbf47790a0bb96b22bc5e236bc40cb32e}
+
+
+Frees all memory allocated by a mm\_\-mimepart object.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A pointer to an allocated mm\_\-mimepart object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-mimepart\_\-new}{p.}{group__mimepart_g417e5dd361e30cddb91e1d9a5e30b223} \end{Desc}
+\index{mimepart@{mimepart}!mm_mimepart_fromfile@{mm\_\-mimepart\_\-fromfile}}
+\index{mm_mimepart_fromfile@{mm\_\-mimepart\_\-fromfile}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-mimepart$\ast$ mm\_\-mimepart\_\-fromfile (const char $\ast$ {\em filename})}\label{group__mimepart_ged8112012a337371ae8093adb1ab6d27}
+
+
+Creates a MIME part from a file
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em filename}]The name of the file to create the MIME part from \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to a new MIME part object\end{Desc}
+This function creates a new MIME part object from a file. The object should be freed using \doxyref{mm\_\-mimepart\_\-free()}{p.}{group__mimepart_gbf47790a0bb96b22bc5e236bc40cb32e} later on. This function does NOT set the Content-Type and neither does any encoding work. \index{mimepart@{mimepart}!mm_mimepart_getbody@{mm\_\-mimepart\_\-getbody}}
+\index{mm_mimepart_getbody@{mm\_\-mimepart\_\-getbody}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-mimepart\_\-getbody (struct mm\_\-mimepart $\ast$ {\em part}, int {\em opaque})}\label{group__mimepart_g52dc9f27a2801e4f6abb1effd2ed838d}
+
+
+Gets the pointer to the MIME part's body data
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em opaque}]Whether to get the opaque part or not \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the MIME part's body \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-mimepart\_\-setbody}{p.}{group__mimepart_gd1def098c00edc546b03e98e9ff8b27a} \end{Desc}
+\index{mimepart@{mimepart}!mm_mimepart_getheaderbyname@{mm\_\-mimepart\_\-getheaderbyname}}
+\index{mm_mimepart_getheaderbyname@{mm\_\-mimepart\_\-getheaderbyname}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-mimeheader$\ast$ mm\_\-mimepart\_\-getheaderbyname (struct mm\_\-mimepart $\ast$ {\em part}, const char $\ast$ {\em name}, int {\em idx})}\label{group__mimepart_ga3ca298eaa82f4ef3ea731511ac84e53}
+
+
+Get a MIME header object from a MIME part
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em name}]The name of the MIME header which to retrieve \item[{\em idx}]Which header field to get (in case of multiple headers of the same name). \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the requested MIME header on success, or NULL if there either isn't a header with the requested name or idx is out of range. \end{Desc}
+\index{mimepart@{mimepart}!mm_mimepart_getheadervalue@{mm\_\-mimepart\_\-getheadervalue}}
+\index{mm_mimepart_getheadervalue@{mm\_\-mimepart\_\-getheadervalue}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ mm\_\-mimepart\_\-getheadervalue (struct mm\_\-mimepart $\ast$ {\em part}, const char $\ast$ {\em name}, int {\em idx})}\label{group__mimepart_g779f11f7a6a54f83763b5ef6ff87e48f}
+
+
+Gets the value of a MIME header object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em name}]The name of the header field to get the value from \item[{\em idx}]The index of the header field to get, in case there are multiple headers with the same name. \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the requested value on success, or NULL if there either isn't a header with the requested name or idx is out of range. \end{Desc}
+\index{mimepart@{mimepart}!mm_mimepart_getlength@{mm\_\-mimepart\_\-getlength}}
+\index{mm_mimepart_getlength@{mm\_\-mimepart\_\-getlength}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}size\_\-t mm\_\-mimepart\_\-getlength (struct mm\_\-mimepart $\ast$ {\em part})}\label{group__mimepart_gf8ccae1737dc4b9b91958fe448da677f}
+
+
+Gets the length of a given MIME part object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The size of the part's body in byte.\end{Desc}
+This function returns the total length of the given MIME part's body. The length does not include the headers of the MIME parts. If the function returns 0, no body part is set currently. \index{mimepart@{mimepart}!mm_mimepart_gettype@{mm\_\-mimepart\_\-gettype}}
+\index{mm_mimepart_gettype@{mm\_\-mimepart\_\-gettype}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-content$\ast$ mm\_\-mimepart\_\-gettype (struct mm\_\-mimepart $\ast$ {\em part})}\label{group__mimepart_g210e2ceee56f8349f6778006da87d080}
+
+
+Gets the Content-Type of a given MIME part object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The Content-Type object of the specified MIME part\end{Desc}
+This function returns a pointer to the Content-Type object of the given MIME part. This pointer might be set to NULL, indicating that there is no Content-Type object for the given MIME part currently. \index{mimepart@{mimepart}!mm_mimepart_headers_next@{mm\_\-mimepart\_\-headers\_\-next}}
+\index{mm_mimepart_headers_next@{mm\_\-mimepart\_\-headers\_\-next}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-mimeheader$\ast$ mm\_\-mimepart\_\-headers\_\-next (struct mm\_\-mimepart $\ast$ {\em part}, struct mm\_\-mimeheader $\ast$$\ast$ {\em id})}\label{group__mimepart_g8e9064736efdeebf4b257cc45f8a6adf}
+
+
+Returns the next MIME header of a given MIME part object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em id}]A previously initialized MIME header object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the MIME header object or NULL if end of headers was reached. \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-mimepart\_\-headers\_\-start}{p.}{group__mimepart_g4440bdcfddf88eb642b6a834a0557176} \end{Desc}
+\index{mimepart@{mimepart}!mm_mimepart_headers_start@{mm\_\-mimepart\_\-headers\_\-start}}
+\index{mm_mimepart_headers_start@{mm\_\-mimepart\_\-headers\_\-start}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-mimepart\_\-headers\_\-start (struct mm\_\-mimepart $\ast$ {\em part}, struct mm\_\-mimeheader $\ast$$\ast$ {\em id})}\label{group__mimepart_g4440bdcfddf88eb642b6a834a0557176}
+
+
+Initializes a header loop for a given MIME part
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em id}]The address of a MIME header object (to allow reentrance) \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-mimepart\_\-headers\_\-next}{p.}{group__mimepart_g8e9064736efdeebf4b257cc45f8a6adf}\end{Desc}
+Looping through headers can be done in the following way:
+
+
+
+\begin{Code}\begin{verbatim} struct mm_mimeheader *header, *lheader;
+
+ mm_mimepart_headers_start(part, &lheader);
+
+ while ((header = mm_mimepart_headers_next(part, &lheader)) != NULL) {
+ printf("%s: %s\n", header->name, header->value);
+ }
+\end{verbatim}\end{Code}
+
+
+
+For convienience, the macro mm\_\-mimepart\_\-headers\_\-foreach() can be used to loop through headers in a one-shot manner. \index{mimepart@{mimepart}!mm_mimepart_new@{mm\_\-mimepart\_\-new}}
+\index{mm_mimepart_new@{mm\_\-mimepart\_\-new}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-mimepart$\ast$ mm\_\-mimepart\_\-new (void)}\label{group__mimepart_g417e5dd361e30cddb91e1d9a5e30b223}
+
+
+Allocates memory for a new mm\_\-mimepart structure and initializes it.
+
+\begin{Desc}
+\item[Returns:]A pointer to a struct of type mm\_\-mimeheader or NULL on failure \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-mimepart\_\-free}{p.}{group__mimepart_gbf47790a0bb96b22bc5e236bc40cb32e} \end{Desc}
+\begin{Desc}
+\item[Note:]The memory must be freed by using \doxyref{mm\_\-mimepart\_\-free()}{p.}{group__mimepart_gbf47790a0bb96b22bc5e236bc40cb32e} later on. \end{Desc}
+\index{mimepart@{mimepart}!mm_mimepart_setbody@{mm\_\-mimepart\_\-setbody}}
+\index{mm_mimepart_setbody@{mm\_\-mimepart\_\-setbody}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-mimepart\_\-setbody (struct mm\_\-mimepart $\ast$ {\em part}, const char $\ast$ {\em data}, int {\em opaque})}\label{group__mimepart_gd1def098c00edc546b03e98e9ff8b27a}
+
+
+Sets the MIME part's body data
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em data}]A pointer to the data which to set \end{description}
+\end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-mimepart\_\-getbody}{p.}{group__mimepart_g52dc9f27a2801e4f6abb1effd2ed838d}\end{Desc}
+This functions sets the body data for a given MIME part. The string pointed to by data must be NUL-terminated. The data is copied into the MIME part's body, and thus, the memory pointed to by data can be freed after the operation. \index{mimepart@{mimepart}!mm_mimepart_setdefaultcontenttype@{mm\_\-mimepart\_\-setdefaultcontenttype}}
+\index{mm_mimepart_setdefaultcontenttype@{mm\_\-mimepart\_\-setdefaultcontenttype}!mimepart@{mimepart}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-mimepart\_\-setdefaultcontenttype (struct mm\_\-mimepart $\ast$ {\em part}, int {\em composite})}\label{group__mimepart_g164bb39a266559574c252f11266809ff}
+
+
+Sets the default Content-Type for a given MIME part
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em part}]A valid MIME part object \item[{\em part}]Whether the Content-Type should be for composite or not \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure\end{Desc}
+This function sets a default Content-Type according to RFC 2045 with a value of \char`\"{}text/plain; charset=\char`\"{}us-ascii\char`\"{}\char`\"{}. This function should only be used if the MIME part in question does not have a valid Content-Type specification. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/group__mimeutil.tex b/main/minimime/mm-docs/latex/group__mimeutil.tex
new file mode 100644
index 000000000..6de259976
--- /dev/null
+++ b/main/minimime/mm-docs/latex/group__mimeutil.tex
@@ -0,0 +1,2 @@
+\section{MIME related utility functions}
+\label{group__mimeutil}\index{MIME related utility functions@{MIME related utility functions}}
diff --git a/main/minimime/mm-docs/latex/group__param.tex b/main/minimime/mm-docs/latex/group__param.tex
new file mode 100644
index 000000000..320dd398c
--- /dev/null
+++ b/main/minimime/mm-docs/latex/group__param.tex
@@ -0,0 +1,127 @@
+\section{Accessing and manipulating MIME parameters}
+\label{group__param}\index{Accessing and manipulating MIME parameters@{Accessing and manipulating MIME parameters}}
+\subsection*{Functions for manipulating MIME parameters}
+MIME parameters are properties attached to certain MIME headers, such as Content-Type and Content-Disposition. MIME parameters have a textual representations as in {\em name=value\/}. They contain important information about the MIME structure of a message, such as the boundary string used, which charset was used to encode the message and so on. This module provides simple to use functions to query or set MIME parameters.
+
+Each MIME header may hold an arbitrary amount of such parameters, which are delimeted by each other with a semicolon. \begin{CompactItemize}
+\item
+mm\_\-param $\ast$ {\bf mm\_\-param\_\-new} (void)
+\item
+void {\bf mm\_\-param\_\-free} (struct mm\_\-param $\ast$param)
+\item
+mm\_\-param $\ast$ {\bf mm\_\-param\_\-generate} (const char $\ast$name, const char $\ast$value)
+\item
+char $\ast$ {\bf mm\_\-param\_\-setname} (struct mm\_\-param $\ast$param, const char $\ast$name, int copy)
+\item
+char $\ast$ {\bf mm\_\-param\_\-setvalue} (struct mm\_\-param $\ast$param, const char $\ast$value, int copy)
+\item
+const char $\ast$ {\bf mm\_\-param\_\-getname} (struct mm\_\-param $\ast$param)
+\item
+const char $\ast$ {\bf mm\_\-param\_\-getvalue} (struct mm\_\-param $\ast$param)
+\end{CompactItemize}
+
+
+\subsection{Function Documentation}
+\index{param@{param}!mm_param_free@{mm\_\-param\_\-free}}
+\index{mm_param_free@{mm\_\-param\_\-free}!param@{param}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-param\_\-free (struct mm\_\-param $\ast$ {\em param})}\label{group__param_g46339038e995799e6a3e37512f442fc9}
+
+
+Releases all memory associated with a MIME parameter object.
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em param}]A valid MIME parameter object to be freed \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]Nothing \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-param\_\-new}{p.}{group__param_gd3ac756551bf5a29a07d5992bfdbde09} \end{Desc}
+\index{param@{param}!mm_param_generate@{mm\_\-param\_\-generate}}
+\index{mm_param_generate@{mm\_\-param\_\-generate}!param@{param}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-param$\ast$ mm\_\-param\_\-generate (const char $\ast$ {\em name}, const char $\ast$ {\em value})}\label{group__param_gd3970def45b8bede334f4b89a41dec15}
+
+
+Generates a new Content-Type parameter with the given name and value
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em name}]The name of the MIME parameter \item[{\em value}]The value of the MIME parameter \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A new MIME parameter object \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-param\_\-free}{p.}{group__param_g46339038e995799e6a3e37512f442fc9}
+
+\doxyref{mm\_\-param\_\-new}{p.}{group__param_gd3ac756551bf5a29a07d5992bfdbde09}\end{Desc}
+This function generates a new MIME parameter, with the name and value given as the arguments. The needed memory for the operation is allocated dynamically. It stores a copy of name and value in the actual object, so the memory holding the arguments can safely be freed after successfull return of this function. \index{param@{param}!mm_param_getname@{mm\_\-param\_\-getname}}
+\index{mm_param_getname@{mm\_\-param\_\-getname}!param@{param}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ mm\_\-param\_\-getname (struct mm\_\-param $\ast$ {\em param})}\label{group__param_g0e0ddccf47a2b1e0ad5bcc52c7b39753}
+
+
+Gets the name of a MIME parameter object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em param}]A valid MIME parameter object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The name of the MIME parameter \end{Desc}
+\index{param@{param}!mm_param_getvalue@{mm\_\-param\_\-getvalue}}
+\index{mm_param_getvalue@{mm\_\-param\_\-getvalue}!param@{param}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ mm\_\-param\_\-getvalue (struct mm\_\-param $\ast$ {\em param})}\label{group__param_g3c6f8cddd409de3000c31584e140561e}
+
+
+Gets the value of a MIME parameter object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em param}]A valid MIME parameter object \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The value of the MIME parameter \end{Desc}
+\index{param@{param}!mm_param_new@{mm\_\-param\_\-new}}
+\index{mm_param_new@{mm\_\-param\_\-new}!param@{param}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-param$\ast$ mm\_\-param\_\-new (void)}\label{group__param_gd3ac756551bf5a29a07d5992bfdbde09}
+
+
+Creates a new object to hold a MIME parameter.
+
+\begin{Desc}
+\item[Returns:]An object representing a MIME parameter \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-param\_\-free}{p.}{group__param_g46339038e995799e6a3e37512f442fc9} \end{Desc}
+\begin{Desc}
+\item[Note:]The allocated memory must later be freed using \doxyref{mm\_\-param\_\-free()}{p.}{group__param_g46339038e995799e6a3e37512f442fc9} \end{Desc}
+\index{param@{param}!mm_param_setname@{mm\_\-param\_\-setname}}
+\index{mm_param_setname@{mm\_\-param\_\-setname}!param@{param}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-param\_\-setname (struct mm\_\-param $\ast$ {\em param}, const char $\ast$ {\em name}, int {\em copy})}\label{group__param_g2a266c63c7e89cf829b2af8e995e55e8}
+
+
+Sets the name of the given MIME parameter
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em param}]A valid MIME parameter object \item[{\em name}]The new name of the parameter \item[{\em copy}]If set to $>$ 0, copy the value stored in name \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The address of the previous name for passing to free() \end{Desc}
+\index{param@{param}!mm_param_setvalue@{mm\_\-param\_\-setvalue}}
+\index{mm_param_setvalue@{mm\_\-param\_\-setvalue}!param@{param}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-param\_\-setvalue (struct mm\_\-param $\ast$ {\em param}, const char $\ast$ {\em value}, int {\em copy})}\label{group__param_gca3e636ab5700462eb32ca5bc19e4cc6}
+
+
+Sets the value of the given MIME parameter
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em param}]A valid MIME parameter object \item[{\em name}]The new value for the parameter \item[{\em copy}]If set to $>$ 0, copy the value stored in value \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]The address of the previous value for passing to free() \end{Desc}
diff --git a/main/minimime/mm-docs/latex/group__util.tex b/main/minimime/mm-docs/latex/group__util.tex
new file mode 100644
index 000000000..00a3c20da
--- /dev/null
+++ b/main/minimime/mm-docs/latex/group__util.tex
@@ -0,0 +1,128 @@
+\section{General purpose utility functions}
+\label{group__util}\index{General purpose utility functions@{General purpose utility functions}}
+\subsection*{Utility functions}
+\begin{CompactItemize}
+\item
+void \textbf{xfree} (void $\ast$)\label{group__util_g35c4383ff0dee2de18985e6edfed1ae6}
+
+\item
+char $\ast$ \textbf{xstrdup} (const char $\ast$)\label{group__util_g2961ae74e91b0b28acdf9822438a581c}
+
+\end{CompactItemize}
+\subsection*{Functions}
+\begin{CompactItemize}
+\item
+void $\ast$ {\bf xmalloc} (size\_\-t size)
+\item
+void $\ast$ {\bf xrealloc} (void $\ast$p, size\_\-t size)
+\item
+char $\ast$ {\bf mm\_\-unquote} (const char $\ast$string)
+\item
+char $\ast$ {\bf mm\_\-uncomment} (const char $\ast$string)
+\item
+char $\ast$ {\bf xstrsep} (char $\ast$$\ast$stringp, const char $\ast$delim)
+\item
+char $\ast$ {\bf mm\_\-stripchars} (char $\ast$input, char $\ast$strip)
+\item
+char $\ast$ {\bf mm\_\-addchars} (char $\ast$input, char $\ast$add, u\_\-int16\_\-t linelength)
+\end{CompactItemize}
+
+
+\subsection{Function Documentation}
+\index{util@{util}!mm_addchars@{mm\_\-addchars}}
+\index{mm_addchars@{mm\_\-addchars}!util@{util}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-addchars (char $\ast$ {\em input}, char $\ast$ {\em add}, u\_\-int16\_\-t {\em linelength})}\label{group__util_g0747d4b4e33644263e6d73d2d8d4818b}
+
+
+Adds characters to a string at given positions
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em input}]The string to which to add characters \item[{\em add}]The character string to add \item[{\em linelength}]The position where to add the character \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A copy of the string with characters added\end{Desc}
+This function adds the characters add at each linelength positions and returns this new string. \index{util@{util}!mm_stripchars@{mm\_\-stripchars}}
+\index{mm_stripchars@{mm\_\-stripchars}!util@{util}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-stripchars (char $\ast$ {\em input}, char $\ast$ {\em strip})}\label{group__util_gf62be7dd21e545f8db72f3c9e3b6a3c3}
+
+
+Strips a given character set from a string
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em input}]The string which to strip \item[{\em strip}]The character set to strip off \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A copy of the original string with all chars stripped \end{Desc}
+\index{util@{util}!mm_uncomment@{mm\_\-uncomment}}
+\index{mm_uncomment@{mm\_\-uncomment}!util@{util}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-uncomment (const char $\ast$ {\em string})}\label{group__util_g49c016ff4cfd02f1b019c4dce5aac357}
+
+
+Removes MIME comments from a string
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em string}]The string to uncomment \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the uncommented string or NULL on error. Sets mm\_\-errno.\end{Desc}
+This function removes MIME comments from a string (included in parantheses). It returns a pointer to a newly allocated memory region in which the uncommented string is stored. The returned string needs to be freed when it's not used anymore. \index{util@{util}!mm_unquote@{mm\_\-unquote}}
+\index{mm_unquote@{mm\_\-unquote}!util@{util}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mm\_\-unquote (const char $\ast$ {\em string})}\label{group__util_gf0f89a29a634f6f1f833abb1e214a6b1}
+
+
+Unquotes a string
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em string}]The quoted string to unquote \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the unquoted string\end{Desc}
+This function unquotes a string. That is, it returns a pointer to a newly allocated memory region in which the unquoted string is stored. Only leading and trailing double-qoutes are removed. The string needs to be freed when it is not needed anymore. \index{util@{util}!xmalloc@{xmalloc}}
+\index{xmalloc@{xmalloc}!util@{util}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ xmalloc (size\_\-t {\em size})}\label{group__util_g2ff4ef58da7e543466e75f20f2a2d8b7}
+
+
+Allocates a block of memory
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em size}]The size of the memory region to allocate \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the allocated memory region\end{Desc}
+\doxyref{xmalloc()}{p.}{group__util_g2ff4ef58da7e543466e75f20f2a2d8b7} calls abort() if either the size argument is negative or the requested memory amount could not be allocated via an assert() call. \index{util@{util}!xrealloc@{xrealloc}}
+\index{xrealloc@{xrealloc}!util@{util}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ xrealloc (void $\ast$ {\em p}, size\_\-t {\em size})}\label{group__util_ge14637b4672461f1f0bee822406d68dc}
+
+
+realloc() wrapper
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em p}]Pointer to a memory region which should be reallocated \item[{\em size}]The new size of the memory region \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the reallocated memory region\end{Desc}
+\doxyref{xrealloc()}{p.}{group__util_ge14637b4672461f1f0bee822406d68dc} is a wrapper around realloc() which calls abort() if either the size argument is negative or the requested memory amount could not be allocated. \index{util@{util}!xstrsep@{xstrsep}}
+\index{xstrsep@{xstrsep}!util@{util}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ xstrsep (char $\ast$$\ast$ {\em stringp}, const char $\ast$ {\em delim})}\label{group__util_g3ae25483c8a42f6562f2a916a511228f}
+
+
+separate strings
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em stringp}]A pointer to the string being splitted \item[{\em delim}]The delimeter string\end{description}
+\end{Desc}
+This function works similar to strsep(), with the difference that delim is treated as a whole. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__codecs_8c.tex b/main/minimime/mm-docs/latex/mm__codecs_8c.tex
new file mode 100644
index 000000000..1dad6cf96
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__codecs_8c.tex
@@ -0,0 +1,41 @@
+\section{mm\_\-codecs.c File Reference}
+\label{mm__codecs_8c}\index{mm_codecs.c@{mm\_\-codecs.c}}
+{\tt \#include $<$sys/types.h$>$}\par
+{\tt \#include $<$sys/stat.h$>$}\par
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$unistd.h$>$}\par
+{\tt \#include $<$fcntl.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+{\tt \#include \char`\"{}mm\_\-util.h\char`\"{}}\par
+\subsection*{Functions}
+\begin{Indent}{\bf Codec manipulation}\par
+\begin{CompactItemize}
+\item
+int {\bf mm\_\-codec\_\-hasdecoder} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-codec\_\-hasencoder} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-codec\_\-isregistered} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-codec\_\-register} (const char $\ast$encoding, char $\ast$($\ast$encoder)(char $\ast$data, u\_\-int32\_\-t i), char $\ast$($\ast$decoder)(char $\ast$data))
+\item
+int {\bf mm\_\-codec\_\-unregister} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-codec\_\-unregisterall} (void)
+\item
+void {\bf mm\_\-codec\_\-registerdefaultcodecs} (void)
+\end{CompactItemize}
+\end{Indent}
+\subsection*{Variables}
+\begin{CompactItemize}
+\item
+mm\_\-codecs \textbf{codecs}\label{mm__codecs_8c_b669b6dc7c7d10408d8da81b3f1a30d3}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+This module contains functions to manipulate Mini\-MIME codecs \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__contenttype_8c.tex b/main/minimime/mm-docs/latex/mm__contenttype_8c.tex
new file mode 100644
index 000000000..71a88cf62
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__contenttype_8c.tex
@@ -0,0 +1,61 @@
+\section{mm\_\-contenttype.c File Reference}
+\label{mm__contenttype_8c}\index{mm_contenttype.c@{mm\_\-contenttype.c}}
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$stdarg.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$ctype.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+{\tt \#include \char`\"{}mm\_\-util.h\char`\"{}}\par
+\subsection*{Data Structures}
+\begin{CompactItemize}
+\item
+struct \textbf{mm\_\-encoding\_\-mappings}
+\end{CompactItemize}
+\subsection*{Functions}
+\begin{Indent}{\bf Functions for manipulating Content-Type objects}\par
+\begin{CompactItemize}
+\item
+mm\_\-content $\ast$ {\bf mm\_\-content\_\-new} (void)
+\item
+void {\bf mm\_\-content\_\-free} (struct mm\_\-content $\ast$ct)
+\item
+int {\bf mm\_\-content\_\-attachparam} (struct mm\_\-content $\ast$ct, struct mm\_\-param $\ast$param)
+\item
+char $\ast$ {\bf mm\_\-content\_\-getparambyname} (struct mm\_\-content $\ast$ct, const char $\ast$name)
+\item
+mm\_\-param $\ast$ \textbf{mm\_\-content\_\-getparamobjbyname} (struct mm\_\-content $\ast$ct, const char $\ast$name)\label{group__contenttype_g1ba63e679d2b49aceb6cfec8a6752581}
+
+\item
+int {\bf mm\_\-content\_\-setmaintype} (struct mm\_\-content $\ast$ct, char $\ast$value, int copy)
+\item
+char $\ast$ {\bf mm\_\-content\_\-getmaintype} (struct mm\_\-content $\ast$ct)
+\item
+char $\ast$ {\bf mm\_\-content\_\-getsubtype} (struct mm\_\-content $\ast$ct)
+\item
+char $\ast$ \textbf{mm\_\-content\_\-gettype} (struct mm\_\-content $\ast$ct)\label{group__contenttype_ga6d8453eb35bd695c4944e53b7040b65}
+
+\item
+int {\bf mm\_\-content\_\-setsubtype} (struct mm\_\-content $\ast$ct, char $\ast$value, int copy)
+\item
+int \textbf{mm\_\-content\_\-settype} (struct mm\_\-content $\ast$ct, const char $\ast$fmt,...)\label{group__contenttype_g878686678ea2ba97aa8edb1206a564d8}
+
+\item
+int {\bf mm\_\-content\_\-iscomposite} (struct mm\_\-content $\ast$ct)
+\item
+int {\bf mm\_\-content\_\-isvalidencoding} (const char $\ast$encoding)
+\item
+int {\bf mm\_\-content\_\-setencoding} (struct mm\_\-content $\ast$ct, const char $\ast$encoding)
+\item
+int {\bf mm\_\-content\_\-getencoding} (struct mm\_\-content $\ast$ct, const char $\ast$encoding)
+\item
+char $\ast$ {\bf mm\_\-content\_\-paramstostring} (struct mm\_\-content $\ast$ct)
+\item
+char $\ast$ {\bf mm\_\-content\_\-tostring} (struct mm\_\-content $\ast$ct)
+\end{CompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+This module contains functions for manipulating Content-Type objects. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__context_8c.tex b/main/minimime/mm-docs/latex/mm__context_8c.tex
new file mode 100644
index 000000000..78ba141e5
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__context_8c.tex
@@ -0,0 +1,44 @@
+\section{mm\_\-context.c File Reference}
+\label{mm__context_8c}\index{mm_context.c@{mm\_\-context.c}}
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$stdarg.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+\subsection*{Functions}
+\begin{Indent}{\bf Manipulating Mini\-MIME contexts}\par
+\begin{CompactItemize}
+\item
+MM\_\-CTX $\ast$ {\bf mm\_\-context\_\-new} (void)
+\item
+void {\bf mm\_\-context\_\-free} (MM\_\-CTX $\ast$ctx)
+\item
+int {\bf mm\_\-context\_\-attachpart} (MM\_\-CTX $\ast$ctx, struct mm\_\-mimepart $\ast$part)
+\item
+int {\bf mm\_\-context\_\-attachpart\_\-after} (MM\_\-CTX $\ast$ctx, struct mm\_\-mimepart $\ast$part, int pos)
+\item
+int {\bf mm\_\-context\_\-deletepart} (MM\_\-CTX $\ast$ctx, int which, int freemem)
+\item
+int {\bf mm\_\-context\_\-countparts} (MM\_\-CTX $\ast$ctx)
+\item
+mm\_\-mimepart $\ast$ {\bf mm\_\-context\_\-getpart} (MM\_\-CTX $\ast$ctx, int which)
+\item
+int {\bf mm\_\-context\_\-iscomposite} (MM\_\-CTX $\ast$ctx)
+\item
+int {\bf mm\_\-context\_\-haswarnings} (MM\_\-CTX $\ast$ctx)
+\item
+int {\bf mm\_\-context\_\-generateboundary} (MM\_\-CTX $\ast$ctx)
+\item
+int {\bf mm\_\-context\_\-setpreamble} (MM\_\-CTX $\ast$ctx, char $\ast$preamble)
+\item
+char $\ast$ \textbf{mm\_\-context\_\-getpreamble} (MM\_\-CTX $\ast$ctx)\label{group__context_g1ebbdd51106ccdee77ca421f9692bde7}
+
+\item
+int {\bf mm\_\-context\_\-flatten} (MM\_\-CTX $\ast$ctx, char $\ast$$\ast$flat, size\_\-t $\ast$length, int flags)
+\end{CompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+Modules for manipulating Mini\-MIME contexts \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__envelope_8c.tex b/main/minimime/mm-docs/latex/mm__envelope_8c.tex
new file mode 100644
index 000000000..841a6b550
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__envelope_8c.tex
@@ -0,0 +1,25 @@
+\section{mm\_\-envelope.c File Reference}
+\label{mm__envelope_8c}\index{mm_envelope.c@{mm\_\-envelope.c}}
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$stdarg.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$ctype.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+{\tt \#include \char`\"{}mm\_\-util.h\char`\"{}}\par
+\subsection*{Functions}
+\begin{Indent}{\bf Accessing and manipulating a message's envelope}\par
+\begin{CompactItemize}
+\item
+int {\bf mm\_\-envelope\_\-getheaders} (MM\_\-CTX $\ast$ctx, char $\ast$$\ast$result, size\_\-t $\ast$length)
+\item
+int {\bf mm\_\-envelope\_\-setheader} (MM\_\-CTX $\ast$ctx, const char $\ast$name, const char $\ast$fmt,...)
+\item
+int {\bf mm\_\-envelope\_\-getrecipients} (MM\_\-CTX $\ast$ctx, char $\ast$$\ast$result, size\_\-t $\ast$length)
+\end{CompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+This module contains functions for accessing a message's envelope. This are mainly wrapper functions for easy access. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__error_8c.tex b/main/minimime/mm-docs/latex/mm__error_8c.tex
new file mode 100644
index 000000000..47ae03314
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__error_8c.tex
@@ -0,0 +1,29 @@
+\section{mm\_\-error.c File Reference}
+\label{mm__error_8c}\index{mm_error.c@{mm\_\-error.c}}
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$stdarg.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include $<$errno.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+{\tt \#include \char`\"{}mm\_\-util.h\char`\"{}}\par
+\subsection*{Functions}
+\begin{CompactItemize}
+\item
+void {\bf mm\_\-error\_\-init} (void)
+\item
+void {\bf mm\_\-error\_\-setmsg} (const char $\ast$fmt,...)
+\item
+void \textbf{mm\_\-error\_\-setlineno} (int lineno)\label{mm__error_8c_190c991d7bb378b6cd6f995ffc3011f7}
+
+\item
+char $\ast$ {\bf mm\_\-error\_\-string} (void)
+\item
+int \textbf{mm\_\-error\_\-lineno} (void)\label{mm__error_8c_c84acacac29f1e6efd10bb3a89eab272}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+This module contains functions for Mini\-MIME error information/manipulation \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__header_8c.tex b/main/minimime/mm-docs/latex/mm__header_8c.tex
new file mode 100644
index 000000000..651a5a4e9
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__header_8c.tex
@@ -0,0 +1,63 @@
+\section{mm\_\-header.c File Reference}
+\label{mm__header_8c}\index{mm_header.c@{mm\_\-header.c}}
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$stdarg.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$ctype.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+{\tt \#include \char`\"{}mm\_\-util.h\char`\"{}}\par
+\subsection*{Functions}
+\begin{CompactItemize}
+\item
+mm\_\-mimeheader $\ast$ {\bf mm\_\-mimeheader\_\-new} (void)
+\item
+void {\bf mm\_\-mimeheader\_\-free} (struct mm\_\-mimeheader $\ast$header)
+\item
+mm\_\-mimeheader $\ast$ {\bf mm\_\-mimeheader\_\-generate} (const char $\ast$name, const char $\ast$value)
+\item
+int \textbf{mm\_\-mimeheader\_\-uncomment} (struct mm\_\-mimeheader $\ast$header)\label{mm__header_8c_26657e44385646fde63712d7110492d7}
+
+\item
+int \textbf{mm\_\-mimeheader\_\-uncommentbyname} (struct mm\_\-mimepart $\ast$part, const char $\ast$name)\label{mm__header_8c_2081ee4c43e88d5a318a783069a5d471}
+
+\item
+int \textbf{mm\_\-mimeheader\_\-uncommentall} (struct mm\_\-mimepart $\ast$part)\label{mm__header_8c_9f9bcb0fb26461bd349c15366748ecb7}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+This module contains functions for manipulating MIME headers
+
+\subsection{Function Documentation}
+\index{mm_header.c@{mm\_\-header.c}!mm_mimeheader_free@{mm\_\-mimeheader\_\-free}}
+\index{mm_mimeheader_free@{mm\_\-mimeheader\_\-free}!mm_header.c@{mm\_\-header.c}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void mm\_\-mimeheader\_\-free (struct mm\_\-mimeheader $\ast$ {\em header})}\label{mm__header_8c_61e3e62728f720ac381196ec59303064}
+
+
+Frees a MIME header object
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em header}]The MIME header object which to free \end{description}
+\end{Desc}
+\index{mm_header.c@{mm\_\-header.c}!mm_mimeheader_generate@{mm\_\-mimeheader\_\-generate}}
+\index{mm_mimeheader_generate@{mm\_\-mimeheader\_\-generate}!mm_header.c@{mm\_\-header.c}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-mimeheader$\ast$ mm\_\-mimeheader\_\-generate (const char $\ast$ {\em name}, const char $\ast$ {\em value})}\label{mm__header_8c_07a7f7dcebc91aa86f5478e1d84341a1}
+
+
+Creates a new MIME header, but does no checks whatsoever (create as-is) \index{mm_header.c@{mm\_\-header.c}!mm_mimeheader_new@{mm\_\-mimeheader\_\-new}}
+\index{mm_mimeheader_new@{mm\_\-mimeheader\_\-new}!mm_header.c@{mm\_\-header.c}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}struct mm\_\-mimeheader$\ast$ mm\_\-mimeheader\_\-new (void)}\label{mm__header_8c_2f2c5f2f640111caf3096ed46b5986a4}
+
+
+Creates a new MIME header object
+
+\begin{Desc}
+\item[Returns:]A new and initialized MIME header object \end{Desc}
+\begin{Desc}
+\item[See also:]\doxyref{mm\_\-mimeheader\_\-free}{p.}{mm__header_8c_61e3e62728f720ac381196ec59303064}\end{Desc}
+This function creates and initializes a new MIME header object, which must later be freed using \doxyref{mm\_\-mimeheader\_\-free()}{p.}{mm__header_8c_61e3e62728f720ac381196ec59303064} \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__internal_8h.tex b/main/minimime/mm-docs/latex/mm__internal_8h.tex
new file mode 100644
index 000000000..017f05bc0
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__internal_8h.tex
@@ -0,0 +1,45 @@
+\section{mm\_\-internal.h File Reference}
+\label{mm__internal_8h}\index{mm_internal.h@{mm\_\-internal.h}}
+{\tt \#include \char`\"{}mm.h\char`\"{}}\par
+\subsection*{Defines}
+\begin{CompactItemize}
+\item
+\#define \textbf{debugp}(m,...)
+\end{CompactItemize}
+\subsection*{Functions}
+\begin{Indent}{\bf Utility functions}\par
+\begin{CompactItemize}
+\item
+void $\ast$ {\bf xmalloc} (size\_\-t)
+\item
+void $\ast$ {\bf xrealloc} (void $\ast$, size\_\-t)
+\item
+void \textbf{xfree} (void $\ast$)\label{group__util_g35c4383ff0dee2de18985e6edfed1ae6}
+
+\item
+char $\ast$ \textbf{xstrdup} (const char $\ast$)\label{group__util_g2961ae74e91b0b28acdf9822438a581c}
+
+\item
+char $\ast$ {\bf xstrsep} (char $\ast$$\ast$, const char $\ast$)
+\end{CompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+Data definitions for Mini\-MIME
+
+\subsection{Define Documentation}
+\index{mm_internal.h@{mm\_\-internal.h}!debugp@{debugp}}
+\index{debugp@{debugp}!mm_internal.h@{mm\_\-internal.h}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define debugp(m, {\em ...})}\label{mm__internal_8h_089dd7bda22f552c35ebdc06a8849c56}
+
+
+\textbf{Value:}
+
+\begin{Code}\begin{verbatim}do { \
+ fprintf(stderr, "%s:%d:: ", __FILE__, __LINE__); \
+ fprintf(stderr, m, ## __VA_ARGS__); \
+ fprintf(stderr, "\n"); \
+ fflush(stderr); \
+} while (0);
+\end{verbatim}\end{Code}
diff --git a/main/minimime/mm-docs/latex/mm__mimepart_8c.tex b/main/minimime/mm-docs/latex/mm__mimepart_8c.tex
new file mode 100644
index 000000000..247887efd
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__mimepart_8c.tex
@@ -0,0 +1,69 @@
+\section{mm\_\-mimepart.c File Reference}
+\label{mm__mimepart_8c}\index{mm_mimepart.c@{mm\_\-mimepart.c}}
+{\tt \#include $<$sys/types.h$>$}\par
+{\tt \#include $<$sys/stat.h$>$}\par
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$unistd.h$>$}\par
+{\tt \#include $<$fcntl.h$>$}\par
+{\tt \#include $<$ctype.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+\subsection*{Functions}
+\begin{Indent}{\bf Creating and destroying MIME parts}\par
+\begin{CompactItemize}
+\item
+mm\_\-mimepart $\ast$ {\bf mm\_\-mimepart\_\-new} (void)
+\item
+mm\_\-mimepart $\ast$ {\bf mm\_\-mimepart\_\-fromfile} (const char $\ast$filename)
+\item
+void {\bf mm\_\-mimepart\_\-free} (struct mm\_\-mimepart $\ast$part)
+\end{CompactItemize}
+\end{Indent}
+\begin{Indent}{\bf Accessing the MIME part's mail header}\par
+\begin{CompactItemize}
+\item
+int {\bf mm\_\-mimepart\_\-attachheader} (struct mm\_\-mimepart $\ast$part, struct mm\_\-mimeheader $\ast$header)
+\item
+int {\bf mm\_\-mimepart\_\-countheaders} (struct mm\_\-mimepart $\ast$part)
+\item
+int {\bf mm\_\-mimepart\_\-countheaderbyname} (struct mm\_\-mimepart $\ast$part, const char $\ast$name)
+\item
+mm\_\-mimeheader $\ast$ {\bf mm\_\-mimepart\_\-getheaderbyname} (struct mm\_\-mimepart $\ast$part, const char $\ast$name, int idx)
+\item
+const char $\ast$ {\bf mm\_\-mimepart\_\-getheadervalue} (struct mm\_\-mimepart $\ast$part, const char $\ast$name, int idx)
+\item
+int {\bf mm\_\-mimepart\_\-headers\_\-start} (struct mm\_\-mimepart $\ast$part, struct mm\_\-mimeheader $\ast$$\ast$id)
+\item
+mm\_\-mimeheader $\ast$ {\bf mm\_\-mimepart\_\-headers\_\-next} (struct mm\_\-mimepart $\ast$part, struct mm\_\-mimeheader $\ast$$\ast$id)
+\end{CompactItemize}
+\end{Indent}
+\begin{Indent}{\bf Accessing and manipulating the MIME part's body}\par
+\begin{CompactItemize}
+\item
+char $\ast$ {\bf mm\_\-mimepart\_\-getbody} (struct mm\_\-mimepart $\ast$part, int opaque)
+\item
+void {\bf mm\_\-mimepart\_\-setbody} (struct mm\_\-mimepart $\ast$part, const char $\ast$data, int opaque)
+\item
+size\_\-t {\bf mm\_\-mimepart\_\-getlength} (struct mm\_\-mimepart $\ast$part)
+\item
+char $\ast$ {\bf mm\_\-mimepart\_\-decode} (struct mm\_\-mimepart $\ast$part)
+\item
+int {\bf mm\_\-mimepart\_\-flatten} (struct mm\_\-mimepart $\ast$part, char $\ast$$\ast$result, size\_\-t $\ast$length, int opaque)
+\item
+int {\bf mm\_\-mimepart\_\-setdefaultcontenttype} (struct mm\_\-mimepart $\ast$part, int composite)
+\end{CompactItemize}
+\end{Indent}
+\begin{Indent}{\bf Accessing the MIME part's Content-Type information}\par
+\begin{CompactItemize}
+\item
+void {\bf mm\_\-mimepart\_\-attachcontenttype} (struct mm\_\-mimepart $\ast$part, struct mm\_\-content $\ast$ct)
+\item
+mm\_\-content $\ast$ {\bf mm\_\-mimepart\_\-gettype} (struct mm\_\-mimepart $\ast$part)
+\end{CompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+This module contains functions for manipulating MIME header objects. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__mimeutil_8c.tex b/main/minimime/mm-docs/latex/mm__mimeutil_8c.tex
new file mode 100644
index 000000000..5ac2599b6
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__mimeutil_8c.tex
@@ -0,0 +1,50 @@
+\section{mm\_\-mimeutil.c File Reference}
+\label{mm__mimeutil_8c}\index{mm_mimeutil.c@{mm\_\-mimeutil.c}}
+{\tt \#include $<$sys/time.h$>$}\par
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$time.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+\subsection*{Defines}
+\begin{CompactItemize}
+\item
+\#define \textbf{MM\_\-DATE\_\-LENGTH}~50\label{mm__mimeutil_8c_257774e1a30f8190b3d99891be64210a}
+
+\end{CompactItemize}
+\subsection*{Functions}
+\begin{CompactItemize}
+\item
+int {\bf mm\_\-mimeutil\_\-gendate} (char $\ast$$\ast$result)
+\item
+int \textbf{mm\_\-mimeutil\_\-genboundary} (char $\ast$prefix, size\_\-t length, char $\ast$$\ast$result)\label{mm__mimeutil_8c_a72e503ba7ce2552456c6bd5935febe9}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+This module contains various MIME related utility functions.
+
+\subsection{Function Documentation}
+\index{mm_mimeutil.c@{mm\_\-mimeutil.c}!mm_mimeutil_gendate@{mm\_\-mimeutil\_\-gendate}}
+\index{mm_mimeutil_gendate@{mm\_\-mimeutil\_\-gendate}!mm_mimeutil.c@{mm\_\-mimeutil.c}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-mimeutil\_\-gendate (char $\ast$$\ast$ {\em result})}\label{mm__mimeutil_8c_a7b7f63b42dfa7a7f907b615aa4cd057}
+
+
+Generates an RFC 2822 conform date string
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em timezone}]Whether to include timezone information \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]A pointer to the actual date string \end{Desc}
+\begin{Desc}
+\item[Note:]The pointer returned must be freed some time\end{Desc}
+This function generates an RFC 2822 conform date string to use in message headers. It allocates memory to hold the string and returns a pointer to it. The generated date is in the format (example):
+
+Thu, 25 December 2003 16:35:22 +0100 (CET)
+
+This function dynamically allocates memory and returns a pointer to it. This memory should be released with free() once not needed anymore. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__param_8c.tex b/main/minimime/mm-docs/latex/mm__param_8c.tex
new file mode 100644
index 000000000..a3bc27e19
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__param_8c.tex
@@ -0,0 +1,38 @@
+\section{mm\_\-param.c File Reference}
+\label{mm__param_8c}\index{mm_param.c@{mm\_\-param.c}}
+{\tt \#include $<$sys/types.h$>$}\par
+{\tt \#include $<$sys/stat.h$>$}\par
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$unistd.h$>$}\par
+{\tt \#include $<$fcntl.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$ctype.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+{\tt \#include \char`\"{}mm\_\-util.h\char`\"{}}\par
+\subsection*{Functions}
+\begin{Indent}{\bf Functions for manipulating MIME parameters}\par
+{\em MIME parameters are properties attached to certain MIME headers, such as Content-Type and Content-Disposition. MIME parameters have a textual representations as in {\em name=value\/}. They contain important information about the MIME structure of a message, such as the boundary string used, which charset was used to encode the message and so on. This module provides simple to use functions to query or set MIME parameters.
+
+Each MIME header may hold an arbitrary amount of such parameters, which are delimeted by each other with a semicolon. }\begin{CompactItemize}
+\item
+mm\_\-param $\ast$ {\bf mm\_\-param\_\-new} (void)
+\item
+void {\bf mm\_\-param\_\-free} (struct mm\_\-param $\ast$param)
+\item
+mm\_\-param $\ast$ {\bf mm\_\-param\_\-generate} (const char $\ast$name, const char $\ast$value)
+\item
+char $\ast$ {\bf mm\_\-param\_\-setname} (struct mm\_\-param $\ast$param, const char $\ast$name, int copy)
+\item
+char $\ast$ {\bf mm\_\-param\_\-setvalue} (struct mm\_\-param $\ast$param, const char $\ast$value, int copy)
+\item
+const char $\ast$ {\bf mm\_\-param\_\-getname} (struct mm\_\-param $\ast$param)
+\item
+const char $\ast$ {\bf mm\_\-param\_\-getvalue} (struct mm\_\-param $\ast$param)
+\end{CompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+Functions to manipulate MIME parameters \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__parse_8c.tex b/main/minimime/mm-docs/latex/mm__parse_8c.tex
new file mode 100644
index 000000000..36613ad6c
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__parse_8c.tex
@@ -0,0 +1,90 @@
+\section{mm\_\-parse.c File Reference}
+\label{mm__parse_8c}\index{mm_parse.c@{mm\_\-parse.c}}
+{\tt \#include $<$sys/types.h$>$}\par
+{\tt \#include $<$sys/stat.h$>$}\par
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$unistd.h$>$}\par
+{\tt \#include $<$fcntl.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$ctype.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+{\tt \#include \char`\"{}mm\_\-util.h\char`\"{}}\par
+{\tt \#include \char`\"{}mimeparser.h\char`\"{}}\par
+{\tt \#include \char`\"{}mimeparser.tab.h\char`\"{}}\par
+\subsection*{Functions}
+\begin{CompactItemize}
+\item
+void {\bf PARSER\_\-initialize} (MM\_\-CTX $\ast$, int)
+\item
+void \textbf{PARSER\_\-setbuffer} (const char $\ast$)\label{mm__parse_8c_92d7d8e20b6def16fcf2649e0d88651f}
+
+\item
+void \textbf{PARSER\_\-setfp} (FILE $\ast$)\label{mm__parse_8c_04446354e4248226578b90007d728a7b}
+
+\item
+int {\bf mm\_\-parse\_\-mem} (MM\_\-CTX $\ast$ctx, const char $\ast$text, int parsemode, int flags)
+\item
+int {\bf mm\_\-parse\_\-file} (MM\_\-CTX $\ast$ctx, const char $\ast$filename, int parsemode, int flags)
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+Functions to parse MIME messages
+
+\subsection{Function Documentation}
+\index{mm_parse.c@{mm\_\-parse.c}!mm_parse_file@{mm\_\-parse\_\-file}}
+\index{mm_parse_file@{mm\_\-parse\_\-file}!mm_parse.c@{mm\_\-parse.c}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-parse\_\-file (MM\_\-CTX $\ast$ {\em ctx}, const char $\ast$ {\em filename}, int {\em parsemode}, int {\em flags})}\label{mm__parse_8c_cc9f623682b05f330c46e72e4e9d66cc}
+
+
+Parses a file into a Mini\-MIME context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context object \item[{\em filename}]The name of the file to parse \item[{\em parsemode}]The parsemode \item[{\em flags}]The flags to pass to the parser \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure \end{Desc}
+\begin{Desc}
+\item[Note:]Sets mm\_\-errno if an error occurs\end{Desc}
+This function parses a MIME message, stored in the filesystem according to the parseflags and stores the results in the Mini\-MIME context specified by ctx.
+
+The following modes can be used to specify how the message should be parsed:
+
+\begin{itemize}
+\item MM\_\-PARSE\_\-STRICT: Do not tolerate MIME violations\item MM\_\-PARSE\_\-LOOSE: Tolerate as much MIME violations as possible\end{itemize}
+
+
+The context needs to be initialized before using \doxyref{mm\_\-context\_\-new()}{p.}{group__context_g919fd41f85534d9c87c256857faa2610} and may be freed using \doxyref{mm\_\-context\_\-free()}{p.}{group__context_g76392d5269e9ef340c2f5f8336f7193b}. \index{mm_parse.c@{mm\_\-parse.c}!mm_parse_mem@{mm\_\-parse\_\-mem}}
+\index{mm_parse_mem@{mm\_\-parse\_\-mem}!mm_parse.c@{mm\_\-parse.c}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int mm\_\-parse\_\-mem (MM\_\-CTX $\ast$ {\em ctx}, const char $\ast$ {\em text}, int {\em parsemode}, int {\em flags})}\label{mm__parse_8c_58c960b6017f13d4e4ec5f09b3c38495}
+
+
+Parses a NUL-terminated string into a Mini\-MIME context
+
+\begin{Desc}
+\item[Parameters:]
+\begin{description}
+\item[{\em ctx}]A valid Mini\-MIME context object \item[{\em text}]The NUL-terminated string to parse \item[{\em parsemode}]The parsemode \item[{\em flags}]The flags to pass to the parser \end{description}
+\end{Desc}
+\begin{Desc}
+\item[Returns:]0 on success or -1 on failure \end{Desc}
+\begin{Desc}
+\item[Note:]Sets mm\_\-errno if an error occurs\end{Desc}
+This function parses a MIME message, stored in the memory region pointed to by text (must be NUL-terminated) according to the parseflags and stores the results in the Mini\-MIME context specified by ctx.
+
+The following modes can be used to specify how the message should be parsed:
+
+\begin{itemize}
+\item MM\_\-PARSE\_\-STRICT: Do not tolerate MIME violations\item MM\_\-PARSE\_\-LOOSE: Tolerate as much MIME violations as possible\end{itemize}
+
+
+The context needs to be initialized before using \doxyref{mm\_\-context\_\-new()}{p.}{group__context_g919fd41f85534d9c87c256857faa2610} and may be freed using \doxyref{mm\_\-context\_\-free()}{p.}{group__context_g76392d5269e9ef340c2f5f8336f7193b}. \index{mm_parse.c@{mm\_\-parse.c}!PARSER_initialize@{PARSER\_\-initialize}}
+\index{PARSER_initialize@{PARSER\_\-initialize}!mm_parse.c@{mm\_\-parse.c}}
+\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void PARSER\_\-initialize (MM\_\-CTX $\ast$ {\em newctx}, int {\em mode})}\label{mm__parse_8c_187cf71c0f6c2da1384823e3f20aa1a2}
+
+
+Initializes the parser engine. \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/mm__util_8c.tex b/main/minimime/mm-docs/latex/mm__util_8c.tex
new file mode 100644
index 000000000..929efe9bc
--- /dev/null
+++ b/main/minimime/mm-docs/latex/mm__util_8c.tex
@@ -0,0 +1,38 @@
+\section{mm\_\-util.c File Reference}
+\label{mm__util_8c}\index{mm_util.c@{mm\_\-util.c}}
+{\tt \#include $<$stdio.h$>$}\par
+{\tt \#include $<$stdlib.h$>$}\par
+{\tt \#include $<$string.h$>$}\par
+{\tt \#include $<$time.h$>$}\par
+{\tt \#include $<$assert.h$>$}\par
+{\tt \#include \char`\"{}mm\_\-internal.h\char`\"{}}\par
+\subsection*{Functions}
+\begin{CompactItemize}
+\item
+void $\ast$ {\bf xmalloc} (size\_\-t size)
+\item
+void $\ast$ {\bf xrealloc} (void $\ast$p, size\_\-t size)
+\item
+char $\ast$ \textbf{xstrdup} (const char $\ast$str)\label{mm__util_8c_700bf3013e33311eacdd1f20d13bdc9a}
+
+\item
+void \textbf{xfree} (void $\ast$p)\label{mm__util_8c_91fc771d8aa78ca2ac43244c491da52d}
+
+\item
+char $\ast$ {\bf mm\_\-unquote} (const char $\ast$string)
+\item
+char $\ast$ {\bf mm\_\-uncomment} (const char $\ast$string)
+\item
+char $\ast$ {\bf xstrsep} (char $\ast$$\ast$stringp, const char $\ast$delim)
+\item
+char $\ast$ {\bf mm\_\-stripchars} (char $\ast$input, char $\ast$strip)
+\item
+char $\ast$ {\bf mm\_\-addchars} (char $\ast$input, char $\ast$add, u\_\-int16\_\-t linelength)
+\item
+void \textbf{mm\_\-striptrailing} (char $\ast$$\ast$what, const char $\ast$charset)\label{mm__util_8c_a965d3d1c625253beffd53051b38548e}
+
+\end{CompactItemize}
+
+
+\subsection{Detailed Description}
+This module contains utility functions for the Mini\-MIME library \ No newline at end of file
diff --git a/main/minimime/mm-docs/latex/modules.tex b/main/minimime/mm-docs/latex/modules.tex
new file mode 100644
index 000000000..95e134be3
--- /dev/null
+++ b/main/minimime/mm-docs/latex/modules.tex
@@ -0,0 +1,12 @@
+\section{Mini\-MIME Modules}
+Here is a list of all modules:\begin{CompactList}
+\item \contentsline{section}{Manipulating Mini\-MIME codecs}{\pageref{group__codecs}}{}
+\item \contentsline{section}{Accessing and manipulating Content-Type objects}{\pageref{group__contenttype}}{}
+\item \contentsline{section}{Accessing and manipulating MIME contexts}{\pageref{group__context}}{}
+\item \contentsline{section}{Accessing and manipulating a message's envelope}{\pageref{group__envelope}}{}
+\item \contentsline{section}{Mini\-MIME error functions}{\pageref{group__error}}{}
+\item \contentsline{section}{Accessing and manipulating MIME parts}{\pageref{group__mimepart}}{}
+\item \contentsline{section}{MIME related utility functions}{\pageref{group__mimeutil}}{}
+\item \contentsline{section}{Accessing and manipulating MIME parameters}{\pageref{group__param}}{}
+\item \contentsline{section}{General purpose utility functions}{\pageref{group__util}}{}
+\end{CompactList}
diff --git a/main/minimime/mm-docs/latex/pages.tex b/main/minimime/mm-docs/latex/pages.tex
new file mode 100644
index 000000000..9fdec66bc
--- /dev/null
+++ b/main/minimime/mm-docs/latex/pages.tex
@@ -0,0 +1,5 @@
+\section{Mini\-MIME Related Pages}
+Here is a list of all related documentation pages:\begin{CompactList}
+\item \contentsline{section}{Bug List}{\pageref{bug}}{}
+
+\end{CompactList}
diff --git a/main/minimime/mm-docs/latex/refman.tex b/main/minimime/mm-docs/latex/refman.tex
new file mode 100644
index 000000000..0346dcdc7
--- /dev/null
+++ b/main/minimime/mm-docs/latex/refman.tex
@@ -0,0 +1,62 @@
+\documentclass[a4paper]{book}
+\usepackage{a4wide}
+\usepackage{makeidx}
+\usepackage{fancyhdr}
+\usepackage{graphicx}
+\usepackage{multicol}
+\usepackage{float}
+\usepackage{textcomp}
+\usepackage{alltt}
+\usepackage{doxygen}
+\makeindex
+\setcounter{tocdepth}{1}
+\renewcommand{\footrulewidth}{0.4pt}
+\begin{document}
+\begin{titlepage}
+\vspace*{7cm}
+\begin{center}
+{\Large Mini\-MIME Reference Manual}\\
+\vspace*{1cm}
+{\large Generated by Doxygen 1.5.1}\\
+\vspace*{0.5cm}
+{\small Thu Mar 29 17:59:08 2007}\\
+\end{center}
+\end{titlepage}
+\clearemptydoublepage
+\pagenumbering{roman}
+\tableofcontents
+\clearemptydoublepage
+\pagenumbering{arabic}
+\chapter{Mini\-MIME Module Index}
+\input{modules}
+\chapter{Mini\-MIME File Index}
+\input{files}
+\chapter{Mini\-MIME Page Index}
+\input{pages}
+\chapter{Mini\-MIME Module Documentation}
+\input{group__codecs}
+\include{group__contenttype}
+\include{group__context}
+\include{group__envelope}
+\include{group__error}
+\include{group__mimepart}
+\include{group__mimeutil}
+\include{group__param}
+\include{group__util}
+\chapter{Mini\-MIME File Documentation}
+\input{mm__codecs_8c}
+\include{mm__contenttype_8c}
+\include{mm__context_8c}
+\include{mm__envelope_8c}
+\include{mm__error_8c}
+\include{mm__header_8c}
+\include{mm__internal_8h}
+\include{mm__mimepart_8c}
+\include{mm__mimeutil_8c}
+\include{mm__param_8c}
+\include{mm__parse_8c}
+\include{mm__util_8c}
+\chapter{Mini\-MIME Page Documentation}
+\input{bug}
+\printindex
+\end{document}