summaryrefslogtreecommitdiff
path: root/src/plugins/ds-public/vcard/include/encoding_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/ds-public/vcard/include/encoding_util.h')
-rwxr-xr-xsrc/plugins/ds-public/vcard/include/encoding_util.h237
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_ */