diff options
author | Yeongil Jang <yg0577.jang@samsung.com> | 2012-09-21 00:18:57 +0900 |
---|---|---|
committer | Yeongil Jang <yg0577.jang@samsung.com> | 2012-09-21 00:18:57 +0900 |
commit | b163391a122d812058dc9ab211b81e60204fffc7 (patch) | |
tree | 0fdf86bf4dc67b14c8913f8fa01d4e6270b1ea39 /email-core/include | |
parent | 4a95e692f2a57a0c273b2ce1f255be9a7ba1d2e3 (diff) | |
download | email-service-master.tar.gz email-service-master.tar.bz2 email-service-master.zip |
2.0_alpha release commitHEADsubmit/master/20120920.1528362.0_alphamaster2.0alpha
Diffstat (limited to 'email-core/include')
-rwxr-xr-x | email-core/include/email-core-account.h | 24 | ||||
-rw-r--r-- | email-core/include/email-core-cert.h | 54 | ||||
-rwxr-xr-x | email-core/include/email-core-event.h | 24 | ||||
-rwxr-xr-x | email-core/include/email-core-global.h | 4 | ||||
-rwxr-xr-x | email-core/include/email-core-imap-mailbox.h | 14 | ||||
-rwxr-xr-x | email-core/include/email-core-mail.h | 73 | ||||
-rwxr-xr-x | email-core/include/email-core-mailbox-sync.h | 16 | ||||
-rwxr-xr-x | email-core/include/email-core-mailbox.h | 32 | ||||
-rwxr-xr-x | email-core/include/email-core-mime.h | 3 | ||||
-rwxr-xr-x | email-core/include/email-core-smime.h | 53 | ||||
-rwxr-xr-x | email-core/include/email-core-smtp.h | 12 | ||||
-rwxr-xr-x | email-core/include/email-core-sound.h | 2 | ||||
-rwxr-xr-x | email-core/include/email-core-timer.h | 4 | ||||
-rwxr-xr-x | email-core/include/email-core-utils.h | 36 |
14 files changed, 245 insertions, 106 deletions
diff --git a/email-core/include/email-core-account.h b/email-core/include/email-core-account.h index 4eba963..1ed302d 100755 --- a/email-core/include/email-core-account.h +++ b/email-core/include/email-core-account.h @@ -42,13 +42,17 @@ extern "C" INTERNAL_FUNC int emcore_validate_account(int account_id, int *err_code); -INTERNAL_FUNC int emcore_validate_account_with_account_info(emf_account_t *account, int *err_code); +INTERNAL_FUNC int emcore_validate_account_with_account_info(email_account_t *account, int *err_code); -INTERNAL_FUNC int emcore_create_account(emf_account_t *account, int *err_code); +INTERNAL_FUNC int emcore_create_account(email_account_t *account, int *err_code); -INTERNAL_FUNC int emcore_delete_account_(int account_id, int *err_code); +INTERNAL_FUNC int emcore_delete_account(int account_id, int *err_code); -INTERNAL_FUNC int emcore_free_account(emf_account_t **account_list, int count, int *err_code); +INTERNAL_FUNC int emcore_free_account_list(email_account_t **account_list, int count, int *err_code); + +INTERNAL_FUNC void emcore_free_option(email_option_t *option); + +INTERNAL_FUNC void emcore_free_account(email_account_t *account_list); INTERNAL_FUNC int emcore_init_account_reference(); @@ -56,18 +60,22 @@ INTERNAL_FUNC int emcore_refresh_account_reference(); INTERNAL_FUNC int emcore_free_account_reference(); -INTERNAL_FUNC emf_account_t *emcore_get_account_reference(int account_id); +INTERNAL_FUNC email_account_t *emcore_get_account_reference(int account_id); -INTERNAL_FUNC int emcore_get_account_reference_list(emf_account_t **account_list, int *count, int *err_code); +INTERNAL_FUNC int emcore_get_account_reference_list(email_account_t **account_list, int *count, int *err_code); -INTERNAL_FUNC int emcore_query_server_info(const char* domain_name, emf_server_info_t **result_server_info); +INTERNAL_FUNC int emcore_query_server_info(const char* domain_name, email_server_info_t **result_server_info); -INTERNAL_FUNC int emcore_free_server_info(emf_server_info_t **target_server_info); +INTERNAL_FUNC int emcore_free_server_info(email_server_info_t **target_server_info); INTERNAL_FUNC int emcore_save_default_account_id(int input_account_id); INTERNAL_FUNC int emcore_load_default_account_id(int *output_account_id); +INTERNAL_FUNC int emcore_recover_from_secured_storage_failure(); + +INTERNAL_FUNC int emcore_update_sync_status_of_account(int input_account_id, email_set_type_t input_set_operator, int input_sync_status); + #ifdef __FEATURE_BACKUP_ACCOUNT__ INTERNAL_FUNC int emcore_backup_accounts(const char *file_path, int *error_code); diff --git a/email-core/include/email-core-cert.h b/email-core/include/email-core-cert.h new file mode 100644 index 0000000..78222c5 --- /dev/null +++ b/email-core/include/email-core-cert.h @@ -0,0 +1,54 @@ +/* +* email-service +* +* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. +* +* Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com> +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ + + +/****************************************************************************** + * File : email-core-cert.h + * Desc : Certificate operation Header + * + * Auth : + * + * History : + * 2011.04.14 : created + *****************************************************************************/ + +#ifndef EM_CORE_CERT_H_ +#define EM_CORE_CERT_H_ + +#include <openssl/x509.h> +#include <openssl/evp.h> + +#include "email-utilities.h" +#include "email-types.h" + +INTERNAL_FUNC int emcore_add_public_certificate(char *public_cert_path, char *save_name, int *err_code); + +INTERNAL_FUNC int emcore_delete_public_certificate(char *email_address, int *err_code); + +INTERNAL_FUNC int emcore_verify_signature(char *p7s_file_path, char *mime_entity, int *validity, int *err_code); + +INTERNAL_FUNC int emcore_verify_certificate(char *certificate, int *validity, int *err_code); + +INTERNAL_FUNC int emcore_free_certificate(email_certificate_t **certificate, int count, int *err_code); + +INTERNAL_FUNC int emcore_load_PFX_file(char *certificate, char *password, EVP_PKEY **pri_key, X509 **cert, STACK_OF(X509) **ca, int *err_code); + +#endif diff --git a/email-core/include/email-core-event.h b/email-core/include/email-core-event.h index 6ee7a28..5476d2b 100755 --- a/email-core/include/email-core-event.h +++ b/email-core/include/email-core-event.h @@ -40,36 +40,36 @@ extern "C" { #endif /* __cplusplus */ -void emcore_execute_event_callback(emf_action_t action, int total, int done, int status, int account_id, int mail_id, int handle, int error); +void emcore_execute_event_callback(email_action_t action, int total, int done, int status, int account_id, int mail_id, int handle, int error); int emcore_get_active_queue_idx(void); int emcore_check_send_mail_thread_status(); INTERNAL_FUNC int emcore_get_current_thread_type(); -INTERNAL_FUNC int emcore_register_event_callback(emf_action_t action, emf_event_callback callback, void *event_data); -INTERNAL_FUNC int emcore_unregister_event_callback(emf_action_t action, emf_event_callback callback); -INTERNAL_FUNC int emcore_get_pending_event(emf_action_t action, int account_id, int mail_id, emf_event_status_type_t *status); +INTERNAL_FUNC int emcore_register_event_callback(email_action_t action, email_event_callback callback, void *event_data); +INTERNAL_FUNC int emcore_unregister_event_callback(email_action_t action, email_event_callback callback); +INTERNAL_FUNC int emcore_get_pending_event(email_action_t action, int account_id, int mail_id, email_event_status_type_t *status); INTERNAL_FUNC int emcore_start_event_loop(int *err_code); INTERNAL_FUNC int emcore_stop_event_loop(int *err_code); -INTERNAL_FUNC int emcore_insert_event(emf_event_t *event_data, int *handle, int *err_code); +INTERNAL_FUNC int emcore_insert_event(email_event_t *event_data, int *handle, int *err_code); INTERNAL_FUNC int emcore_cancel_thread(int handle, void *arg, int *err_code); -INTERNAL_FUNC int emcore_send_event_loop_start(int *err_code); +INTERNAL_FUNC int emcore_start_event_loop_for_sending_mails(int *err_code); INTERNAL_FUNC int emcore_send_event_loop_stop(int *err_code); INTERNAL_FUNC int emcore_cancel_send_mail_thread(int handle, void *arg, int *err_code); INTERNAL_FUNC int emcore_check_thread_status(void); INTERNAL_FUNC void emcore_get_event_queue_status(int *on_sending, int *on_receiving); -INTERNAL_FUNC int emcore_insert_send_event(emf_event_t *event_data, int *handle, int *err_code); -INTERNAL_FUNC int emcore_get_receiving_event_queue(emf_event_t **event_queue, int *event_count, int *err); +INTERNAL_FUNC int emcore_insert_event_for_sending_mails(email_event_t *event_data, int *handle, int *err_code); +INTERNAL_FUNC int emcore_get_receiving_event_queue(email_event_t **event_queue, int *event_count, int *err); INTERNAL_FUNC int emcore_cancel_all_threads_of_an_account(int account_id); -INTERNAL_FUNC int emcore_free_event(emf_event_t *event_data); +INTERNAL_FUNC int emcore_free_event(email_event_t *event_data); #ifdef __FEATURE_PARTIAL_BODY_DOWNLOAD__ /* Please contact -> Himanshu [h.gahlaut@samsung.com] for any explanation in code here under this MACRO */ -INTERNAL_FUNC int emcore_insert_partial_body_thread_event(emf_event_partial_body_thd *partial_body_thd_event, int *error_code); +INTERNAL_FUNC int emcore_insert_partial_body_thread_event(email_event_partial_body_thd *partial_body_thd_event, int *error_code); INTERNAL_FUNC int emcore_is_partial_body_thd_que_empty(); INTERNAL_FUNC int emcore_is_partial_body_thd_que_full(); -INTERNAL_FUNC int emcore_partial_body_thread_loop_start(int *err_code); +INTERNAL_FUNC int emcore_start_thread_for_downloading_partial_body(int *err_code); INTERNAL_FUNC int emcore_clear_partial_body_thd_event_que(int *err_code); -INTERNAL_FUNC int emcore_free_partial_body_thd_event(emf_event_partial_body_thd *partial_body_thd_event, int *error_code); +INTERNAL_FUNC int emcore_free_partial_body_thd_event(email_event_partial_body_thd *partial_body_thd_event, int *error_code); INTERNAL_FUNC unsigned int emcore_get_partial_body_thd_id(); INTERNAL_FUNC int emcore_get_pbd_thd_state(); unsigned int emcore_get_receiving_thd_id(); diff --git a/email-core/include/email-core-global.h b/email-core/include/email-core-global.h index 2588aad..8626d0b 100755 --- a/email-core/include/email-core-global.h +++ b/email-core/include/email-core-global.h @@ -38,11 +38,11 @@ extern "C" #include "email-internal-types.h" -extern emf_account_list_t *g_account_list; +extern email_account_list_t *g_account_list; extern int g_account_num; extern int g_account_retrieved; -INTERNAL_FUNC emf_account_t *emcore_get_new_account_reference(); +INTERNAL_FUNC email_account_t *emcore_get_new_account_reference(); #ifdef __cplusplus } diff --git a/email-core/include/email-core-imap-mailbox.h b/email-core/include/email-core-imap-mailbox.h index e643e38..bedb8b6 100755 --- a/email-core/include/email-core-imap-mailbox.h +++ b/email-core/include/email-core-imap-mailbox.h @@ -39,7 +39,7 @@ extern "C" { #endif /* __cplusplus */ -INTERNAL_FUNC int emcore_check_sync_imap_mailbox(emf_mailbox_t *mailbox, int *synchronous, int *err_code); +INTERNAL_FUNC int emcore_check_sync_imap_mailbox(email_mailbox_t *mailbox, int *synchronous, int *err_code); /** * Get mailbox list from imap server. * @@ -63,12 +63,12 @@ INTERNAL_FUNC int emcore_sync_mailbox_list(int account_id, char *mailbox, int *e * @remarks N/A * @return This function returns true on success or false on failure. */ -INTERNAL_FUNC int emcore_download_mailbox_list(void *mail_stream, char *mailbox, emf_mailbox_t **mailbox_list, int *count, int *err_code); -INTERNAL_FUNC int emcore_delete_imap_mailbox(emf_mailbox_t *mailbox, int *err_code); -INTERNAL_FUNC int emcore_create_imap_mailbox(emf_mailbox_t *mailbox, int *err_code); -INTERNAL_FUNC int emcore_modify_imap_mailbox(emf_mailbox_t *old_mailbox, emf_mailbox_t *new_mailbox, int *err_code); -INTERNAL_FUNC int emcore_set_sync_imap_mailbox(emf_mailbox_t *mailbox, int synchronous, int *err_code); -INTERNAL_FUNC int emcore_set_mail_slot_size(int account_id, char *mailbox_name, int new_slot_size, int *err_code); +INTERNAL_FUNC int emcore_download_mailbox_list(void *mail_stream, char *mailbox, email_internal_mailbox_t **mailbox_list, int *count, int *err_code); +INTERNAL_FUNC int emcore_delete_imap_mailbox(int input_mailbox_id, int *err_code); +INTERNAL_FUNC int emcore_create_imap_mailbox(email_mailbox_t *mailbox, int *err_code); +INTERNAL_FUNC int emcore_move_mailbox_on_imap_server(int input_account_id, char *input_old_mailbox_path, char *input_new_mailbox_path); +INTERNAL_FUNC int emcore_set_sync_imap_mailbox(email_internal_mailbox_t *mailbox, int synchronous, int *err_code); +INTERNAL_FUNC int emcore_set_mail_slot_size(int account_id, int mailbox_id, int new_slot_size, int *err_code); INTERNAL_FUNC int emcore_remove_overflowed_mails(emstorage_mailbox_tbl_t *intput_mailbox_tbl, int *err_code); INTERNAL_FUNC int emcore_get_default_mail_slot_count(int *output_count, int *err_code); diff --git a/email-core/include/email-core-mail.h b/email-core/include/email-core-mail.h index af5760c..4170ad9 100755 --- a/email-core/include/email-core-mail.h +++ b/email-core/include/email-core-mail.h @@ -54,7 +54,7 @@ typedef struct _emf_uid_range_set struct _emf_uid_range_set *next; -} emf_uid_range_set; +} email_uid_range_set; #endif @@ -82,6 +82,7 @@ struct _m_content_info int drm; /* 0 : none 1 : object 2 : rights 3 : dcf */ int drm2; /* 0 : none 1 : FL 2 : CD 3 : SSD 4 : SD */ char *attachment_mime_type; /* attachment mime type */ + char *content_id; /* mime content id */ #ifdef __ATTACHMENT_OPTI__ int encoding; /* encoding */ char *section; /* section number */ @@ -121,32 +122,38 @@ INTERNAL_FUNC int emcore_download_body_multi_sections_bulk(void *mail_stream, in * @remarks This function is used for only IMAP mail. * @return This function returns true on success or false on failure. */ -INTERNAL_FUNC int emcore_download_attachment(int acconut_id, int mail_id, char *nth, int *err_code); +INTERNAL_FUNC int emcore_download_attachment(int acconut_id, int mail_id, int nth, int *err_code); +INTERNAL_FUNC int emcore_mail_add_attachment(int mail_id, email_attachment_data_t *attachment, int *err_code); /* TODO : Remove duplicated function */ +INTERNAL_FUNC int emcore_mail_add_attachment_data(int input_mail_id, email_attachment_data_t *input_attachment_data); /* TODO : Remove duplicated function */ +INTERNAL_FUNC int emcore_delete_mail_attachment(int attachment_id, int *err_code); +INTERNAL_FUNC int emcore_get_attachment_info(int attachment_id, email_attachment_data_t **attachment, int *err_code); +INTERNAL_FUNC int emcore_get_attachment_data_list(int input_mail_id, email_attachment_data_t **output_attachment_data, int *output_attachment_count); +INTERNAL_FUNC int emcore_free_attachment_data(email_attachment_data_t **attachment_data_list, int attachment_data_count, int *err_code); -INTERNAL_FUNC int emcore_mail_move(int mail_ids[], int num, char *dst_mailbox_name, int noti_param_1, int noti_param_2, int *err_code); -INTERNAL_FUNC int emcore_mail_add_attachment(int mail_id, emf_attachment_info_t *attachment, int *err_code); -INTERNAL_FUNC int emcore_delete_mail_attachment(int mail_id, char *attachment_id, int *err_code); -INTERNAL_FUNC int emcore_mail_add_attachment_data(int input_mail_id, emf_attachment_data_t *input_attachment_data); + +INTERNAL_FUNC int emcore_move_mail(int mail_ids[], int num, int dst_mailbox_id, int noti_param_1, int noti_param_2, int *err_code); #ifdef __FEATURE_PARTIAL_BODY_DOWNLOAD__ -INTERNAL_FUNC int emcore_insert_pbd_activity(emf_event_partial_body_thd *local_activity, int *activity_id, int *err_code) ; +INTERNAL_FUNC int emcore_insert_pbd_activity(email_event_partial_body_thd *local_activity, int *activity_id, int *err_code) ; INTERNAL_FUNC int emcore_delete_pbd_activity(int account_id, int mail_id, int activity_id, int *err_code); #endif -INTERNAL_FUNC int emcore_get_mail_contact_info(emf_mail_contact_info_t *contact_info, char *full_address, int *err_code); -INTERNAL_FUNC int emcore_get_mail_contact_info_with_update(emf_mail_contact_info_t *contact_info, char *full_address, int mail_id, int *err_code); -INTERNAL_FUNC int emcore_free_contact_info(emf_mail_contact_info_t *contact_info, int *err_code); +INTERNAL_FUNC int emcore_get_mail_contact_info(email_mail_contact_info_t *contact_info, char *full_address, int *err_code); +INTERNAL_FUNC int emcore_get_mail_contact_info_with_update(email_mail_contact_info_t *contact_info, char *full_address, int mail_id, int *err_code); +INTERNAL_FUNC int emcore_free_contact_info(email_mail_contact_info_t *contact_info, int *err_code); INTERNAL_FUNC int emcore_sync_contact_info(int mail_id, int *err_code); INTERNAL_FUNC GList *emcore_get_recipients_list(GList *old_recipients_list, char *full_address, int *err_code); -INTERNAL_FUNC int emcore_get_mail_address_info_list(int mail_id, emf_address_info_list_t **address_info_list, int *err_code); +INTERNAL_FUNC int emcore_get_mail_address_info_list(int mail_id, email_address_info_list_t **address_info_list, int *err_code); INTERNAL_FUNC int emcore_get_mail_display_name(CTSvalue *contact_name_value, char **contact_display_name); -INTERNAL_FUNC int emcore_get_mail_data(int input_mail_id, emf_mail_data_t **output_mail_data); +INTERNAL_FUNC int emcore_get_mail_data(int input_mail_id, email_mail_data_t **output_mail_data); -INTERNAL_FUNC int emcore_update_mail(emf_mail_data_t *input_mail_data, emf_attachment_data_t *input_attachment_data_list, int input_attachment_count, emf_meeting_request_t* input_meeting_request, int sync_server); +INTERNAL_FUNC int emcore_update_mail(email_mail_data_t *input_mail_data, email_attachment_data_t *input_attachment_data_list, int input_attachment_count, email_meeting_request_t* input_meeting_request, int sync_server); -INTERNAL_FUNC int emcore_fetch_flags(int account_id, int mail_id, emf_mail_flag_t *mail_flag, int *err_code); -INTERNAL_FUNC int emcore_delete_mail_from_local_storage(int account_id, int *mail_ids, int num, int noti_param_1, int noti_param_2, int *err_code); -INTERNAL_FUNC int emcore_get_mail_msgno_by_uid(emf_account_t *account, emf_mailbox_t *mailbox, char *uid, int *msgno, int *err_code); +INTERNAL_FUNC int emcore_fetch_flags(int account_id, int mail_id, email_mail_flag_t *mail_flag, int *err_code); +INTERNAL_FUNC int emcore_delete_mails_from_local_storage(int account_id, int *mail_ids, int num, int noti_param_1, int noti_param_2, int *err_code); +INTERNAL_FUNC int emcore_get_mail_msgno_by_uid(email_account_t *account, email_internal_mailbox_t *mailbox, char *uid, int *msgno, int *err_code); +INTERNAL_FUNC int emcore_expunge_mails_deleted_flagged_from_local_storage(int input_mailbox_id); +INTERNAL_FUNC int emcore_expunge_mails_deleted_flagged_from_remote_server(int input_account_id, int input_mailbox_id); /** * Delete mails. @@ -167,40 +174,38 @@ INTERNAL_FUNC int emcore_delete_mail(int account_id, int mail_id[], int num, int /** * Delete mails. * - * @param[in] mailbox Specifies the mailbox. this argument is for account id or mailbox name. - * @param[in] with_server Specifies whether mails is also deleted from server. - * @param[in] callback Specifies the callback function for delivering status during deleting. + * @param[in] input_mailbox_id Specifies the id of mailbox. + * @param[in] input_from_server Specifies whether mails is also deleted from server. * @param[out] err_code Specifies the error code returned. * @remarks N/A * @return This function returns true on success or false on failure. */ -INTERNAL_FUNC int emcore_delete_mail_all(emf_mailbox_t *mailbox, int with_server, int *err_code); +INTERNAL_FUNC int emcore_delete_all_mails_of_acount(int input_account_id); +INTERNAL_FUNC int emcore_delete_all_mails_of_mailbox(int input_mailbox_id, int input_from_server, int *err_code); -INTERNAL_FUNC int emcore_free_mail_data(emf_mail_data_t **mail_list, int count, int *err_code); +INTERNAL_FUNC void emcore_free_mail_data_list(email_mail_data_t **mail_list, int count); +INTERNAL_FUNC void emcore_free_mail_data(email_mail_data_t *mail); INTERNAL_FUNC void emcore_free_content_info(struct _m_content_info *cnt_info); -INTERNAL_FUNC int emcore_free_attachment_info(emf_attachment_info_t **atch_info, int *err_code); -INTERNAL_FUNC int emcore_free_attachment_data(emf_attachment_data_t **attachment_data_list, int attachment_data_count, int *err_code); -INTERNAL_FUNC int emcore_move_mail_on_server(int account_id, char *src_mailbox, int mail_ids[], int num, char *dest_mailbox, int *error_code); +INTERNAL_FUNC int emcore_move_mail_on_server(int account_id, int src_mailbox_id, int mail_ids[], int num, char *dest_mailbox, int *error_code); INTERNAL_FUNC int emcore_sync_flag_with_server(int mail_id, int *err_code); INTERNAL_FUNC int emcore_sync_seen_flag_with_server(int mail_ids[], int num, int *err_code); -INTERNAL_FUNC int emcore_get_attachment_info(int mail_id, char *attachment_no, emf_attachment_info_t **attachment, int *err_code); -INTERNAL_FUNC int emcore_get_attachment_data_list(int input_mail_id, emf_attachment_data_t **output_attachment_data, int *output_attachment_count); -INTERNAL_FUNC int emcore_modify_extra_flag(int mail_id, emf_extra_flag_t new_flag, int *err_code); -INTERNAL_FUNC int emcore_modify_flag(int mail_id, emf_mail_flag_t new_flag, int sticky_flag, int *err_code); -INTERNAL_FUNC int emcore_set_flags_field(int account_id, int mail_ids[], int num, emf_flags_field_type field_type, int value, int *err_code); + +INTERNAL_FUNC int emcore_modify_extra_flag(int mail_id, email_extra_flag_t new_flag, int *err_code); +INTERNAL_FUNC int emcore_modify_flag(int mail_id, email_mail_flag_t new_flag, int sticky_flag, int *err_code); +INTERNAL_FUNC int emcore_set_flags_field(int account_id, int mail_ids[], int num, email_flags_field_type field_type, int value, int *err_code); INTERNAL_FUNC char* emcore_convert_mutf7_to_utf8(char *mailbox_name); -INTERNAL_FUNC int emcore_convert_string_to_structure(const char *encoded_string, void **struct_var, emf_convert_struct_type_e type); +INTERNAL_FUNC int emcore_convert_string_to_structure(const char *encoded_string, void **struct_var, email_convert_struct_type_e type); #ifdef __FEATURE_BULK_DELETE_MOVE_UPDATE_REQUEST_OPTI__ -INTERNAL_FUNC int emcore_sync_flags_field_with_server(int mail_ids[], int num, emf_flags_field_type field_type, int value, int *err_code); -INTERNAL_FUNC int emcore_move_mail_on_server_ex(int account_id, char *src_mailbox, int mail_ids[], int num, char *dest_mailbox, int *error_code); +INTERNAL_FUNC int emcore_sync_flags_field_with_server(int mail_ids[], int num, email_flags_field_type field_type, int value, int *err_code); +INTERNAL_FUNC int emcore_move_mail_on_server_ex(int account_id, int src_mailbox_id, int mail_ids[], int num, int dest_mailbox_id, int *error_code); #endif #ifdef __ATTACHMENT_OPTI__ -INTERNAL_FUNC int emcore_download_attachment_bulk(/*emf_mailbox_t *mailbox, */ int account_id, int mail_id, char *nth, int *err_code); +INTERNAL_FUNC int emcore_download_attachment_bulk(/*email_mailbox_t *mailbox, */ int account_id, int mail_id, char *nth, int *err_code); #endif -INTERNAL_FUNC int emcore_mail_filter_by_rule(emf_rule_t *filter_info, int *err_code); +INTERNAL_FUNC int emcore_mail_filter_by_rule(email_rule_t *filter_info, int *err_code); #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/email-core/include/email-core-mailbox-sync.h b/email-core/include/email-core-mailbox-sync.h index d0858ca..945a759 100755 --- a/email-core/include/email-core-mailbox-sync.h +++ b/email-core/include/email-core-mailbox-sync.h @@ -50,20 +50,20 @@ typedef struct char *content_id; int dec_len; char *mime_type; -} emf_image_data; +} email_image_data; typedef struct { char *buffer; int buflen; -} emf_partial_buffer; +} email_partial_buffer; #endif typedef struct emcore_uid_elem { int msgno; char *uid; - emf_mail_flag_t flag; + email_mail_flag_t flag; struct emcore_uid_elem *next; } emcore_uid_list; @@ -75,6 +75,10 @@ int imap4_mailbox_get_uids(MAILSTREAM *stream, emcore_uid_list** uid_list, int * int emcore_check_rule(const char *input_full_address_from, const char *input_subject, emstorage_rule_tbl_t *rule, int rule_len, int *matched, int *err_code); +int emcore_make_mail_tbl_data_from_envelope(MAILSTREAM *mail_stream, ENVELOPE *input_envelope, emcore_uid_list *input_uid_elem, emstorage_mail_tbl_t **output_mail_tbl_data, int *err_code); + +int emcore_add_mail_to_mailbox(emstorage_mailbox_tbl_t *input_maibox_data, emstorage_mail_tbl_t *input_new_mail_tbl_data, int *output_mail_id, int *output_thread_id); + /** * Download unread all headers from mail server. * @@ -108,7 +112,7 @@ typedef enum * @remarks N/A * @return This function returns true on success or false on failure. */ -int emcore_download_uid_all(emf_mailbox_t *mailbox, +int emcore_download_uid_all(email_internal_mailbox_t *mailbox, emcore_uid_list **uid_list, int *total, emstorage_read_mail_uid_tbl_t *read_mail_uids, @@ -128,7 +132,7 @@ int emcore_download_uid_all(emf_mailbox_t *mailbox, * @remarks N/A * @return This function returns true on success or false on failure. */ -int emcore_download_imap_msgno(emf_mailbox_t *mailbox, char *uid, int *msgno, int *err_code); +int emcore_download_imap_msgno(email_internal_mailbox_t *mailbox, char *uid, int *msgno, int *err_code); /** * Get a message number to be related to uid. @@ -166,7 +170,7 @@ int emcore_free_uids(emcore_uid_list *uid_list, int *err_code); INTERNAL_FUNC int emcore_sync_mail_from_client_to_server(int account_id, int mail_id, int *err_code); #ifdef __FEATURE_PARTIAL_BODY_DOWNLOAD__ -INTERNAL_FUNC int emcore_download_bulk_partial_mail_body(MAILSTREAM *stream, emf_event_partial_body_thd *pbd_event, int count, int *error); +INTERNAL_FUNC int emcore_download_bulk_partial_mail_body(MAILSTREAM *stream, email_event_partial_body_thd *pbd_event, int count, int *error); #endif /* __FEATURE_PARTIAL_BODY_DOWNLOAD__ */ diff --git a/email-core/include/email-core-mailbox.h b/email-core/include/email-core-mailbox.h index 7be9255..bca0b09 100755 --- a/email-core/include/email-core-mailbox.h +++ b/email-core/include/email-core-mailbox.h @@ -53,8 +53,8 @@ INTERNAL_FUNC int emcore_remove_connection_info(int account_id); #endif /* __FEATURE_KEEP_CONNECTION__ */ /* in SMTP case, path argument must be (ENCODED_PATH_SMTP) */ /* ex) emcore_connect_to_remote_mailbox(xxx, (char *)ENCODED_PATH_SMTP, xxx, xxx); */ -INTERNAL_FUNC int emcore_connect_to_remote_mailbox_with_account_info(emf_account_t *ref_account, char *mailbox, void **mail_stream, int *err_code); -INTERNAL_FUNC int emcore_connect_to_remote_mailbox(int account_id, char *mailbox, void **mail_stream, int *err_code); +INTERNAL_FUNC int emcore_connect_to_remote_mailbox_with_account_info(email_account_t *ref_account, int input_mailbox_id, void **mail_stream, int *err_code); +INTERNAL_FUNC int emcore_connect_to_remote_mailbox(int account_id, int input_mailbox_id, void **mail_stream, int *err_code); INTERNAL_FUNC int emcore_close_mailbox(int account_id, void *mail_stream); #ifdef __FEATURE_KEEP_CONNECTION__ INTERNAL_FUNC void emcore_close_mailbox_receiving_stream(); @@ -62,19 +62,25 @@ INTERNAL_FUNC void emcore_close_mailbox_partial_body_stream(); INTERNAL_FUNC void emcore_reset_streams(); #endif -INTERNAL_FUNC int emcore_get_list_to_be_sync(int account_id, emf_mailbox_t **mailbox_list, int *p_count, int *err_code); -INTERNAL_FUNC int emcore_get_list(int account_id, emf_mailbox_t **mailbox_list, int *p_count, int *err_code); -INTERNAL_FUNC int emcore_free_mailbox(emf_mailbox_t **mailbox_list, int count, int *err_code); -INTERNAL_FUNC int emcore_get_mail_count(emf_mailbox_t *mailbox, int *total, int *unseen, int *err_code); -INTERNAL_FUNC int emcore_create_mailbox(emf_mailbox_t *new_mailbox, int on_server, int *err_code); -INTERNAL_FUNC int emcore_delete_mailbox(emf_mailbox_t *mailbox, int on_server, int *err_code); -INTERNAL_FUNC int emcore_delete_mailbox_all(emf_mailbox_t *mailbox, int *err_code); -INTERNAL_FUNC int emcore_update_mailbox(emf_mailbox_t *old_mailbox, emf_mailbox_t *new_mailbox, int *err_code); +INTERNAL_FUNC int emcore_get_mailbox_list_to_be_sync(int account_id, email_mailbox_t **mailbox_list, int *p_count, int *err_code); +INTERNAL_FUNC int emcore_get_list(int account_id, email_mailbox_t **mailbox_list, int *p_count, int *err_code); +INTERNAL_FUNC int emcore_get_mail_count(email_mailbox_t *mailbox, int *total, int *unseen, int *err_code); +INTERNAL_FUNC int emcore_create_mailbox(email_mailbox_t *new_mailbox, int on_server, int *err_code); +INTERNAL_FUNC int emcore_delete_mailbox(int input_mailbox_id, int on_server, int *err_code); +INTERNAL_FUNC int emcore_delete_mailbox_all(email_mailbox_t *mailbox, int *err_code); +INTERNAL_FUNC int emcore_update_mailbox(email_mailbox_t *old_mailbox, email_mailbox_t *new_mailbox, int *err_code); INTERNAL_FUNC int emcore_save_local_activity_sync(int account_id, int *err_code); -INTERNAL_FUNC void emcore_bind_mailbox_type(emf_mailbox_t *mailbox_list); -INTERNAL_FUNC int emcore_send_mail_event(emf_mailbox_t *mailbox, int mail_id , int *err_code); +INTERNAL_FUNC int emcore_send_mail_event(email_mailbox_t *mailbox, int mail_id , int *err_code); INTERNAL_FUNC int emcore_partial_body_thd_local_activity_sync(int *is_event_inserted, int *err_code); -INTERNAL_FUNC int emcore_get_mailbox_by_type(int account_id, emf_mailbox_type_e mailbox_type, emf_mailbox_t *spam_mailbox, int *err_code); +INTERNAL_FUNC int emcore_get_mailbox_by_type(int account_id, email_mailbox_type_e mailbox_type, email_mailbox_t *spam_mailbox, int *err_code); +INTERNAL_FUNC void emcore_free_mailbox_list(email_mailbox_t **mailbox_list, int count); +INTERNAL_FUNC void emcore_free_mailbox(email_mailbox_t *mailbox); + +INTERNAL_FUNC void emcore_bind_mailbox_type(email_internal_mailbox_t *mailbox_list); +INTERNAL_FUNC int emcore_free_internal_mailbox(email_internal_mailbox_t **mailbox_list, int count, int *err_code); + + + #ifdef __FEATURE_LOCAL_ACTIVITY__ INTERNAL_FUNC int emcore_local_activity_sync(int account_id, int *err_code); diff --git a/email-core/include/email-core-mime.h b/email-core/include/email-core-mime.h index 726c7f6..3af71d7 100755 --- a/email-core/include/email-core-mime.h +++ b/email-core/include/email-core-mime.h @@ -51,6 +51,9 @@ INTERNAL_FUNC int emcore_get_body_structure(MAILSTREAM *stream, int msg_uid, B INTERNAL_FUNC char *emcore_decode_rfc2047_text(char *rfc2047_text, int *err_code); INTERNAL_FUNC int emcore_decode_body_text(char *enc_buf, int enc_len, int enc_type, int *dec_len, int *err_code); INTERNAL_FUNC int emcore_set_fetch_body_section(BODY *body, int enable_inline_list, int *total_mail_size, int *err_code); +INTERNAL_FUNC int emcore_load_eml_file_to_mail(char *eml_file_path, email_mail_data_t **output_mail_data, email_attachment_data_t **output_attachment_data, int *output_attachment_count, int *err_code); +INTERNAL_FUNC int emcore_delete_eml_data(email_mail_data_t *input_mail_data, int *err_code); +INTERNAL_FUNC int emcore_get_mime_entity(char *mime_path, char **mime_entity, int *err_code); #ifdef __cplusplus } diff --git a/email-core/include/email-core-smime.h b/email-core/include/email-core-smime.h new file mode 100755 index 0000000..76c45a3 --- /dev/null +++ b/email-core/include/email-core-smime.h @@ -0,0 +1,53 @@ +/* +* email-service +* +* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. +* +* Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com> +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*/ + + +/****************************************************************************** + * File : email-core-smime.h + * Desc : Mail Operation Header + * + * Auth : + * + * History : + * 2006.08.16 : created + *****************************************************************************/ + +#ifndef EM_CORE_SMIME_H_ +#define EM_CORE_SMIME_H_ + +#include <cert-service.h> + +#include "email-types.h" + +INTERNAL_FUNC int emcore_smime_set_signed_message(char *certificate, char *password, char *mime_entity, email_digest_type digest_type, char **file_path, int *err_code); + +INTERNAL_FUNC int emcore_smime_set_encrypt_message(char *other_certificate_list, char *mime_entity, email_cipher_type cipher_type, char **file_path, int *err_code); + +INTERNAL_FUNC int emcore_smime_set_signed_and_encrypt_message(char *recipient_list, char *certificate, char *password, char *mime_entity, email_cipher_type cipher_type, email_digest_type digest_type, char **file_path, int *err_code); + +INTERNAL_FUNC int emcore_smime_verify_signed_message(char *signed_message, char *ca_file, char *ca_path, int *verify); + +INTERNAL_FUNC int emcore_smime_set_decrypt_message(char *encrypt_message, char *certifcate, char *password, char **decrypt_message, int *err_code); + +INTERNAL_FUNC int emcore_convert_mail_data_to_smime_data(emstorage_account_tbl_t *account_tbl_item, email_mail_data_t *input_mail_data, email_attachment_data_t *input_attachment_data_list, int input_attachment_count, email_mail_data_t **output_mail_data, email_attachment_data_t **output_attachment_data_list, int *output_attachment_count); + + +#endif /* EM_CORE_SMIME_H_ */ diff --git a/email-core/include/email-core-smtp.h b/email-core/include/email-core-smtp.h index 1c71665..5b3e02a 100755 --- a/email-core/include/email-core-smtp.h +++ b/email-core/include/email-core-smtp.h @@ -42,17 +42,19 @@ extern "C" #include "c-client.h" #include "email-internal-types.h" -INTERNAL_FUNC int emcore_send_mail(int account_id, char *mailbox, int mail_id, emf_option_t *sending_option, int *err_code); +INTERNAL_FUNC int emcore_send_mail(int account_id, int input_mailbox_id, int mail_id, email_option_t *sending_option, int *err_code); -INTERNAL_FUNC int emcore_send_saved_mail(int account_id, char *mailbox, emf_option_t *sending_option, int *err_code); +INTERNAL_FUNC int emcore_send_saved_mail(int account_id, char *mailbox, email_option_t *sending_option, int *err_code); -INTERNAL_FUNC int emcore_make_rfc822_file_from_mail(emstorage_mail_tbl_t *input_mail_tbl_data, emstorage_attachment_tbl_t *input_attachment_tbl_t, int input_attachment_count, ENVELOPE **env, char **file_path, emf_option_t *sending_option, int *err_code); +INTERNAL_FUNC int emcore_make_rfc822_file_from_mail(emstorage_mail_tbl_t *input_mail_tbl_data, emstorage_attachment_tbl_t *input_attachment_tbl_t, int input_attachment_count, ENVELOPE **env, char **file_path, email_option_t *sending_option, int *err_code); -INTERNAL_FUNC int emcore_add_mail(emf_mail_data_t *input_mail_data, emf_attachment_data_t *input_attachment_data_list, int input_attachment_count, emf_meeting_request_t *input_meeting_request, int input_from_eas); +INTERNAL_FUNC int emcore_make_rfc822_file(email_mail_data_t *input_mail_tbl_data, email_attachment_data_t *input_attachment_tbl, int input_attachment_count, char **file_path, int *err_code); + +INTERNAL_FUNC int emcore_add_mail(email_mail_data_t *input_mail_data, email_attachment_data_t *input_attachment_data_list, int input_attachment_count, email_meeting_request_t *input_meeting_request, int input_from_eas); INTERNAL_FUNC int emcore_add_read_receipt(int input_read_mail_id, int *output_receipt_mail_id); -INTERNAL_FUNC int emcore_add_meeting_request(int account_id, char *mailbox_name, emf_meeting_request_t *meeting_req, int *err_code); +INTERNAL_FUNC int emcore_add_meeting_request(int account_id, int input_mailbox_id, email_meeting_request_t *meeting_req, int *err_code); #ifdef __cplusplus } diff --git a/email-core/include/email-core-sound.h b/email-core/include/email-core-sound.h index a0dea59..7b1c620 100755 --- a/email-core/include/email-core-sound.h +++ b/email-core/include/email-core-sound.h @@ -57,5 +57,5 @@ typedef enum #undef Min #endif -INTERNAL_FUNC int emcore_start_alert_thread(int *err_code); +INTERNAL_FUNC int emcore_start_thread_for_alerting_new_mails(int *err_code); INTERNAL_FUNC void emcore_start_alert(); diff --git a/email-core/include/email-core-timer.h b/email-core/include/email-core-timer.h index 4bf4fe3..7704c34 100755 --- a/email-core/include/email-core-timer.h +++ b/email-core/include/email-core-timer.h @@ -21,7 +21,7 @@ #include "email-internal-types.h" -typedef void (*EMF_TIMER_CALLBACK)(void *a_pData); +typedef void (*EMAIL_TIMER_CALLBACK)(void *a_pData); /** * Callback for timeout action @@ -40,7 +40,7 @@ INTERNAL_FUNC int emcore_timer_ex_callback(void *a_pData); * @remarks N/A * @return This function returns the timer id. */ -INTERNAL_FUNC int emcore_set_timer_ex(long a_nSetTimeValue, EMF_TIMER_CALLBACK a_pCallBack, void *a_pData); +INTERNAL_FUNC int emcore_set_timer_ex(long a_nSetTimeValue, EMAIL_TIMER_CALLBACK a_pCallBack, void *a_pData); /** * Kill timer. diff --git a/email-core/include/email-core-utils.h b/email-core/include/email-core-utils.h index 62f2ce3..148635a 100755 --- a/email-core/include/email-core-utils.h +++ b/email-core/include/email-core-utils.h @@ -44,9 +44,10 @@ extern "C" #include "email-core-mail.h" /* This is used for emcore_get_long_encoded_path */ +#define EMAIL_CONNECT_FOR_SENDING -1 #define ENCODED_PATH_SMTP "UHDF_ENCODED_PATH_SMTP_EKJD" -typedef int (*emf_get_unread_email_count_cb)(int unread, int *err_code); +typedef int (*email_get_unread_email_count_cb)(int unread, int *err_code); /* parse the Full mailbox Path and get the Alias Name of the Mailbox */ char* emcore_get_alias_of_mailbox(const char *mailbox_path); @@ -58,26 +59,26 @@ int emcore_get_encoded_mailbox_name(char *name, char **enc_name, int *err_code int emcore_get_file_name(char *path, char **filename, int *err_code); int emcore_get_file_size(char *path, int *size, int *err_code); int emcore_get_actual_mail_size(char *pBodyPlane, char *pBodyHtml, struct attachment_info *pAttachment, int *error_code); -int emcore_calc_mail_size(emf_mail_data_t *mail_data_src, emf_attachment_data_t *attachment_data_src, int attachment_count, int *error_code); +int emcore_calc_mail_size(email_mail_data_t *mail_data_src, email_attachment_data_t *attachment_data_src, int attachment_count, int *error_code); int emcore_get_address_count(char *addr_str, int *to_num, int *err_code); int emcore_is_storage_full(int *error); -int emcore_show_popup(int id, emf_action_t action, int error); -int emcore_get_long_encoded_path_with_account_info(emf_account_t *account, char *path, int delimiter, char **long_enc_path, int *err_code); +int emcore_get_long_encoded_path_with_account_info(email_account_t *account, char *path, int delimiter, char **long_enc_path, int *err_code); void emcore_fill_address_information_of_mail_tbl(emstorage_mail_tbl_t *mail_data); int emcore_get_preview_text_from_file(const char *input_plain_path, const char *input_html_path, int input_preview_buffer_length, char **output_preview_buffer); +int reg_replace (char *input_source_text, char *input_old_pattern_string, char *input_new_string); int emcore_strip_HTML(char *source_string); int emcore_send_noti_for_new_mail(int account_id, char *mailbox_name, char *subject, char *from, char *uid, char *datetime); int emcore_make_attachment_file_name_with_extension(char *source_file_name, char *sub_type, char *result_file_name, int result_file_name_buffer_length, int *err_code); /* Session Handling */ -int emcore_get_empty_session(emf_session_t **session); -int emcore_clear_session(emf_session_t *session); -int emcore_get_current_session(emf_session_t **session); +int emcore_get_empty_session(email_session_t **session); +int emcore_clear_session(email_session_t *session); +int emcore_get_current_session(email_session_t **session); -INTERNAL_FUNC emf_option_t *emcore_get_option(int *err_code); -INTERNAL_FUNC int emcore_set_option(emf_option_t *opt, int *err_code); +INTERNAL_FUNC email_option_t *emcore_get_option(int *err_code); +INTERNAL_FUNC int emcore_set_option(email_option_t *opt, int *err_code); INTERNAL_FUNC int emcore_check_unread_mail(); INTERNAL_FUNC int emcore_set_network_error(int err_code); @@ -95,12 +96,12 @@ INTERNAL_FUNC int emcore_delete_notification_for_read_mail(int mail_id); INTERNAL_FUNC int emcore_delete_notification_by_account(int account_id); INTERNAL_FUNC int emcore_finalize_sync(int account_id, int *error); - +INTERNAL_FUNC int emcore_show_user_message(int id, email_action_t action, int error); #ifdef __FEATURE_BULK_DELETE_MOVE_UPDATE_REQUEST_OPTI__ /** - * @fn emcore_convert_to_uid_range_set(emf_id_set_t *id_set, int id_set_count, emf_uid_range_set **uid_range_set, int range_len, int *err_code) + * @fn emcore_convert_to_uid_range_set(email_id_set_t *id_set, int id_set_count, email_uid_range_set **uid_range_set, int range_len, int *err_code) * Prepare a linked list of uid ranges with each node having a uid_range and lowest and highest uid in it. * *@author h.gahlaut@samsung.com @@ -114,10 +115,10 @@ INTERNAL_FUNC int emcore_finalize_sync(int account_id, int *error); * @return This function returns true on success or false on failure. */ -INTERNAL_FUNC int emcore_convert_to_uid_range_set(emf_id_set_t *id_set, int id_set_count, emf_uid_range_set **uid_range_set, int range_len, int *err_code); +INTERNAL_FUNC int emcore_convert_to_uid_range_set(email_id_set_t *id_set, int id_set_count, email_uid_range_set **uid_range_set, int range_len, int *err_code); /** - * void emcore_free_uid_range_set(emf_uid_range_set **uid_range_head) + * void emcore_free_uid_range_set(email_uid_range_set **uid_range_head) * Frees the linked list of uid ranges * * @author h.gahlaut@samsung.com @@ -125,10 +126,10 @@ INTERNAL_FUNC int emcore_convert_to_uid_range_set(emf_id_set_t *id_set, int id_s * @remarks * @return This function does not return anything. */ -INTERNAL_FUNC void emcore_free_uid_range_set(emf_uid_range_set **uid_range_set); +INTERNAL_FUNC void emcore_free_uid_range_set(email_uid_range_set **uid_range_set); /** - * @fn emcore_append_subset_string_to_uid_range(char *subset_string, emf_uid_range_set **uid_range_set, int range_len, unsigned long luid, unsigned long huid) + * @fn emcore_append_subset_string_to_uid_range(char *subset_string, email_uid_range_set **uid_range_set, int range_len, unsigned long luid, unsigned long huid) * Appends the subset_string to uid range if the uid range has not exceeded maximum length(range_len), otherwise creates a new node in linked list of uid range set * and stores the subset_string in its uid_range. Also sets the lowest and highest uids for the corresponsing uid_range * @@ -143,7 +144,7 @@ INTERNAL_FUNC void emcore_free_uid_range_set(emf_uid_range_set **uid_range_set); * @return This function returns true on success or false on failure. */ -int emcore_append_subset_string_to_uid_range(char *subset_string, emf_uid_range_set **current_node_adr, emf_uid_range_set **uid_range_set, int range_len, unsigned long luid, unsigned long huid); +int emcore_append_subset_string_to_uid_range(char *subset_string, email_uid_range_set **current_node_adr, email_uid_range_set **uid_range_set, int range_len, unsigned long luid, unsigned long huid); /** * @fn emcore_form_comma_separated_strings(int numbers[], int num_count, int max_string_len, char ***strings, int *string_count, int *err_code) @@ -186,6 +187,9 @@ INTERNAL_FUNC int emcore_add_activity(emstorage_activity_tbl_t *new_activity, in INTERNAL_FUNC int emcore_delete_activity(emstorage_activity_tbl_t *activity, int *err_code); #endif /* __FEATURE_LOCAL_ACTIVITY__ */ +INTERNAL_FUNC void emcore_free_rule(email_rule_t* rule); + + #ifdef __cplusplus } #endif /* __cplusplus */ |