|
version 1.1, 2012/02/21 23:05:51
|
version 1.1.1.3, 2013/07/22 08:25:55
|
|
Line 6
|
Line 6
|
| and semantics are as close as possible to those of the Perl 5 language. |
and semantics are as close as possible to those of the Perl 5 language. |
| |
|
| Written by Philip Hazel |
Written by Philip Hazel |
| Copyright (c) 1997-2008 University of Cambridge | Copyright (c) 1997-2012 University of Cambridge |
| |
|
| ----------------------------------------------------------------------------- |
----------------------------------------------------------------------------- |
| Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
|
Line 45 character value into a UTF8 string. */
|
Line 45 character value into a UTF8 string. */
|
| #include "config.h" |
#include "config.h" |
| #endif |
#endif |
| |
|
| |
#define COMPILE_PCRE8 |
| |
|
| #include "pcre_internal.h" |
#include "pcre_internal.h" |
| |
|
| |
|
| /************************************************* |
/************************************************* |
| * Convert character value to UTF-8 * |
* Convert character value to UTF-8 * |
| *************************************************/ |
*************************************************/ |
| |
|
| /* This function takes an integer value in the range 0 - 0x7fffffff | /* This function takes an integer value in the range 0 - 0x10ffff |
| and encodes it as a UTF-8 character in 0 to 6 bytes. | and encodes it as a UTF-8 character in 1 to 4 pcre_uchars. |
| |
|
| Arguments: |
Arguments: |
| cvalue the character value |
cvalue the character value |
| buffer pointer to buffer for result - at least 6 bytes long | buffer pointer to buffer for result - at least 6 pcre_uchars long |
| |
|
| Returns: number of characters placed in the buffer |
Returns: number of characters placed in the buffer |
| */ |
*/ |
| |
|
| |
unsigned |
| int |
int |
| _pcre_ord2utf8(int cvalue, uschar *buffer) | PRIV(ord2utf)(pcre_uint32 cvalue, pcre_uchar *buffer) |
| { |
{ |
| #ifdef SUPPORT_UTF8 | #ifdef SUPPORT_UTF |
| | |
| register int i, j; |
register int i, j; |
| for (i = 0; i < _pcre_utf8_table1_size; i++) | |
| if (cvalue <= _pcre_utf8_table1[i]) break; | for (i = 0; i < PRIV(utf8_table1_size); i++) |
| | if ((int)cvalue <= PRIV(utf8_table1)[i]) break; |
| buffer += i; |
buffer += i; |
| for (j = i; j > 0; j--) |
for (j = i; j > 0; j--) |
| { |
{ |
| *buffer-- = 0x80 | (cvalue & 0x3f); |
*buffer-- = 0x80 | (cvalue & 0x3f); |
| cvalue >>= 6; |
cvalue >>= 6; |
| } |
} |
| *buffer = _pcre_utf8_table2[i] | cvalue; | *buffer = PRIV(utf8_table2)[i] | cvalue; |
| return i + 1; |
return i + 1; |
| |
|
| #else |
#else |
| |
|
| (void)(cvalue); /* Keep compiler happy; this function won't ever be */ |
(void)(cvalue); /* Keep compiler happy; this function won't ever be */ |
| (void)(buffer); /* called when SUPPORT_UTF8 is not defined. */ | (void)(buffer); /* called when SUPPORT_UTF is not defined. */ |
| return 0; |
return 0; |
| |
|
| #endif |
#endif |
| } |
} |
| |
|