MCPcopy Create free account
hub / github.com/acl-dev/acl / save

Method save

lib_acl_cpp/src/mime/mime_node.cpp:110–169  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

108}
109
110bool mime_node::save(pipe_manager& out) const {
111 if (m_emailFile.empty()) {
112 logger_error("m_emailFile empty!");
113 return false;
114 }
115
116 ifstream in ;
117 if (!in.open_read(m_emailFile)) {
118 logger_error("open input file %s error(%s)",
119 m_emailFile.c_str(), last_serror());
120 return false;
121 }
122
123 if (m_bodyBegin < 0 || m_bodyEnd <= m_bodyBegin) {
124 return true;
125 }
126
127 if (in.fseek(m_bodyBegin, SEEK_SET) < 0) {
128 logger_error("fseek error(%s)", last_serror());
129 return false;
130 }
131
132 // ����Ҫ����ʱ����ƥ��Ľ�����
133
134 mime_code* mime_decoder;
135 if (m_enableDecode) {
136 mime_decoder = mime_code::create(m_encoding, false);
137 if (mime_decoder) {
138 mime_decoder->set_status(false);
139 out.push_front(mime_decoder);
140 }
141 } else {
142 mime_decoder = NULL;
143 }
144
145 char buf[8192];
146 ssize_t len = (m_bodyEnd - m_bodyBegin);
147
148 while (len > 0) {
149 size_t size = sizeof(buf) > (size_t) len ? (size_t) len : sizeof(buf);
150 int ret = in.read(buf, size, true);
151 if (ret < 0) {
152 logger_error("read error(%s), ret: %d",
153 last_serror(), ret);
154 delete mime_decoder;
155 return false;
156 }
157
158 if (!out.update(buf, ret)) {
159 delete mime_decoder;
160 return false;
161 }
162 len -= ret;
163 }
164
165 bool result = out.update_end();
166
167 delete mime_decoder;

Callers 7

test_parseFunction · 0.45
doUploadMethod · 0.45
doUploadMethod · 0.45
mime_testFunction · 0.45
mime_test1Function · 0.45
save_mailMethod · 0.45
RrFunction · 0.45

Calls 12

fseekMethod · 0.80
push_frontMethod · 0.80
last_serrorFunction · 0.50
createFunction · 0.50
emptyMethod · 0.45
open_readMethod · 0.45
c_strMethod · 0.45
set_statusMethod · 0.45
readMethod · 0.45
updateMethod · 0.45
update_endMethod · 0.45
open_truncMethod · 0.45

Tested by 1

test_parseFunction · 0.36