\hypertarget{htp__multipart__private_8h}{\section{htp\-\_\-multipart\-\_\-private.\-h File Reference} \label{htp__multipart__private_8h}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}} } {\ttfamily \#include \char`\"{}htp\-\_\-multipart.\-h\char`\"{}}\\* \subsection*{Data Structures} \begin{DoxyCompactItemize} \item struct \hyperlink{structhtp__mpartp__t}{htp\-\_\-mpartp\-\_\-t} \end{DoxyCompactItemize} \subsection*{Macros} \begin{DoxyCompactItemize} \item \#define \hyperlink{htp__multipart__private_8h_a5eb2e151a2a3cd8fa1319851dc6613ea}{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-O\-T\-H\-E\-R}~0 \item \#define \hyperlink{htp__multipart__private_8h_a43e620adc61859e224de6812cdaf60e8}{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-N\-A\-M\-E}~1 \item \#define \hyperlink{htp__multipart__private_8h_adcabb7cddd456fd88b5be4d14a2fa0cb}{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-F\-I\-L\-E\-N\-A\-M\-E}~2 \item \#define \hyperlink{htp__multipart__private_8h_ab211003862704ac434161fb7d31c9b96}{D\-E\-F\-A\-U\-L\-T\-\_\-\-F\-I\-L\-E\-\_\-\-E\-X\-T\-R\-A\-C\-T\-\_\-\-L\-I\-M\-I\-T}~16 \end{DoxyCompactItemize} \subsection*{Enumerations} \begin{DoxyCompactItemize} \item enum \hyperlink{htp__multipart__private_8h_ab028c14c6696b021fa4d0897ab1d0c5a}{htp\-\_\-part\-\_\-mode\-\_\-t} \{ \hyperlink{htp__multipart__private_8h_ab028c14c6696b021fa4d0897ab1d0c5aa9546d8ac24ff9e243d5c6dd2ac11b403}{M\-O\-D\-E\-\_\-\-L\-I\-N\-E} = 0, \hyperlink{htp__multipart__private_8h_ab028c14c6696b021fa4d0897ab1d0c5aa18ab79361b04c300e109656acf6107d3}{M\-O\-D\-E\-\_\-\-D\-A\-T\-A} = 1 \} \item enum \hyperlink{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3}{htp\-\_\-multipart\-\_\-state\-\_\-t} \{ \\* \hyperlink{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a98d2a2153b4ae0445fa0b114d65b94d9}{S\-T\-A\-T\-E\-\_\-\-I\-N\-I\-T} = 0, \hyperlink{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a3d3ea9fb2db0c6039f1065b6ee452fe9}{S\-T\-A\-T\-E\-\_\-\-D\-A\-T\-A} = 1, \hyperlink{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3ac5008cea5142bcf2475a66623c5e19a3}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y} = 2, \hyperlink{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3aea0a0bef8d0acba388a82c0a7decb1d0}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T1} = 3, \\* \hyperlink{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a2832f27e37862f9e36d1a7c172ca0507}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T2} = 4, \hyperlink{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a98415264effca8764534d3da6b898b8f}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S} = 5, \hyperlink{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a78b651290438710447053885fa6dd80d}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S\-\_\-\-C\-R} = 6 \} \end{DoxyCompactItemize} \subsection*{Functions} \begin{DoxyCompactItemize} \item \hyperlink{htp__core_8h_ab8a71422665c0773654b9b4d96f01e31}{htp\-\_\-status\-\_\-t} \hyperlink{htp__multipart__private_8h_a72b162a6bdf6226c5181a15ddf28ee41}{htp\-\_\-mpartp\-\_\-run\-\_\-request\-\_\-file\-\_\-data\-\_\-hook} (\hyperlink{structhtp__multipart__part__t}{htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$part, const unsigned char $\ast$data, size\-\_\-t len) \item \hyperlink{htp__core_8h_ab8a71422665c0773654b9b4d96f01e31}{htp\-\_\-status\-\_\-t} \hyperlink{htp__multipart__private_8h_a6acf2acff1d8828fba0df30a9397108c}{htp\-\_\-mpart\-\_\-part\-\_\-process\-\_\-headers} (\hyperlink{structhtp__multipart__part__t}{htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$part) \item \hyperlink{htp__core_8h_ab8a71422665c0773654b9b4d96f01e31}{htp\-\_\-status\-\_\-t} \hyperlink{htp__multipart__private_8h_ade5c03a799c0f5af2319900fe78a98e0}{htp\-\_\-mpartp\-\_\-parse\-\_\-header} (\hyperlink{structhtp__multipart__part__t}{htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$part, const unsigned char $\ast$data, size\-\_\-t len) \item \hyperlink{htp__core_8h_ab8a71422665c0773654b9b4d96f01e31}{htp\-\_\-status\-\_\-t} \hyperlink{htp__multipart__private_8h_a368c461de4ad8f9d864f5c29968e6f4a}{htp\-\_\-mpart\-\_\-part\-\_\-handle\-\_\-data} (\hyperlink{structhtp__multipart__part__t}{htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$part, const unsigned char $\ast$data, size\-\_\-t len, int is\-\_\-line) \item int \hyperlink{htp__multipart__private_8h_a7a8f439ef7958a0ec99e172c008ea4bb}{htp\-\_\-mpartp\-\_\-is\-\_\-boundary\-\_\-character} (int c) \item \hyperlink{structhtp__multipart__part__t}{htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$ \hyperlink{htp__multipart__private_8h_a852a6833ffbaf5dfd8577aaba8cdcef6}{htp\-\_\-mpart\-\_\-part\-\_\-create} (\hyperlink{structhtp__mpartp__t}{htp\-\_\-mpartp\-\_\-t} $\ast$parser) \item \hyperlink{htp__core_8h_ab8a71422665c0773654b9b4d96f01e31}{htp\-\_\-status\-\_\-t} \hyperlink{htp__multipart__private_8h_adf2e99c5087b2ec07b11bf4df9e2073f}{htp\-\_\-mpart\-\_\-part\-\_\-finalize\-\_\-data} (\hyperlink{structhtp__multipart__part__t}{htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$part) \item void \hyperlink{htp__multipart__private_8h_afc3a6b77b984cb093dbcd6370c42b887}{htp\-\_\-mpart\-\_\-part\-\_\-destroy} (\hyperlink{structhtp__multipart__part__t}{htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$part, int gave\-\_\-up\-\_\-data) \item \hyperlink{htp__core_8h_ab8a71422665c0773654b9b4d96f01e31}{htp\-\_\-status\-\_\-t} \hyperlink{htp__multipart__private_8h_ac51272765ee1a5c1b70980a0b96d4ece}{htp\-\_\-mpart\-\_\-part\-\_\-parse\-\_\-c\-\_\-d} (\hyperlink{structhtp__multipart__part__t}{htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$part) \end{DoxyCompactItemize} \subsection{Detailed Description} \begin{DoxyAuthor}{Author} Ivan Ristic \href{mailto:ivanr@webkreator.com}{\tt ivanr@webkreator.\-com} \end{DoxyAuthor} \subsection{Macro Definition Documentation} \hypertarget{htp__multipart__private_8h_adcabb7cddd456fd88b5be4d14a2fa0cb}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-F\-I\-L\-E\-N\-A\-M\-E@{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-F\-I\-L\-E\-N\-A\-M\-E}} \index{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-F\-I\-L\-E\-N\-A\-M\-E@{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-F\-I\-L\-E\-N\-A\-M\-E}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-F\-I\-L\-E\-N\-A\-M\-E}]{\setlength{\rightskip}{0pt plus 5cm}\#define C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-F\-I\-L\-E\-N\-A\-M\-E~2}}\label{htp__multipart__private_8h_adcabb7cddd456fd88b5be4d14a2fa0cb} \hypertarget{htp__multipart__private_8h_a43e620adc61859e224de6812cdaf60e8}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-N\-A\-M\-E@{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-N\-A\-M\-E}} \index{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-N\-A\-M\-E@{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-N\-A\-M\-E}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-N\-A\-M\-E}]{\setlength{\rightskip}{0pt plus 5cm}\#define C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-N\-A\-M\-E~1}}\label{htp__multipart__private_8h_a43e620adc61859e224de6812cdaf60e8} \hypertarget{htp__multipart__private_8h_a5eb2e151a2a3cd8fa1319851dc6613ea}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-O\-T\-H\-E\-R@{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-O\-T\-H\-E\-R}} \index{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-O\-T\-H\-E\-R@{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-O\-T\-H\-E\-R}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-O\-T\-H\-E\-R}]{\setlength{\rightskip}{0pt plus 5cm}\#define C\-D\-\_\-\-P\-A\-R\-A\-M\-\_\-\-O\-T\-H\-E\-R~0}}\label{htp__multipart__private_8h_a5eb2e151a2a3cd8fa1319851dc6613ea} \hypertarget{htp__multipart__private_8h_ab211003862704ac434161fb7d31c9b96}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!D\-E\-F\-A\-U\-L\-T\-\_\-\-F\-I\-L\-E\-\_\-\-E\-X\-T\-R\-A\-C\-T\-\_\-\-L\-I\-M\-I\-T@{D\-E\-F\-A\-U\-L\-T\-\_\-\-F\-I\-L\-E\-\_\-\-E\-X\-T\-R\-A\-C\-T\-\_\-\-L\-I\-M\-I\-T}} \index{D\-E\-F\-A\-U\-L\-T\-\_\-\-F\-I\-L\-E\-\_\-\-E\-X\-T\-R\-A\-C\-T\-\_\-\-L\-I\-M\-I\-T@{D\-E\-F\-A\-U\-L\-T\-\_\-\-F\-I\-L\-E\-\_\-\-E\-X\-T\-R\-A\-C\-T\-\_\-\-L\-I\-M\-I\-T}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{D\-E\-F\-A\-U\-L\-T\-\_\-\-F\-I\-L\-E\-\_\-\-E\-X\-T\-R\-A\-C\-T\-\_\-\-L\-I\-M\-I\-T}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-E\-F\-A\-U\-L\-T\-\_\-\-F\-I\-L\-E\-\_\-\-E\-X\-T\-R\-A\-C\-T\-\_\-\-L\-I\-M\-I\-T~16}}\label{htp__multipart__private_8h_ab211003862704ac434161fb7d31c9b96} \subsection{Enumeration Type Documentation} \hypertarget{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-multipart\-\_\-state\-\_\-t@{htp\-\_\-multipart\-\_\-state\-\_\-t}} \index{htp\-\_\-multipart\-\_\-state\-\_\-t@{htp\-\_\-multipart\-\_\-state\-\_\-t}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-multipart\-\_\-state\-\_\-t}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf htp\-\_\-multipart\-\_\-state\-\_\-t}}}\label{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3} \begin{Desc} \item[Enumerator]\par \begin{description} \index{S\-T\-A\-T\-E\-\_\-\-I\-N\-I\-T@{S\-T\-A\-T\-E\-\_\-\-I\-N\-I\-T}!htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!S\-T\-A\-T\-E\-\_\-\-I\-N\-I\-T@{S\-T\-A\-T\-E\-\_\-\-I\-N\-I\-T}}\item[{\em \hypertarget{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a98d2a2153b4ae0445fa0b114d65b94d9}{S\-T\-A\-T\-E\-\_\-\-I\-N\-I\-T}\label{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a98d2a2153b4ae0445fa0b114d65b94d9} }]Initial state, after the parser has been created but before the boundary initialized. \index{S\-T\-A\-T\-E\-\_\-\-D\-A\-T\-A@{S\-T\-A\-T\-E\-\_\-\-D\-A\-T\-A}!htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!S\-T\-A\-T\-E\-\_\-\-D\-A\-T\-A@{S\-T\-A\-T\-E\-\_\-\-D\-A\-T\-A}}\item[{\em \hypertarget{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a3d3ea9fb2db0c6039f1065b6ee452fe9}{S\-T\-A\-T\-E\-\_\-\-D\-A\-T\-A}\label{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a3d3ea9fb2db0c6039f1065b6ee452fe9} }]Processing data, waiting for a new line (which might indicate a new boundary). \index{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y}!htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y}}\item[{\em \hypertarget{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3ac5008cea5142bcf2475a66623c5e19a3}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y}\label{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3ac5008cea5142bcf2475a66623c5e19a3} }]Testing a potential boundary. \index{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T1@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T1}!htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T1@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T1}}\item[{\em \hypertarget{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3aea0a0bef8d0acba388a82c0a7decb1d0}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T1}\label{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3aea0a0bef8d0acba388a82c0a7decb1d0} }]Checking the first byte after a boundary. \index{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T2@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T2}!htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T2@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T2}}\item[{\em \hypertarget{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a2832f27e37862f9e36d1a7c172ca0507}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-I\-S\-\_\-\-L\-A\-S\-T2}\label{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a2832f27e37862f9e36d1a7c172ca0507} }]Checking the second byte after a boundary. \index{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S}!htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S}}\item[{\em \hypertarget{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a98415264effca8764534d3da6b898b8f}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S}\label{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a98415264effca8764534d3da6b898b8f} }]Consuming linear whitespace after a boundary. \index{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S\-\_\-\-C\-R@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S\-\_\-\-C\-R}!htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S\-\_\-\-C\-R@{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S\-\_\-\-C\-R}}\item[{\em \hypertarget{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a78b651290438710447053885fa6dd80d}{S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S\-\_\-\-C\-R}\label{htp__multipart__private_8h_a6cd627720a18a525cbc0da80bbb457e3a78b651290438710447053885fa6dd80d} }]Used after a C\-R byte is detected in S\-T\-A\-T\-E\-\_\-\-B\-O\-U\-N\-D\-A\-R\-Y\-\_\-\-E\-A\-T\-\_\-\-L\-W\-S. \end{description} \end{Desc} \hypertarget{htp__multipart__private_8h_ab028c14c6696b021fa4d0897ab1d0c5a}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-part\-\_\-mode\-\_\-t@{htp\-\_\-part\-\_\-mode\-\_\-t}} \index{htp\-\_\-part\-\_\-mode\-\_\-t@{htp\-\_\-part\-\_\-mode\-\_\-t}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-part\-\_\-mode\-\_\-t}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf htp\-\_\-part\-\_\-mode\-\_\-t}}}\label{htp__multipart__private_8h_ab028c14c6696b021fa4d0897ab1d0c5a} \begin{Desc} \item[Enumerator]\par \begin{description} \index{M\-O\-D\-E\-\_\-\-L\-I\-N\-E@{M\-O\-D\-E\-\_\-\-L\-I\-N\-E}!htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!M\-O\-D\-E\-\_\-\-L\-I\-N\-E@{M\-O\-D\-E\-\_\-\-L\-I\-N\-E}}\item[{\em \hypertarget{htp__multipart__private_8h_ab028c14c6696b021fa4d0897ab1d0c5aa9546d8ac24ff9e243d5c6dd2ac11b403}{M\-O\-D\-E\-\_\-\-L\-I\-N\-E}\label{htp__multipart__private_8h_ab028c14c6696b021fa4d0897ab1d0c5aa9546d8ac24ff9e243d5c6dd2ac11b403} }]When in line mode, the parser is handling part headers. \index{M\-O\-D\-E\-\_\-\-D\-A\-T\-A@{M\-O\-D\-E\-\_\-\-D\-A\-T\-A}!htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}}\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!M\-O\-D\-E\-\_\-\-D\-A\-T\-A@{M\-O\-D\-E\-\_\-\-D\-A\-T\-A}}\item[{\em \hypertarget{htp__multipart__private_8h_ab028c14c6696b021fa4d0897ab1d0c5aa18ab79361b04c300e109656acf6107d3}{M\-O\-D\-E\-\_\-\-D\-A\-T\-A}\label{htp__multipart__private_8h_ab028c14c6696b021fa4d0897ab1d0c5aa18ab79361b04c300e109656acf6107d3} }]When in data mode, the parser is consuming part data. \end{description} \end{Desc} \subsection{Function Documentation} \hypertarget{htp__multipart__private_8h_a852a6833ffbaf5dfd8577aaba8cdcef6}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-mpart\-\_\-part\-\_\-create@{htp\-\_\-mpart\-\_\-part\-\_\-create}} \index{htp\-\_\-mpart\-\_\-part\-\_\-create@{htp\-\_\-mpart\-\_\-part\-\_\-create}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-mpart\-\_\-part\-\_\-create}]{\setlength{\rightskip}{0pt plus 5cm}{\bf htp\-\_\-multipart\-\_\-part\-\_\-t}$\ast$ htp\-\_\-mpart\-\_\-part\-\_\-create ( \begin{DoxyParamCaption} \item[{{\bf htp\-\_\-mpartp\-\_\-t} $\ast$}]{parser} \end{DoxyParamCaption} )}}\label{htp__multipart__private_8h_a852a6833ffbaf5dfd8577aaba8cdcef6} Creates a new Multipart part. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em parser} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} New part instance, or N\-U\-L\-L on memory allocation failure. \end{DoxyReturn} \hypertarget{htp__multipart__private_8h_afc3a6b77b984cb093dbcd6370c42b887}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-mpart\-\_\-part\-\_\-destroy@{htp\-\_\-mpart\-\_\-part\-\_\-destroy}} \index{htp\-\_\-mpart\-\_\-part\-\_\-destroy@{htp\-\_\-mpart\-\_\-part\-\_\-destroy}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-mpart\-\_\-part\-\_\-destroy}]{\setlength{\rightskip}{0pt plus 5cm}void htp\-\_\-mpart\-\_\-part\-\_\-destroy ( \begin{DoxyParamCaption} \item[{{\bf htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$}]{part, } \item[{int}]{gave\-\_\-up\-\_\-data} \end{DoxyParamCaption} )}}\label{htp__multipart__private_8h_afc3a6b77b984cb093dbcd6370c42b887} Destroys a part. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em part} & \\ \hline \mbox{\tt in} & {\em gave\-\_\-up\-\_\-data} & \\ \hline \end{DoxyParams} \hypertarget{htp__multipart__private_8h_adf2e99c5087b2ec07b11bf4df9e2073f}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-mpart\-\_\-part\-\_\-finalize\-\_\-data@{htp\-\_\-mpart\-\_\-part\-\_\-finalize\-\_\-data}} \index{htp\-\_\-mpart\-\_\-part\-\_\-finalize\-\_\-data@{htp\-\_\-mpart\-\_\-part\-\_\-finalize\-\_\-data}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-mpart\-\_\-part\-\_\-finalize\-\_\-data}]{\setlength{\rightskip}{0pt plus 5cm}{\bf htp\-\_\-status\-\_\-t} htp\-\_\-mpart\-\_\-part\-\_\-finalize\-\_\-data ( \begin{DoxyParamCaption} \item[{{\bf htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$}]{part} \end{DoxyParamCaption} )}}\label{htp__multipart__private_8h_adf2e99c5087b2ec07b11bf4df9e2073f} Finalizes part processing. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em part} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} H\-T\-P\-\_\-\-O\-K on success, H\-T\-P\-\_\-\-E\-R\-R\-O\-R on failure. \end{DoxyReturn} \hypertarget{htp__multipart__private_8h_a368c461de4ad8f9d864f5c29968e6f4a}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-mpart\-\_\-part\-\_\-handle\-\_\-data@{htp\-\_\-mpart\-\_\-part\-\_\-handle\-\_\-data}} \index{htp\-\_\-mpart\-\_\-part\-\_\-handle\-\_\-data@{htp\-\_\-mpart\-\_\-part\-\_\-handle\-\_\-data}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-mpart\-\_\-part\-\_\-handle\-\_\-data}]{\setlength{\rightskip}{0pt plus 5cm}{\bf htp\-\_\-status\-\_\-t} htp\-\_\-mpart\-\_\-part\-\_\-handle\-\_\-data ( \begin{DoxyParamCaption} \item[{{\bf htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$}]{part, } \item[{const unsigned char $\ast$}]{data, } \item[{size\-\_\-t}]{len, } \item[{int}]{is\-\_\-line} \end{DoxyParamCaption} )}}\label{htp__multipart__private_8h_a368c461de4ad8f9d864f5c29968e6f4a} Handles part data. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em part} & \\ \hline \mbox{\tt in} & {\em data} & \\ \hline \mbox{\tt in} & {\em len} & \\ \hline \mbox{\tt in} & {\em is\-\_\-line} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} H\-T\-P\-\_\-\-O\-K on success, H\-T\-P\-\_\-\-E\-R\-R\-O\-R on failure. \end{DoxyReturn} \hypertarget{htp__multipart__private_8h_ac51272765ee1a5c1b70980a0b96d4ece}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-mpart\-\_\-part\-\_\-parse\-\_\-c\-\_\-d@{htp\-\_\-mpart\-\_\-part\-\_\-parse\-\_\-c\-\_\-d}} \index{htp\-\_\-mpart\-\_\-part\-\_\-parse\-\_\-c\-\_\-d@{htp\-\_\-mpart\-\_\-part\-\_\-parse\-\_\-c\-\_\-d}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-mpart\-\_\-part\-\_\-parse\-\_\-c\-\_\-d}]{\setlength{\rightskip}{0pt plus 5cm}{\bf htp\-\_\-status\-\_\-t} htp\-\_\-mpart\-\_\-part\-\_\-parse\-\_\-c\-\_\-d ( \begin{DoxyParamCaption} \item[{{\bf htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$}]{part} \end{DoxyParamCaption} )}}\label{htp__multipart__private_8h_ac51272765ee1a5c1b70980a0b96d4ece} Parses the Content-\/\-Disposition part header. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em part} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} H\-T\-P\-\_\-\-O\-K on success (header found and parsed), H\-T\-P\-\_\-\-D\-E\-C\-L\-I\-N\-E\-D if there is no C-\/\-D header or if it could not be processed, and H\-T\-P\-\_\-\-E\-R\-R\-O\-R on fatal error. \end{DoxyReturn} \hypertarget{htp__multipart__private_8h_a6acf2acff1d8828fba0df30a9397108c}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-mpart\-\_\-part\-\_\-process\-\_\-headers@{htp\-\_\-mpart\-\_\-part\-\_\-process\-\_\-headers}} \index{htp\-\_\-mpart\-\_\-part\-\_\-process\-\_\-headers@{htp\-\_\-mpart\-\_\-part\-\_\-process\-\_\-headers}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-mpart\-\_\-part\-\_\-process\-\_\-headers}]{\setlength{\rightskip}{0pt plus 5cm}{\bf htp\-\_\-status\-\_\-t} htp\-\_\-mpart\-\_\-part\-\_\-process\-\_\-headers ( \begin{DoxyParamCaption} \item[{{\bf htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$}]{part} \end{DoxyParamCaption} )}}\label{htp__multipart__private_8h_a6acf2acff1d8828fba0df30a9397108c} Processes part headers. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em part} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} H\-T\-P\-\_\-\-O\-K on success, H\-T\-P\-\_\-\-E\-R\-R\-O\-R on failure. \end{DoxyReturn} \hypertarget{htp__multipart__private_8h_a7a8f439ef7958a0ec99e172c008ea4bb}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-mpartp\-\_\-is\-\_\-boundary\-\_\-character@{htp\-\_\-mpartp\-\_\-is\-\_\-boundary\-\_\-character}} \index{htp\-\_\-mpartp\-\_\-is\-\_\-boundary\-\_\-character@{htp\-\_\-mpartp\-\_\-is\-\_\-boundary\-\_\-character}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-mpartp\-\_\-is\-\_\-boundary\-\_\-character}]{\setlength{\rightskip}{0pt plus 5cm}int htp\-\_\-mpartp\-\_\-is\-\_\-boundary\-\_\-character ( \begin{DoxyParamCaption} \item[{int}]{c} \end{DoxyParamCaption} )}}\label{htp__multipart__private_8h_a7a8f439ef7958a0ec99e172c008ea4bb} \hypertarget{htp__multipart__private_8h_ade5c03a799c0f5af2319900fe78a98e0}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-mpartp\-\_\-parse\-\_\-header@{htp\-\_\-mpartp\-\_\-parse\-\_\-header}} \index{htp\-\_\-mpartp\-\_\-parse\-\_\-header@{htp\-\_\-mpartp\-\_\-parse\-\_\-header}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-mpartp\-\_\-parse\-\_\-header}]{\setlength{\rightskip}{0pt plus 5cm}{\bf htp\-\_\-status\-\_\-t} htp\-\_\-mpartp\-\_\-parse\-\_\-header ( \begin{DoxyParamCaption} \item[{{\bf htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$}]{part, } \item[{const unsigned char $\ast$}]{data, } \item[{size\-\_\-t}]{len} \end{DoxyParamCaption} )}}\label{htp__multipart__private_8h_ade5c03a799c0f5af2319900fe78a98e0} Parses one part header. \begin{DoxyParams}[1]{Parameters} \mbox{\tt in} & {\em part} & \\ \hline \mbox{\tt in} & {\em data} & \\ \hline \mbox{\tt in} & {\em len} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} H\-T\-P\-\_\-\-O\-K on success, H\-T\-P\-\_\-\-D\-E\-C\-L\-I\-N\-E\-D on parsing error, H\-T\-P\-\_\-\-E\-R\-R\-O\-R on fatal error. \end{DoxyReturn} \hypertarget{htp__multipart__private_8h_a72b162a6bdf6226c5181a15ddf28ee41}{\index{htp\-\_\-multipart\-\_\-private.\-h@{htp\-\_\-multipart\-\_\-private.\-h}!htp\-\_\-mpartp\-\_\-run\-\_\-request\-\_\-file\-\_\-data\-\_\-hook@{htp\-\_\-mpartp\-\_\-run\-\_\-request\-\_\-file\-\_\-data\-\_\-hook}} \index{htp\-\_\-mpartp\-\_\-run\-\_\-request\-\_\-file\-\_\-data\-\_\-hook@{htp\-\_\-mpartp\-\_\-run\-\_\-request\-\_\-file\-\_\-data\-\_\-hook}!htp_multipart_private.h@{htp\-\_\-multipart\-\_\-private.\-h}} \subsubsection[{htp\-\_\-mpartp\-\_\-run\-\_\-request\-\_\-file\-\_\-data\-\_\-hook}]{\setlength{\rightskip}{0pt plus 5cm}{\bf htp\-\_\-status\-\_\-t} htp\-\_\-mpartp\-\_\-run\-\_\-request\-\_\-file\-\_\-data\-\_\-hook ( \begin{DoxyParamCaption} \item[{{\bf htp\-\_\-multipart\-\_\-part\-\_\-t} $\ast$}]{part, } \item[{const unsigned char $\ast$}]{data, } \item[{size\-\_\-t}]{len} \end{DoxyParamCaption} )}}\label{htp__multipart__private_8h_a72b162a6bdf6226c5181a15ddf28ee41}