blob: 0c9e0b83b363a3415311202c130a9c1ceed140dc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
/** --------------------------------------------------------------------
* @file mime-printbody.cc
* @brief Implementation of main mime parser components
* @author Andreas Aardal Hanssen
* @date 2002-2005
* ----------------------------------------------------------------- **/
#include "convert.h"
#include "iodevice.h"
#include "iofactory.h"
#include "mime-inputsource.h"
#include "mime-utils.h"
#include "mime.h"
#include <exception>
#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <ctype.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
using namespace ::std;
//------------------------------------------------------------------------
void Binc::MimePart::printBody(int fd,
IODevice &output,
unsigned int startoffset,
unsigned int length) const
{
if (!mimeSource || mimeSource->getFileDescriptor() != fd) {
delete mimeSource;
mimeSource = new MimeInputSource(fd);
}
mimeSource->reset();
mimeSource->seek(bodystartoffsetcrlf + startoffset);
if (startoffset + length > bodylength) length = bodylength - startoffset;
char c = '\0';
for (unsigned int i = 0; i < length; ++i) {
if (!mimeSource->getChar(&c)) break;
output << (char)c;
}
}
|