+++ /dev/null
-Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
-\r
- Apache License\r
- Version 2.0, January 2004\r
- http://www.apache.org/licenses/\r
-\r
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r
-\r
- 1. Definitions.\r
-\r
- "License" shall mean the terms and conditions for use, reproduction,\r
- and distribution as defined by Sections 1 through 9 of this document.\r
-\r
- "Licensor" shall mean the copyright owner or entity authorized by\r
- the copyright owner that is granting the License.\r
-\r
- "Legal Entity" shall mean the union of the acting entity and all\r
- other entities that control, are controlled by, or are under common\r
- control with that entity. For the purposes of this definition,\r
- "control" means (i) the power, direct or indirect, to cause the\r
- direction or management of such entity, whether by contract or\r
- otherwise, or (ii) ownership of fifty percent (50%) or more of the\r
- outstanding shares, or (iii) beneficial ownership of such entity.\r
-\r
- "You" (or "Your") shall mean an individual or Legal Entity\r
- exercising permissions granted by this License.\r
-\r
- "Source" form shall mean the preferred form for making modifications,\r
- including but not limited to software source code, documentation\r
- source, and configuration files.\r
-\r
- "Object" form shall mean any form resulting from mechanical\r
- transformation or translation of a Source form, including but\r
- not limited to compiled object code, generated documentation,\r
- and conversions to other media types.\r
-\r
- "Work" shall mean the work of authorship, whether in Source or\r
- Object form, made available under the License, as indicated by a\r
- copyright notice that is included in or attached to the work\r
- (an example is provided in the Appendix below).\r
-\r
- "Derivative Works" shall mean any work, whether in Source or Object\r
- form, that is based on (or derived from) the Work and for which the\r
- editorial revisions, annotations, elaborations, or other modifications\r
- represent, as a whole, an original work of authorship. For the purposes\r
- of this License, Derivative Works shall not include works that remain\r
- separable from, or merely link (or bind by name) to the interfaces of,\r
- the Work and Derivative Works thereof.\r
-\r
- "Contribution" shall mean any work of authorship, including\r
- the original version of the Work and any modifications or additions\r
- to that Work or Derivative Works thereof, that is intentionally\r
- submitted to Licensor for inclusion in the Work by the copyright owner\r
- or by an individual or Legal Entity authorized to submit on behalf of\r
- the copyright owner. For the purposes of this definition, "submitted"\r
- means any form of electronic, verbal, or written communication sent\r
- to the Licensor or its representatives, including but not limited to\r
- communication on electronic mailing lists, source code control systems,\r
- and issue tracking systems that are managed by, or on behalf of, the\r
- Licensor for the purpose of discussing and improving the Work, but\r
- excluding communication that is conspicuously marked or otherwise\r
- designated in writing by the copyright owner as "Not a Contribution."\r
-\r
- "Contributor" shall mean Licensor and any individual or Legal Entity\r
- on behalf of whom a Contribution has been received by Licensor and\r
- subsequently incorporated within the Work.\r
-\r
- 2. Grant of Copyright License. Subject to the terms and conditions of\r
- this License, each Contributor hereby grants to You a perpetual,\r
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
- copyright license to reproduce, prepare Derivative Works of,\r
- publicly display, publicly perform, sublicense, and distribute the\r
- Work and such Derivative Works in Source or Object form.\r
-\r
- 3. Grant of Patent License. Subject to the terms and conditions of\r
- this License, each Contributor hereby grants to You a perpetual,\r
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
- (except as stated in this section) patent license to make, have made,\r
- use, offer to sell, sell, import, and otherwise transfer the Work,\r
- where such license applies only to those patent claims licensable\r
- by such Contributor that are necessarily infringed by their\r
- Contribution(s) alone or by combination of their Contribution(s)\r
- with the Work to which such Contribution(s) was submitted. If You\r
- institute patent litigation against any entity (including a\r
- cross-claim or counterclaim in a lawsuit) alleging that the Work\r
- or a Contribution incorporated within the Work constitutes direct\r
- or contributory patent infringement, then any patent licenses\r
- granted to You under this License for that Work shall terminate\r
- as of the date such litigation is filed.\r
-\r
- 4. Redistribution. You may reproduce and distribute copies of the\r
- Work or Derivative Works thereof in any medium, with or without\r
- modifications, and in Source or Object form, provided that You\r
- meet the following conditions:\r
-\r
- (a) You must give any other recipients of the Work or\r
- Derivative Works a copy of this License; and\r
-\r
- (b) You must cause any modified files to carry prominent notices\r
- stating that You changed the files; and\r
-\r
- (c) You must retain, in the Source form of any Derivative Works\r
- that You distribute, all copyright, patent, trademark, and\r
- attribution notices from the Source form of the Work,\r
- excluding those notices that do not pertain to any part of\r
- the Derivative Works; and\r
-\r
- (d) If the Work includes a "NOTICE" text file as part of its\r
- distribution, then any Derivative Works that You distribute must\r
- include a readable copy of the attribution notices contained\r
- within such NOTICE file, excluding those notices that do not\r
- pertain to any part of the Derivative Works, in at least one\r
- of the following places: within a NOTICE text file distributed\r
- as part of the Derivative Works; within the Source form or\r
- documentation, if provided along with the Derivative Works; or,\r
- within a display generated by the Derivative Works, if and\r
- wherever such third-party notices normally appear. The contents\r
- of the NOTICE file are for informational purposes only and\r
- do not modify the License. You may add Your own attribution\r
- notices within Derivative Works that You distribute, alongside\r
- or as an addendum to the NOTICE text from the Work, provided\r
- that such additional attribution notices cannot be construed\r
- as modifying the License.\r
-\r
- You may add Your own copyright statement to Your modifications and\r
- may provide additional or different license terms and conditions\r
- for use, reproduction, or distribution of Your modifications, or\r
- for any such Derivative Works as a whole, provided Your use,\r
- reproduction, and distribution of the Work otherwise complies with\r
- the conditions stated in this License.\r
-\r
- 5. Submission of Contributions. Unless You explicitly state otherwise,\r
- any Contribution intentionally submitted for inclusion in the Work\r
- by You to the Licensor shall be under the terms and conditions of\r
- this License, without any additional terms or conditions.\r
- Notwithstanding the above, nothing herein shall supersede or modify\r
- the terms of any separate license agreement you may have executed\r
- with Licensor regarding such Contributions.\r
-\r
- 6. Trademarks. This License does not grant permission to use the trade\r
- names, trademarks, service marks, or product names of the Licensor,\r
- except as required for reasonable and customary use in describing the\r
- origin of the Work and reproducing the content of the NOTICE file.\r
-\r
- 7. Disclaimer of Warranty. Unless required by applicable law or\r
- agreed to in writing, Licensor provides the Work (and each\r
- Contributor provides its Contributions) on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r
- implied, including, without limitation, any warranties or conditions\r
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r
- PARTICULAR PURPOSE. You are solely responsible for determining the\r
- appropriateness of using or redistributing the Work and assume any\r
- risks associated with Your exercise of permissions under this License.\r
-\r
- 8. Limitation of Liability. In no event and under no legal theory,\r
- whether in tort (including negligence), contract, or otherwise,\r
- unless required by applicable law (such as deliberate and grossly\r
- negligent acts) or agreed to in writing, shall any Contributor be\r
- liable to You for damages, including any direct, indirect, special,\r
- incidental, or consequential damages of any character arising as a\r
- result of this License or out of the use or inability to use the\r
- Work (including but not limited to damages for loss of goodwill,\r
- work stoppage, computer failure or malfunction, or any and all\r
- other commercial damages or losses), even if such Contributor\r
- has been advised of the possibility of such damages.\r
-\r
- 9. Accepting Warranty or Additional Liability. While redistributing\r
- the Work or Derivative Works thereof, You may choose to offer,\r
- and charge a fee for, acceptance of support, warranty, indemnity,\r
- or other liability obligations and/or rights consistent with this\r
- License. However, in accepting such obligations, You may act only\r
- on Your own behalf and on Your sole responsibility, not on behalf\r
- of any other Contributor, and only if You agree to indemnify,\r
- defend, and hold each Contributor harmless for any liability\r
- incurred by, or claims asserted against, such Contributor by reason\r
- of your accepting any such warranty or additional liability.\r
-\r
- END OF TERMS AND CONDITIONS\r
-\r
- APPENDIX: How to apply the Apache License to your work.\r
-\r
- To apply the Apache License to your work, attach the following\r
- boilerplate notice, with the fields enclosed by brackets "[]"\r
- replaced with your own identifying information. (Don't include\r
- the brackets!) The text should be enclosed in the appropriate\r
- comment syntax for the file format. We also recommend that a\r
- file or class name and description of purpose be included on the\r
- same "printed page" as the copyright notice for easier\r
- identification within third-party archives.\r
-\r
- Copyright [yyyy] [name of copyright owner]\r
-\r
- Licensed under the Apache License, Version 2.0 (the "License");\r
- you may not use this file except in compliance with the License.\r
- You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
-\r
+++ /dev/null
-/*
- * libslp-db-util
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Hakjoo Ko <hakjoo.ko@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.
- *
- */
-
-#include "convert.h"
-
-/* For Convert UTF8 -> UCS2 */
-#define conversionOK (0) /* conversion successful */
-#define sourceoverbmp (-1) /* over bmp */
-#define sourceIllegal (-2) /* source sequence is illegal/malformed */
-#define targetExhausted (-3) /* insuff. room in target for conversion */
-
-/* Some fundamental constants */
-#define UNI_REPLACEMENT_CHAR (DB_UINT32)0x0000FFFD
-#define UNI_MAX_BMP (DB_UINT32)0x0000FFFF
-#define UNI_MAX_UTF16 (DB_UINT32)0x0010FFFF
-#define UNI_MAX_UTF32 (DB_UINT32)0x7FFFFFFF
-#define UNI_MAX_LEGAL_UTF32 (DB_UINT32)0x0010FFFF
-
-#ifdef CONVERSION_PRECISION_CHECK
-# define __GetUTF8ByteSize_Internal(c) \
- ((((c)>>4) == 0x0e) ? 3 : (!((c)&0x80)) ? 1 : \
- (((c)>>5) == 0x06) ? 2 : (((c)>>3) == 0x1e) ? 4 : \
- (((c)>>2) == 0x3e) ? 5 : (((c)>>6) == 0x02) ? 6 : 0)
-#else
-# define __GetUTF8ByteSize_Internal(c) ((!((c) & 0x80)) ? 1 : \
- (((c) >> 5) == 0x06) ? 2 : (((c) >> 4) == 0x0e) ? 3 : 0)
-#endif /* #ifdef CONVERSION_PRECISION_CHECK */
-
-#define MC_GETUTF8_BYTESEQUENCE_10XXXXXX(v) (((v) & 0xBF) | 0x80)
-#define MC_GetUTF8ByteSize(c) (__GetUTF8ByteSize_Internal((DB_UINT8)(c)))
-
-int dbutil_utf8toucs2(DB_UINT8 *source, DB_UINT16 *dest, int *pdestsize)
-{
- int i, nBytes, targetBufSize;
- const DB_UINT8 *p = source;
- DB_UINT32 u32;
-
- if (source == NULL) {
- *pdestsize = 0;
- return sourceoverbmp;
- }
-
- if (!dest) {
- targetBufSize = 1;
- while (*p) {
- nBytes = MC_GetUTF8ByteSize(*p);
-
- u32 = (DB_UINT32)*p;
- switch (nBytes) {
- case 1:
- break;
- case 2: /* 110xxxxx 10xxxxxx */
- u32 &= 0x1F;
- break;
- case 3: /* 1110xxxx 10xxxxxx 10xxxxxx */
- u32 &= 0x0F;
- break;
- default: /* over UNI_MAX_BMP */
- return sourceoverbmp;
- }
-
- p++;
- while (--nBytes > 0) {
- u32 <<= 6;
- u32 |= (*p & 0x3f);
- p++;
- }
-
-#ifdef CONVERSION_PRECISION_CHECK
- if (MC_IsSurrogateArea(u32))
- return sourceIllegal;
- else if (u32 <= UNI_MAX_BMP)
- targetBufSize++;
- else
- return sourceoverbmp;
-#else
- if (u32 <= UNI_MAX_BMP)
- targetBufSize++;
- else
- return sourceoverbmp;
-#endif /* if (u32 <= UNI_MAX_BMP) */
-#if 0
- targetBufSize++;
-#endif
- }
-
- *pdestsize = targetBufSize;
- return conversionOK;
- }
- /* conversion string */
- i = 0;
- targetBufSize = *pdestsize;
-
- while (*p) {
- nBytes = MC_GetUTF8ByteSize(*p);
- u32 = *p;
- switch (nBytes) {
- case 1:
- break;
- case 2: /* 110xxxxx 10xxxxxx */
- u32 &= 0x1F;
- break;
- case 3: /* 1110xxxx 10xxxxxx 10xxxxxx */
- u32 &= 0x0F;
- break;
- default:
- return sourceIllegal;
- }
-
- p++;
- while (--nBytes > 0) {
- u32 <<= 6;
- u32 |= (*p & 0x3f);
- p++;
- }
- if (i >= targetBufSize) {
- return targetExhausted;
- }
-#ifdef CONVERSION_PRECISION_CHECK
- if (MC_IsSurrogateArea(u32))
- return sourceIllegal;
- else if (u32 <= UNI_MAX_BMP)
- dest[i++] = (DB_UINT16)u32; /* normal case */
- else
- return sourceoverbmp;
-#else
- if (u32 <= UNI_MAX_BMP)
- dest[i++] = (DB_UINT16)u32; /* normal case */
- else
- return sourceoverbmp;
-#endif /* #ifdef CONVERSION_PRECISION_CHECK */
- }
- dest[i] = (DB_UINT16)0x00;
- *pdestsize = i + 1;
- return conversionOK;
-}
-
-int dbutil_ucs2toutf8(DB_UINT16 *source, DB_UINT8 *dest, int *pdestsize)
-{
- int i, targetBufSize;
- DB_UINT16 *p = source;
- DB_UINT32 u32;
- int bytesToWrite = 0;
- const DB_UINT8 szFirstByteMark[7] = {
- 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC
- };
-
- if (source == NULL) {
- *pdestsize = 0;
- return sourceoverbmp;
- }
-
- if (!dest) {
- targetBufSize = 1; /* null */
- while (*p) {
- u32 = (DB_UINT32)*p;
-#ifdef CONVERSION_PRECISION_CHECK
- if (MC_IsSurrogateArea(u32))
- return sourceIllegal;
-#endif /* #ifdef CONVERSION_PRECISION_CHECK */
-
- if (u32 < (DB_UINT32)0x80)
- targetBufSize++;
- else if (u32 < (DB_UINT32)0x800)
- targetBufSize += 2;
- else if (u32 < (DB_UINT32)0x10000)
- targetBufSize += 3;
- else /* over UNI_MAX_BMP */
- return sourceoverbmp;
-
- p++;
- }
-
- *pdestsize = targetBufSize;
- return conversionOK;
- }
- /* conversion string */
- i = 0;
- targetBufSize = *pdestsize;
-
- while (*p) {
- u32 = (DB_UINT32)*p++;
-#ifdef CONVERSION_PRECISION_CHECK
- if (MC_IsSurrogateArea(u32))
- return sourceIllegal;
-#endif /* #ifdef CONVERSION_PRECISION_CHECK */
-
- if (u32 < (DB_UINT32)0x80)
- bytesToWrite = 1;
- else if (u32 < (DB_UINT32)0x800)
- bytesToWrite = 2;
- else if (u32 < (DB_UINT32)0x10000)
- bytesToWrite = 3;
- else /* over UNI_MAX_BMP */
- return sourceoverbmp;
-
- i += bytesToWrite;
- if (i >= targetBufSize)
- return targetExhausted;
-
- switch (bytesToWrite) { /* note: everything falls through. */
- case 3:
- dest[--i] =
- (DB_UINT8)MC_GETUTF8_BYTESEQUENCE_10XXXXXX(u32);
- u32 >>= 6;
- case 2:
- dest[--i] =
- (DB_UINT8)MC_GETUTF8_BYTESEQUENCE_10XXXXXX(u32);
- u32 >>= 6;
- case 1:
- dest[--i] =
- (DB_UINT8)(u32 | szFirstByteMark[bytesToWrite]);
- }
-
- i += bytesToWrite;
- }
-
- dest[i] = (DB_UINT8)0x00;
- *pdestsize = i + 1;
- return conversionOK;
-}