diff options
Diffstat (limited to 'src/plugins/ds-public/vcard/include/encoding_util.h')
-rwxr-xr-x | src/plugins/ds-public/vcard/include/encoding_util.h | 237 |
1 files changed, 237 insertions, 0 deletions
diff --git a/src/plugins/ds-public/vcard/include/encoding_util.h b/src/plugins/ds-public/vcard/include/encoding_util.h new file mode 100755 index 0000000..19cdfad --- /dev/null +++ b/src/plugins/ds-public/vcard/include/encoding_util.h @@ -0,0 +1,237 @@ +/* + * oma-ds-agent + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * 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. + */ + +#ifndef ENCODING_UTIL_H_ +#define ENCODING_UTIL_H_ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define QP_SIZE 76 +#define BASE64_SIZE 76 + +typedef enum { + EN_TYPE_NONE = 0, + EN_TYPE_QUOTED_PRINTABLE, + EN_TYPE_BASE64 +} encoding_type_e; + +/* Quoted-Printable +* +* @example code +int main() +{ +char *src = "hello"; +char *encode_src; +int encode_src_len = 0; +char *decode_src; +int decode_src_len = 0; + +int res = encode_qp(src, strlen(src), &encode_src, &encode_src_len); +if (res != 0) +fprintf(stdout, "encode src : %s ( %d ) \n", encode_src, encode_src_len); +else +fprintf(stdout, "%s\n", "encode error !!"); + +res = decode_qp(encode_src, encode_src_len, &decode_src, &decode_src_len); +if (res != 0) +fprintf(stdout, "decode src : %s ( %d ) \n", decode_src, decode_src_len); +else +fprintf(stdout, "%s\n", "decode error !!"); + +return 0; +} + +*/ + +/* +* @brief encode original source ( encoding type : quoted-printable ) +* @param[in] src original source +* @param[in] src_len length of original source +* @param[out] en_src encoded source +* @param[out] en_src_len length of encoded source +* @return operation result +* @retval 1 success +* @retval 0 fail +*/ +int encode_qp(char *src, int src_len, char **en_src, int *en_src_len); + +/* +* @brief decode encoded source ( decoding type : quoted-printable ) +* @param[in] src encoded source +* @param[in] src_len length of encoded source +* @param[out] de_src decoded source ( original source ) +* @param[out] de_src_len length of decoded source +* @return operation result +* @retval 1 success +* @retval 0 fail +*/ +int decode_qp(char *src, int src_len, char **de_src, int *de_src_len); + +/* Base64 +* +* @example code + +int main() +{ +char *src = "hello"; +char *encode_src; +int encode_src_len = 0; +char *decode_src; +int decode_src_len = 0; + +int res = encode_base64(src, strlen(src), &encode_src, &encode_src_len); +if (res != 0) +fprintf(stdout, "encode src : %s ( %d ) \n", encode_src, encode_src_len); +else +fprintf(stdout, "%s\n", "encode error !!"); + +res = decode_base64(encode_src, encode_src_len, &decode_src, &decode_src_len); +if (res != 0) +fprintf(stdout, "decode src : %s ( %d ) \n", decode_src, decode_src_len); +else +fprintf(stdout, "%s\n", "decode error !!"); + +return 0; +} + +*/ + +/* +* @brief encode original source ( encoding type : base64 ) +* @param[in] src original source +* @param[in] src_len length of original source +* @param[out] en_src encoded source +* @param[out] en_src_len length of encoded source +* @return operation result +* @retval 1 success +* @retval 0 fail +*/ +int encode_base64(char *src, int src_len, char **en_src, int *en_src_len); + +/* +* @brief decode encoded source ( decoding type : base64 ) +* @param[in] src encoded source +* @param[in] src_len length of encoded source +* @param[out] de_src decoded source ( original source ) +* @param[out] de_src_len length of decoded source +* @return operation result +* @retval 1 success +* @retval 0 fail +*/ +int decode_base64(char *src, int src_len, char **de_src, int *de_src_len); + +/* +* @brief make the decoding process +* @param[in] src encoded source +* @param[in] src_len length of encoded source +* @param[out] de_src decoded source ( original source ) +* @param[out] de_src_len length of decoded source +* @return operation result +* @retval 1 success +* @retval 0 fail +* +* @example code + +int main() +{ +char *src = "..."; // decoded data +int src_len = strlen(src); +char *decode_src; +int decode_src_len = 0; + +int res = proc_decoding(src, src_len, &decode_src, &decode_src_len); + +if (res != 0) +fprintf(stdout, "decode src : \n%s\n", decode_src); +else +fprintf(stdout, "%s\n", "decode error !!"); + +if (decode_src != NULL) +free(decode_src); + +return 0; +} +*/ +int proc_decoding(const char *src, int src_len, char **de_src, int *de_src_len); + +/* +* @brief encoded value is changed to the decoded value +* @param[in] type encoding type +* @param[in] value encoded value (end of string must be '\0' !!) +* ex) =EA=B9=80;=EC=B2=A0=EC=88=98;;;\0 +* @param[in] value_size length of encoded value +* @param[out] decode_str decoded string +* @param[out] decode_str_len length of decoded string +* @return operation result +* @ratval 1 success +* @retval 0 fail +* +* @example code + +int main() +{ +char *data = "..."; // ex) ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8 +encoding_type_e type = find_encoding_type((const char *)data); + +char *value = "..."; // ex) =EA=B9=80;=EC=B2=A0=EC=88=98;;;\0 +int value_size = strlen(value); + +int decode_str_len = 0; +char *decode_str = (char*)malloc(sizeof(char)*BUF_SIZE); // BUF_SIZE : user define +if (decode_str == NULL) { +// error process +} +memset(decode_str, 0x00, sizeof(char)*BUF_SIZE); + +int res = decode_value(type, value, data_size, &decode_str, &decode_str_len); + +if (res == 1) { +// success process +if (decode_str != NULL) +free(decode_str); +} else { +// error process +if (decode_str != NULL) +free(decode_str); +} + +return 0; +} +*/ +int decode_value(encoding_type_e type, const char *value, int value_size, char **decode_str, int *decode_str_len); + +/* +* @brief get encoding type for data +* @param[in] data vobject data +* @return encoding type +* @ratval >= 1 success +* @retval 0 fail +*/ +encoding_type_e find_encoding_type(const char *data); + +/* +* @brief check whether to exist this string, "ENCODING=" in the data +* @param[in] data vobject data +* @return operation result +* @retval 1 exist +* @retval 0 not exist +*/ +int check_encoding_data(const char *data); + +#endif /* ENCODING_UTIL_H_ */ |