Skip to content

Commit 847fde6

Browse files
committed
mt2exm: compact some repetitive code in exm_create_msg
1 parent 79ef653 commit 847fde6

File tree

1 file changed

+8
-29
lines changed

1 file changed

+8
-29
lines changed

tools/genimport.cpp

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ int exm_set_change_keys(TPROPVAL_ARRAY *props, eid_t change_num,
223223
return -ENOMEM;
224224
}
225225
std::unique_ptr<BINARY, gi_delete> pclbin(pcl.serialize());
226-
if (pclbin == nullptr){
226+
if (pclbin == nullptr) {
227227
fprintf(stderr, "exm: pcl_serialize: ENOMEM\n");
228228
return -ENOMEM;
229229
}
@@ -377,38 +377,17 @@ int exm_create_msg(uint64_t parent_fld, MESSAGE_CONTENT *ctnt)
377377
fprintf(stderr, "exm: allocate_cn(msg) RPC failed\n");
378378
return -EIO;
379379
}
380-
381-
XID zxid{g_public_folder ? rop_util_make_domain_guid(g_user_id) :
382-
rop_util_make_user_guid(g_user_id), change_num};
383-
char tmp_buff[22];
384-
BINARY bxid;
385-
EXT_PUSH ep;
386-
if (!ep.init(tmp_buff, std::size(tmp_buff), 0) ||
387-
ep.p_xid(zxid) != pack_result::ok) {
388-
fprintf(stderr, "exm: ext_push: ENOMEM\n");
389-
return -ENOMEM;
390-
}
391-
bxid.pv = tmp_buff;
392-
bxid.cb = ep.m_offset;
393-
PCL pcl;
394-
if (!pcl.append(zxid)) {
395-
fprintf(stderr, "exm: pcl_append: ENOMEM\n");
396-
return -ENOMEM;
397-
}
398-
std::unique_ptr<BINARY, gi_delete> pclbin(pcl.serialize());
399-
if (pclbin == nullptr){
400-
fprintf(stderr, "exm: pcl_serialize: ENOMEM\n");
401-
return -ENOMEM;
402-
}
403-
auto props = &ctnt->proplist;
404380
ec_error_t ret;
405-
if ((ret = props->set(PidTagMid, &msg_id)) != ecSuccess ||
406-
(ret = props->set(PidTagChangeNumber, &change_num)) != ecSuccess ||
407-
(ret = props->set(PR_CHANGE_KEY, &bxid)) != ecSuccess ||
408-
(ret = props->set(PR_PREDECESSOR_CHANGE_LIST, pclbin.get())) != ecSuccess) {
381+
if ((ret = ctnt->proplist.set(PidTagMid, &msg_id)) != ecSuccess) {
409382
fprintf(stderr, "exm: tpropval: %s\n", mapi_strerror(ret));
410383
return ece2nerrno(ret);
411384
}
385+
auto iret = exm_set_change_keys(&ctnt->proplist, change_num);
386+
if (iret != 0) {
387+
fprintf(stderr, "exm: tpropval: %s\n", strerror(-iret));
388+
return iret;
389+
}
390+
412391
if (!exmdb_client->write_message(g_storedir, CP_UTF8, parent_fld, ctnt, &ret)) {
413392
fprintf(stderr, "exm: write_message RPC failed\n");
414393
return -EIO;

0 commit comments

Comments
 (0)