@@ -1800,9 +1800,7 @@ static BOOL mail_engine_sync_mailbox(IDB_ITEM *pidb,
18001800 uint64_t parent_fid;
18011801 uint64_t commit_max;
18021802 char sql_string[1280 ];
1803- PROPTAG_ARRAY proptags;
18041803 char encoded_name[1024 ];
1805- uint32_t proptag_buff[6 ];
18061804
18071805 dir = common_util_get_maildir ();
18081806 mlog (LV_NOTICE, " Running sync_mailbox for %s" , dir);
@@ -1814,14 +1812,11 @@ static BOOL mail_engine_sync_mailbox(IDB_ITEM *pidb,
18141812 NULL , TABLE_FLAG_DEPTH|TABLE_FLAG_NONOTIFICATIONS,
18151813 NULL , &table_id, &row_count))
18161814 return FALSE ;
1817- proptags.count = 6 ;
1818- proptags.pproptag = proptag_buff;
1819- proptag_buff[0 ] = PidTagFolderId;
1820- proptag_buff[1 ] = PidTagParentFolderId;
1821- proptag_buff[2 ] = PR_ATTR_HIDDEN;
1822- proptag_buff[3 ] = PR_CONTAINER_CLASS;
1823- proptag_buff[4 ] = PR_DISPLAY_NAME;
1824- proptag_buff[5 ] = PR_LOCAL_COMMIT_TIME_MAX;
1815+
1816+ static constexpr proptag_t proptag_buff[] =
1817+ {PidTagFolderId, PidTagParentFolderId, PR_ATTR_HIDDEN,
1818+ PR_CONTAINER_CLASS, PR_DISPLAY_NAME, PR_LOCAL_COMMIT_TIME_MAX};
1819+ static constexpr PROPTAG_ARRAY proptags = {std::size (proptag_buff), deconst (proptag_buff)};
18251820 if (!exmdb_client::query_table (dir, NULL ,
18261821 CP_ACP, table_id, &proptags, 0 , row_count, &rows)) {
18271822 exmdb_client::unload_table (dir, table_id);
@@ -2222,14 +2217,10 @@ static void *midbme_scanwork(void *param)
22222217static int mail_engine_mckfl (int argc, char **argv, int sockd)
22232218{
22242219 uint64_t quota;
2225- PROPTAG_ARRAY proptags;
2220+ static constexpr proptag_t tmp_proptags[] = {PR_PROHIBIT_RECEIVE_QUOTA, PR_MESSAGE_SIZE_EXTENDED};
2221+ static constexpr PROPTAG_ARRAY proptags = {std::size (tmp_proptags), deconst (tmp_proptags)};
22262222 TPROPVAL_ARRAY propvals;
2227- uint32_t tmp_proptags[2 ];
22282223
2229- proptags.count = 2 ;
2230- proptags.pproptag = tmp_proptags;
2231- tmp_proptags[0 ] = PR_PROHIBIT_RECEIVE_QUOTA;
2232- tmp_proptags[1 ] = PR_MESSAGE_SIZE_EXTENDED;
22332224 if (!exmdb_client::get_store_properties (argv[1 ], CP_ACP,
22342225 &proptags, &propvals))
22352226 return MIDB_E_MDB_GETSTOREPROPS;
@@ -2673,8 +2664,6 @@ static int mail_engine_mrenf(int argc, char **argv, int sockd)
26732664 uint64_t folder_id2;
26742665 uint64_t change_num;
26752666 char temp_name[256 ];
2676- uint32_t tmp_proptag;
2677- PROPTAG_ARRAY proptags;
26782667 char decoded_name[512 ];
26792668 PROBLEM_ARRAY problems;
26802669 char encoded_name[1024 ];
@@ -2745,11 +2734,11 @@ static int mail_engine_mrenf(int argc, char **argv, int sockd)
27452734 if (errcode != ecSuccess)
27462735 return MIDB_E_MDB_PARTIAL;
27472736 }
2748- proptags.count = 1 ;
2749- proptags.pproptag = &tmp_proptag;
2750- tmp_proptag = PR_PREDECESSOR_CHANGE_LIST;
2737+
27512738 if (!exmdb_client::allocate_cn (argv[1 ], &change_num))
27522739 return MIDB_E_MDB_ALLOCID;
2740+ static constexpr proptag_t tmp_proptag[] = {PR_PREDECESSOR_CHANGE_LIST};
2741+ static constexpr PROPTAG_ARRAY proptags = {std::size (tmp_proptag), deconst (tmp_proptag)};
27532742 if (!exmdb_client::get_folder_properties (argv[1 ], CP_ACP,
27542743 rop_util_make_eid_ex (1 , folder_id), &proptags, &propvals))
27552744 return MIDB_E_MDB_GETFOLDERPROPS;
@@ -3359,9 +3348,7 @@ static int mail_engine_psflg(int argc, char **argv, int sockd)
33593348{
33603349 uint64_t read_cn;
33613350 uint64_t message_id;
3362- uint32_t tmp_proptag;
33633351 char sql_string[1024 ];
3364- PROPTAG_ARRAY proptags;
33653352 PROBLEM_ARRAY problems;
33663353 TPROPVAL_ARRAY propvals;
33673354
@@ -3387,9 +3374,8 @@ static int mail_engine_psflg(int argc, char **argv, int sockd)
33873374 gx_sql_exec (pidb->psqlite , sql_string);
33883375 }
33893376 if (NULL != strchr (argv[4 ], ' U' )) {
3390- proptags.count = 1 ;
3391- proptags.pproptag = &tmp_proptag;
3392- tmp_proptag = PR_MESSAGE_FLAGS;
3377+ static constexpr proptag_t tmp_proptag[] = {PR_MESSAGE_FLAGS};
3378+ static constexpr PROPTAG_ARRAY proptags = {std::size (tmp_proptag), deconst (tmp_proptag)};
33933379 if (!exmdb_client::get_message_properties (argv[1 ], NULL ,
33943380 CP_ACP, rop_util_make_eid_ex (1 , message_id),
33953381 &proptags, &propvals) || propvals.count == 0 )
@@ -3444,9 +3430,7 @@ static int mail_engine_prflg(int argc, char **argv, int sockd)
34443430{
34453431 uint64_t read_cn;
34463432 uint64_t message_id;
3447- uint32_t tmp_proptag;
34483433 char sql_string[1024 ];
3449- PROPTAG_ARRAY proptags;
34503434 PROBLEM_ARRAY problems;
34513435 TPROPVAL_ARRAY propvals;
34523436
@@ -3472,9 +3456,8 @@ static int mail_engine_prflg(int argc, char **argv, int sockd)
34723456 gx_sql_exec (pidb->psqlite , sql_string);
34733457 }
34743458 if (NULL != strchr (argv[4 ], ' U' )) {
3475- proptags.count = 1 ;
3476- proptags.pproptag = &tmp_proptag;
3477- tmp_proptag = PR_MESSAGE_FLAGS;
3459+ static constexpr proptag_t tmp_proptag[] = {PR_MESSAGE_FLAGS};
3460+ static constexpr PROPTAG_ARRAY proptags = {std::size (tmp_proptag), deconst (tmp_proptag)};
34783461 if (!exmdb_client::get_message_properties (argv[1 ], nullptr ,
34793462 CP_ACP, rop_util_make_eid_ex (1 , message_id),
34803463 &proptags, &propvals) || propvals.count == 0 )
@@ -3798,16 +3781,12 @@ static void mail_engine_add_notification_message(
37983781 char flags_buff[16 ];
37993782 char mid_string[128 ];
38003783 char sql_string[1024 ];
3801- PROPTAG_ARRAY proptags;
38023784 TPROPVAL_ARRAY propvals;
3803- uint32_t tmp_proptags[4 ];
3804-
3805- proptags.count = 4 ;
3806- proptags.pproptag = tmp_proptags;
3807- tmp_proptags[0 ] = PR_MESSAGE_DELIVERY_TIME;
3808- tmp_proptags[1 ] = PR_LAST_MODIFICATION_TIME;
3809- tmp_proptags[2 ] = PidTagMidString;
3810- tmp_proptags[3 ] = PR_MESSAGE_FLAGS;
3785+
3786+ static constexpr proptag_t tmp_proptags[] =
3787+ {PR_MESSAGE_DELIVERY_TIME, PR_LAST_MODIFICATION_TIME,
3788+ PidTagMidString, PR_MESSAGE_FLAGS};
3789+ static constexpr PROPTAG_ARRAY proptags = {std::size (tmp_proptags), deconst (tmp_proptags)};
38113790 if (!exmdb_client::get_message_properties (common_util_get_maildir (),
38123791 nullptr , CP_ACP, rop_util_make_eid_ex (1 , message_id),
38133792 &proptags, &propvals))
@@ -3908,10 +3887,8 @@ static BOOL mail_engine_add_notification_folder(
39083887{
39093888 char sql_string[1280 ];
39103889 char decoded_name[512 ];
3911- PROPTAG_ARRAY proptags;
39123890 char encoded_name[1024 ];
39133891 TPROPVAL_ARRAY propvals;
3914- uint32_t tmp_proptags[4 ];
39153892
39163893 if (auto x = spfid_to_name (parent_id)) {
39173894 gx_strlcpy (decoded_name, x, std::size (decoded_name));
@@ -3925,12 +3902,11 @@ static BOOL mail_engine_add_notification_folder(
39253902 decoded_name, std::size (decoded_name)))
39263903 return FALSE ;
39273904 }
3928- proptags.count = 4 ;
3929- proptags.pproptag = tmp_proptags;
3930- tmp_proptags[0 ] = PR_DISPLAY_NAME;
3931- tmp_proptags[1 ] = PR_LOCAL_COMMIT_TIME_MAX;
3932- tmp_proptags[2 ] = PR_CONTAINER_CLASS;
3933- tmp_proptags[3 ] = PR_ATTR_HIDDEN;
3905+
3906+ static constexpr proptag_t tmp_proptags[] =
3907+ {PR_DISPLAY_NAME, PR_LOCAL_COMMIT_TIME_MAX, PR_CONTAINER_CLASS,
3908+ PR_ATTR_HIDDEN};
3909+ static constexpr PROPTAG_ARRAY proptags = {std::size (tmp_proptags), deconst (tmp_proptags)};
39343910 bool b_waited = false ;
39353911 REQUERY_FOLDER:
39363912 if (!exmdb_client::get_folder_properties (common_util_get_maildir (), CP_ACP,
@@ -4025,10 +4001,8 @@ static void mail_engine_update_subfolders_name(IDB_ITEM *pidb,
40254001static void mail_engine_move_notification_folder (
40264002 IDB_ITEM *pidb, uint64_t parent_id, uint64_t folder_id)
40274003{
4028- uint32_t tmp_proptag;
40294004 char sql_string[1280 ];
40304005 char decoded_name[512 ];
4031- PROPTAG_ARRAY proptags;
40324006 char encoded_name[1024 ];
40334007 TPROPVAL_ARRAY propvals;
40344008
@@ -4057,9 +4031,8 @@ static void mail_engine_move_notification_folder(
40574031 return ;
40584032 pstmt.finalize ();
40594033 }
4060- proptags.count = 1 ;
4061- proptags.pproptag = &tmp_proptag;
4062- tmp_proptag = PR_DISPLAY_NAME;
4034+ static constexpr proptag_t tmp_proptag[] = {PR_DISPLAY_NAME};
4035+ static constexpr PROPTAG_ARRAY proptags = {std::size (tmp_proptag), deconst (tmp_proptag)};
40634036 if (!exmdb_client::get_folder_properties (common_util_get_maildir (), CP_ACP,
40644037 rop_util_make_eid_ex (1 , folder_id), &proptags, &propvals))
40654038 return ;
@@ -4093,10 +4066,8 @@ static void mail_engine_modify_notification_folder(
40934066 IDB_ITEM *pidb, uint64_t folder_id)
40944067{
40954068 char *pdisplayname;
4096- uint32_t tmp_proptag;
40974069 char sql_string[1280 ];
40984070 char decoded_name[512 ];
4099- PROPTAG_ARRAY proptags;
41004071 char encoded_name[1024 ];
41014072 TPROPVAL_ARRAY propvals;
41024073
@@ -4110,9 +4081,9 @@ static void mail_engine_modify_notification_folder(
41104081 decoded_name, std::size (decoded_name)))
41114082 return ;
41124083 pstmt.finalize ();
4113- proptags. count = 1 ;
4114- proptags. pproptag = & tmp_proptag;
4115- tmp_proptag = PR_DISPLAY_NAME ;
4084+
4085+ static constexpr proptag_t tmp_proptag[] = {PR_DISPLAY_NAME} ;
4086+ static constexpr PROPTAG_ARRAY proptags = { std::size (tmp_proptag), deconst (tmp_proptag)} ;
41164087 if (!exmdb_client::get_folder_properties (common_util_get_maildir (), CP_ACP,
41174088 rop_util_make_eid_ex (1 , folder_id), &proptags, &propvals))
41184089 return ;
@@ -4149,15 +4120,10 @@ static void mail_engine_modify_notification_message(
41494120 IDB_ITEM *pidb, uint64_t folder_id, uint64_t message_id)
41504121{
41514122 char sql_string[256 ];
4152- PROPTAG_ARRAY proptags;
41534123 TPROPVAL_ARRAY propvals;
4154- uint32_t tmp_proptags[3 ];
4155-
4156- proptags.count = 3 ;
4157- proptags.pproptag = tmp_proptags;
4158- tmp_proptags[0 ] = PR_MESSAGE_FLAGS;
4159- tmp_proptags[1 ] = PR_LAST_MODIFICATION_TIME;
4160- tmp_proptags[2 ] = PidTagMidString;
4124+
4125+ static constexpr proptag_t tmp_proptags[] = {PR_MESSAGE_FLAGS, PR_LAST_MODIFICATION_TIME, PidTagMidString};
4126+ static constexpr PROPTAG_ARRAY proptags = {std::size (tmp_proptags), deconst (tmp_proptags)};
41614127 if (!exmdb_client::get_message_properties (common_util_get_maildir (),
41624128 nullptr , CP_ACP, rop_util_make_eid_ex (1 , message_id),
41634129 &proptags, &propvals))
0 commit comments