4
4
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
5
<title>CamelMimeParser</title>
6
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
6
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
7
7
<link rel="home" href="index.html" title="Camel Reference Manual">
8
8
<link rel="up" href="MIME.html" title="MIME Objects">
9
9
<link rel="prev" href="camel-CamelMimeMessage.html" title="CamelMimeMessage">
89
89
(<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>);
92
<div class="refsect1" lang="en">
92
<div class="refsect1" title="Description">
93
93
<a name="camel-CamelMimeParser.description"></a><h2>Description</h2>
97
<div class="refsect1" lang="en">
97
<div class="refsect1" title="Details">
98
98
<a name="camel-CamelMimeParser.details"></a><h2>Details</h2>
99
<div class="refsect2" lang="en">
99
<div class="refsect2" title="struct CamelMimeParser">
100
100
<a name="CamelMimeParser"></a><h3>struct CamelMimeParser</h3>
101
101
<pre class="programlisting">struct CamelMimeParser {
102
102
CamelObject parent;
139
<div class="refsect2" lang="en">
139
<div class="refsect2" title="camel_mime_parser_new ()">
140
140
<a name="camel-mime-parser-new"></a><h3>camel_mime_parser_new ()</h3>
141
141
<pre class="programlisting"><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="returnvalue">CamelMimeParser</span></a> * camel_mime_parser_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
143
Create a new CamelMimeParser object.</p>
143
Create a new CamelMimeParser object.
144
145
<div class="variablelist"><table border="0">
145
146
<col align="left" valign="top">
181
182
Initialise the scanner with an fd. The scanner's offsets
182
183
will be relative to the current file position of the file
183
184
descriptor. As a result, seekable descritors should
184
be seeked using the parser seek functions.</p>
185
be seeked using the parser seek functions.
185
187
<div class="variablelist"><table border="0">
186
188
<col align="left" valign="top">
207
209
Initialise the scanner with a source stream. The scanner's
208
210
offsets will be relative to the current file position of
209
211
the stream. As a result, seekable streams should only
210
be seeked using the parser seek function.</p>
212
be seeked using the parser seek function.
211
214
<div class="variablelist"><table border="0">
212
215
<col align="left" valign="top">
221
<div class="refsect2" lang="en">
224
<div class="refsect2" title="camel_mime_parser_stream ()">
222
225
<a name="camel-mime-parser-stream"></a><h3>camel_mime_parser_stream ()</h3>
223
226
<pre class="programlisting"><a class="link" href="camel-CamelStream.html#CamelStream" title="struct CamelStream"><span class="returnvalue">CamelStream</span></a> * camel_mime_parser_stream (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>);</pre>
225
228
Get the stream, if any, the parser has been initialised
226
229
with. May be used to setup sub-streams, but should not
227
230
be read from directly (without saving and restoring
228
the seek position in between).</p>
231
the seek position in between).
229
233
<div class="variablelist"><table border="0">
230
234
<col align="left" valign="top">
312
<div class="refsect2" lang="en">
318
<div class="refsect2" title="camel_mime_parser_scan_pre_from ()">
313
319
<a name="camel-mime-parser-scan-pre-from"></a><h3>camel_mime_parser_scan_pre_from ()</h3>
314
320
<pre class="programlisting"><span class="returnvalue">void</span> camel_mime_parser_scan_pre_from (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>,
315
321
<em class="parameter"><code><span class="type">gboolean</span> scan_pre_from</code></em>);</pre>
317
323
Tell the scanner whether we want to know abou the pre-from
318
324
data during a scan. If we do, then we may get an additional
319
state CAMEL_MIME_PARSER_STATE_PRE_FROM which returns the specified data.</p>
325
state CAMEL_MIME_PARSER_STATE_PRE_FROM which returns the specified data.
320
327
<div class="variablelist"><table border="0">
321
328
<col align="left" valign="top">
459
<div class="refsect2" lang="en">
469
<div class="refsect2" title="camel_mime_parser_state ()">
460
470
<a name="camel-mime-parser-state"></a><h3>camel_mime_parser_state ()</h3>
461
471
<pre class="programlisting"><a class="link" href="camel-CamelMimeParser.html#camel-mime-parser-state-t" title="enum camel_mime_parser_state_t"><span class="returnvalue">camel_mime_parser_state_t</span></a> camel_mime_parser_state (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>);</pre>
463
Get the current parser state.</p>
473
Get the current parser state.
464
475
<div class="variablelist"><table border="0">
465
476
<col align="left" valign="top">
481
<div class="refsect2" lang="en">
492
<div class="refsect2" title="camel_mime_parser_push_state ()">
482
493
<a name="camel-mime-parser-push-state"></a><h3>camel_mime_parser_push_state ()</h3>
483
494
<pre class="programlisting"><span class="returnvalue">void</span> camel_mime_parser_push_state (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *mp</code></em>,
484
495
<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#camel-mime-parser-state-t" title="enum camel_mime_parser_state_t"><span class="type">camel_mime_parser_state_t</span></a> newstate</code></em>,
485
496
<em class="parameter"><code>const <span class="type">gchar</span> *boundary</code></em>);</pre>
487
498
Pre-load a new parser state. Used to post-parse multipart content
489
501
<div class="variablelist"><table border="0">
490
502
<col align="left" valign="top">
548
<div class="refsect2" lang="en">
561
<div class="refsect2" title="camel_mime_parser_content_type ()">
549
562
<a name="camel-mime-parser-content-type"></a><h3>camel_mime_parser_content_type ()</h3>
550
563
<pre class="programlisting"><a class="link" href="camel-camel-mime-utils.html#CamelContentType" title="CamelContentType"><span class="returnvalue">CamelContentType</span></a> * camel_mime_parser_content_type (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>);</pre>
552
Get the content type defined in the current part.</p>
565
Get the content type defined in the current part.
553
567
<div class="variablelist"><table border="0">
554
568
<col align="left" valign="top">
572
<div class="refsect2" lang="en">
586
<div class="refsect2" title="camel_mime_parser_header ()">
573
587
<a name="camel-mime-parser-header"></a><h3>camel_mime_parser_header ()</h3>
574
588
<pre class="programlisting">const <span class="returnvalue">gchar</span> * camel_mime_parser_header (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *m</code></em>,
575
589
<em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>,
576
590
<em class="parameter"><code><span class="type">gint</span> *offset</code></em>);</pre>
578
Lookup a header by name.</p>
592
Lookup a header by name.
579
594
<div class="variablelist"><table border="0">
580
595
<col align="left" valign="top">
603
<div class="refsect2" lang="en">
618
<div class="refsect2" title="camel_mime_parser_headers_raw ()">
604
619
<a name="camel-mime-parser-headers-raw"></a><h3>camel_mime_parser_headers_raw ()</h3>
605
620
<pre class="programlisting">struct <a class="link" href="camel-camel-mime-utils.html#camel-header-raw" title="struct camel_header_raw"><span class="returnvalue">_camel_header_raw</span></a> * camel_mime_parser_headers_raw
606
621
(<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *m</code></em>);</pre>
608
623
Get the list of the raw headers which are defined for the
609
624
current state of the parser. These headers are valid
610
until the next call to <code class="function">parser_step()</code>, or <code class="function">parser_drop_step()</code>.</p>
625
until the next call to <code class="function">parser_step()</code>, or <code class="function">parser_drop_step()</code>.
611
627
<div class="variablelist"><table border="0">
612
628
<col align="left" valign="top">
614
630
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
615
631
<td> The raw headers, or NULL if there are no headers
616
632
defined for the current part or state. These are READ ONLY.
637
<p class="since">Since 2.22</p>
622
<div class="refsect2" lang="en">
640
<div class="refsect2" title="camel_mime_parser_preface ()">
623
641
<a name="camel-mime-parser-preface"></a><h3>camel_mime_parser_preface ()</h3>
624
642
<pre class="programlisting">const <span class="returnvalue">gchar</span> * camel_mime_parser_preface (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *m</code></em>);</pre>
626
644
Retrieve the preface text for the current multipart.
627
Can only be used when the state is CAMEL_MIME_PARSER_STATE_MULTIPART_END.</p>
645
Can only be used when the state is CAMEL_MIME_PARSER_STATE_MULTIPART_END.
628
647
<div class="variablelist"><table border="0">
629
648
<col align="left" valign="top">
631
650
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
632
651
<td> The preface text, or NULL if there wasn't any.
656
<p class="since">Since 2.22</p>
638
<div class="refsect2" lang="en">
659
<div class="refsect2" title="camel_mime_parser_postface ()">
639
660
<a name="camel-mime-parser-postface"></a><h3>camel_mime_parser_postface ()</h3>
640
661
<pre class="programlisting">const <span class="returnvalue">gchar</span> * camel_mime_parser_postface (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *m</code></em>);</pre>
642
663
Retrieve the postface text for the current multipart.
643
664
Only returns valid data when the current state if
644
CAMEL_MIME_PARSER_STATE_MULTIPART_END.</p>
665
CAMEL_MIME_PARSER_STATE_MULTIPART_END.
645
667
<div class="variablelist"><table border="0">
646
668
<col align="left" valign="top">
648
670
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
649
671
<td> The postface text, or NULL if there wasn't any.
676
<p class="since">Since 2.22</p>
655
<div class="refsect2" lang="en">
679
<div class="refsect2" title="camel_mime_parser_from_line ()">
656
680
<a name="camel-mime-parser-from-line"></a><h3>camel_mime_parser_from_line ()</h3>
657
681
<pre class="programlisting">const <span class="returnvalue">gchar</span> * camel_mime_parser_from_line (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *m</code></em>);</pre>
664
688
The return value will remain valid while in the CAMEL_MIME_PARSER_STATE_FROM
665
state, or any deeper state.</p>
689
state, or any deeper state.
666
691
<div class="variablelist"><table border="0">
667
692
<col align="left" valign="top">
669
694
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
670
695
<td> The From line, or NULL if called out of context.
700
<p class="since">Since 2.22</p>
676
<div class="refsect2" lang="en">
703
<div class="refsect2" title="camel_mime_parser_filter_add ()">
677
704
<a name="camel-mime-parser-filter-add"></a><h3>camel_mime_parser_filter_add ()</h3>
678
705
<pre class="programlisting"><span class="returnvalue">gint</span> camel_mime_parser_filter_add (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *m</code></em>,
679
706
<em class="parameter"><code><a class="link" href="camel-CamelMimeFilter.html#CamelMimeFilter" title="struct CamelMimeFilter"><span class="type">CamelMimeFilter</span></a> *mf</code></em>);</pre>
686
713
Note that filters are only applied to the body content of messages, and once
687
714
a filter has been set, all content returned by a <code class="function">filter_step()</code> with a state
688
of CAMEL_MIME_PARSER_STATE_BODY will have passed through the filter.</p>
715
of CAMEL_MIME_PARSER_STATE_BODY will have passed through the filter.
689
717
<div class="variablelist"><table border="0">
690
718
<col align="left" valign="top">
692
720
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
693
721
<td> An id that may be passed to <code class="function">filter_remove()</code> to remove
694
722
the filter, or -1 if the operation failed.
727
<p class="since">Since 2.22</p>
700
<div class="refsect2" lang="en">
730
<div class="refsect2" title="camel_mime_parser_filter_remove ()">
701
731
<a name="camel-mime-parser-filter-remove"></a><h3>camel_mime_parser_filter_remove ()</h3>
702
732
<pre class="programlisting"><span class="returnvalue">void</span> camel_mime_parser_filter_remove (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *m</code></em>,
703
733
<em class="parameter"><code><span class="type">gint</span> id</code></em>);</pre>
705
735
Remove a processing filter from the pipeline. There is no
706
restriction on the order the filters can be removed.</p>
736
restriction on the order the filters can be removed.
738
<p class="since">Since 2.22</p>
709
<div class="refsect2" lang="en">
741
<div class="refsect2" title="camel_mime_parser_tell ()">
710
742
<a name="camel-mime-parser-tell"></a><h3>camel_mime_parser_tell ()</h3>
711
743
<pre class="programlisting"><span class="returnvalue">off_t</span> camel_mime_parser_tell (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>);</pre>
724
756
of the current data block.
725
757
CAMEL_MIME_PARSER_STATE_*_END, The position of the character starting
726
758
the next section of the scan (the last position + 1 of
727
the respective current state).</p>
759
the respective current state).
728
761
<div class="variablelist"><table border="0">
729
762
<col align="left" valign="top">
737
770
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
777
<p class="since">Since 2.22</p>
745
<div class="refsect2" lang="en">
780
<div class="refsect2" title="camel_mime_parser_seek ()">
746
781
<a name="camel-mime-parser-seek"></a><h3>camel_mime_parser_seek ()</h3>
747
782
<pre class="programlisting"><span class="returnvalue">off_t</span> camel_mime_parser_seek (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>,
748
783
<em class="parameter"><code><span class="type">off_t</span> offset</code></em>,
754
789
Note that if the source stream/descriptor was not
755
790
positioned at 0 to begin with, and an absolute seek
756
791
is specified (whence != SEEK_CUR), then the seek
757
position may not match the desired seek position.</p>
792
position may not match the desired seek position.
758
794
<div class="variablelist"><table border="0">
759
795
<col align="left" valign="top">
778
814
<td> The new seek offset, or -1 on
779
815
an error (for example, trying to seek on a non-seekable
780
816
stream or file descriptor).
822
<p class="since">Since 2.22</p>
787
<div class="refsect2" lang="en">
825
<div class="refsect2" title="camel_mime_parser_tell_start_headers ()">
788
826
<a name="camel-mime-parser-tell-start-headers"></a><h3>camel_mime_parser_tell_start_headers ()</h3>
789
827
<pre class="programlisting"><span class="returnvalue">off_t</span> camel_mime_parser_tell_start_headers
790
828
(<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>);</pre>
792
830
Find out the position within the file of where the
793
831
headers started, this is cached by the parser
795
834
<div class="variablelist"><table border="0">
796
835
<col align="left" valign="top">
804
843
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
805
844
<td> The header start position, or -1 if
806
845
no headers were scanned in the current state.
851
<p class="since">Since 2.22</p>
813
<div class="refsect2" lang="en">
854
<div class="refsect2" title="camel_mime_parser_tell_start_from ()">
814
855
<a name="camel-mime-parser-tell-start-from"></a><h3>camel_mime_parser_tell_start_from ()</h3>
815
856
<pre class="programlisting"><span class="returnvalue">off_t</span> camel_mime_parser_tell_start_from (<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>);</pre>
817
858
If the parser is scanning From lines, then this returns
818
the position of the start of the From line.</p>
859
the position of the start of the From line.
819
861
<div class="variablelist"><table border="0">
820
862
<col align="left" valign="top">
828
870
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
829
871
<td> The start of the from line, or -1 if there
830
872
was no From line, or From lines are not being scanned.
878
<p class="since">Since 2.22</p>
837
<div class="refsect2" lang="en">
881
<div class="refsect2" title="camel_mime_parser_tell_start_boundary ()">
838
882
<a name="camel-mime-parser-tell-start-boundary"></a><h3>camel_mime_parser_tell_start_boundary ()</h3>
839
883
<pre class="programlisting"><span class="returnvalue">off_t</span> camel_mime_parser_tell_start_boundary
840
884
(<em class="parameter"><code><a class="link" href="camel-CamelMimeParser.html#CamelMimeParser" title="struct CamelMimeParser"><span class="type">CamelMimeParser</span></a> *parser</code></em>);</pre>
842
886
When parsing a multipart, this returns the start of the last
844
889
<div class="variablelist"><table border="0">
845
890
<col align="left" valign="top">