Comparar commits
2 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| b74a0da062 | |||
| e663cfb0fd |
@@ -90,6 +90,71 @@ be located by the compiled program at runtime, perhaps with ldconfig or any
|
||||
other ways.
|
||||
|
||||
|
||||
<h2>How to modify existing non-separable extension functions/classes</h2>
|
||||
|
||||
All commands and directories are from src/ in this guide.
|
||||
|
||||
1. Update IDL
|
||||
|
||||
Change the function/class prototypes in the corresponding IDL file.
|
||||
Follow existing ones for formats. Most of them are straightforward.
|
||||
Possible types are listed in idl/base.php.
|
||||
|
||||
NOTE regarding the "NeedsActRec" flag:
|
||||
|
||||
A function that examines the state of the current or previous
|
||||
frames in its call stack must have the "NeedsActRec" flag set
|
||||
in its "flags" field. Examples of use of the frame state include
|
||||
examining the arguments of the function, looking up the invocation
|
||||
context for the function (e.g., for permissions check), etc.
|
||||
|
||||
2. Update headers and implementation.
|
||||
|
||||
Edit runtime/ext/ext_[name].h and runtime/ext/ext_[name].cpp to
|
||||
reflect the desired modifications in signature and behavior.
|
||||
|
||||
3. Auto-generate files from IDL
|
||||
|
||||
Run
|
||||
|
||||
EXT=[name] make -C idl update
|
||||
|
||||
For example,
|
||||
|
||||
EXT=string make -C idl update
|
||||
|
||||
This will modify several files with the new signatures.
|
||||
|
||||
4. Unit tests
|
||||
|
||||
The "EXT=name make -C idl update" does the following for test files:
|
||||
creates test/test_ext_[name].h -- entry points for this unit test, don't modify
|
||||
updates test/test_ext.inc -- to invoke the test, don't modify
|
||||
creates idl/test_ext_[name].cpp -- A template to be modified.
|
||||
|
||||
You can probably delete these and modify the existing unit tests.
|
||||
|
||||
5. Compile the php to c compiler (so that we can use it to bootstrap hhvm)
|
||||
|
||||
make -j (if you compile using make) (unset USE_HHVM)
|
||||
or
|
||||
fbconfig -r hphp (if you haven't done so already)
|
||||
fbmake --fast dbg -j (if you compile using fbmake)
|
||||
|
||||
6. Use the new php compiler to generate the marshalling code
|
||||
|
||||
make -C system (if you compile using make)
|
||||
|
||||
or
|
||||
|
||||
./tools/remake_system.sh (if you use fbmake)
|
||||
|
||||
7. Compile hhvm
|
||||
|
||||
make -j (if you compile using make) (export USE_HHVM=1)
|
||||
or
|
||||
fbmake --fast dbg -j (if you compile using fbmake)
|
||||
|
||||
<h2>How to add new non-separable extension functions/classes</h2>
|
||||
|
||||
All commands and directories are from src/ in this guide.
|
||||
@@ -162,14 +227,13 @@ unit test function like this,
|
||||
|
||||
void TestExt[Name]::test_ext_[function] () { ... }
|
||||
|
||||
6. How to modify existing extension functions/classes
|
||||
|
||||
Modify the IDL file. Then run
|
||||
6. After compiling once, do this to update the compiler with the latest functions:
|
||||
|
||||
EXT=existing make -C idl update
|
||||
make -C system (if you compile using make)
|
||||
|
||||
Follow all steps after step 3 at above.
|
||||
or
|
||||
|
||||
./tools/remake_system.sh (if you use fbmake)
|
||||
|
||||
7. After compiling once, do this to update compiler with the latest functions:
|
||||
|
||||
make -C system
|
||||
|
||||
+43
-6
@@ -390,10 +390,22 @@ DefineFunction(
|
||||
'desc' => "Domain to convert. In PHP 5 must be UTF-8 encoded.",
|
||||
),
|
||||
array(
|
||||
'name' => "errorcode",
|
||||
'name' => "options",
|
||||
'type' => Int64,
|
||||
'value' => "0",
|
||||
'desc' => "Conversion options - combination of IDNA_* constants (except IDNA_ERROR_* constants). ",
|
||||
),
|
||||
array(
|
||||
'name' => "variant",
|
||||
'type' => Int64,
|
||||
'value' => "0",
|
||||
'desc' => "Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or INTL_IDNA_VARIANT_UTS46 for UTS #46.",
|
||||
),
|
||||
array(
|
||||
'name' => "idna_info",
|
||||
'type' => Variant | Reference,
|
||||
'value' => "null",
|
||||
'desc' => "Conversion options - combination of IDNA_* constants.",
|
||||
'desc' => "This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. In that case, it will be filled with an array with the keys 'result', the possibly illegal result of the transformation, 'isTransitionalDifferent', a boolean indicating whether the usage of the transitional mechanisms of UTS #46 either has or would have changed the result and 'errors', which is an int representing a bitset of the error constants IDNA_ERROR_*. ",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
@@ -415,9 +427,22 @@ DefineFunction(
|
||||
'type' => String,
|
||||
),
|
||||
array(
|
||||
'name' => "errorcode",
|
||||
'name' => "options",
|
||||
'type' => Int64,
|
||||
'value' => "0",
|
||||
'desc' => "Conversion options - combination of IDNA_* constants (except IDNA_ERROR_* constants). ",
|
||||
),
|
||||
array(
|
||||
'name' => "variant",
|
||||
'type' => Int64,
|
||||
'value' => "0",
|
||||
'desc' => "Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or INTL_IDNA_VARIANT_UTS46 for UTS #46.",
|
||||
),
|
||||
array(
|
||||
'name' => "idna_info",
|
||||
'type' => Variant | Reference,
|
||||
'value' => "null",
|
||||
'desc' => "This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. In that case, it will be filled with an array with the keys 'result', the possibly illegal result of the transformation, 'isTransitionalDifferent', a boolean indicating whether the usage of the transitional mechanisms of UTS #46 either has or would have changed the result and 'errors', which is an int representing a bitset of the error constants IDNA_ERROR_*. ",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
@@ -442,10 +467,22 @@ DefineFunction(
|
||||
'desc' => "Domain to convert in IDNA ASCII-compatible format.",
|
||||
),
|
||||
array(
|
||||
'name' => "errorcode",
|
||||
'name' => "options",
|
||||
'type' => Int64,
|
||||
'value' => "0",
|
||||
'desc' => "Conversion options - combination of IDNA_* constants (except IDNA_ERROR_* constants). ",
|
||||
),
|
||||
array(
|
||||
'name' => "variant",
|
||||
'type' => Int64,
|
||||
'value' => "0",
|
||||
'desc' => "Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or INTL_IDNA_VARIANT_UTS46 for UTS #46.",
|
||||
),
|
||||
array(
|
||||
'name' => "idna_info",
|
||||
'type' => Variant | Reference,
|
||||
'value' => "null",
|
||||
'desc' => "Conversion options - combination of IDNA_* constants.",
|
||||
'desc' => "This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. In that case, it will be filled with an array with the keys 'result', the possibly illegal result of the transformation, 'isTransitionalDifferent', a boolean indicating whether the usage of the transitional mechanisms of UTS #46 either has or would have changed the result and 'errors', which is an int representing a bitset of the error constants IDNA_ERROR_*. ",
|
||||
),
|
||||
),
|
||||
'taint_observer' => array(
|
||||
@@ -825,7 +862,7 @@ DefineFunction(
|
||||
DefineFunction(
|
||||
array(
|
||||
'name' => "setstrength",
|
||||
'desc' => "Procedural style bool collator_set_strength ( Collator \$coll , int \$strength ) The » ICU Collation Service supports many levels of comparison (named \"Levels\", but also known as \"Strengths\"). Having these categories enables ICU to sort strings precisely according to local conventions. However, by allowing the levels to be selectively employed, searching for a string in text can be performed with various matching conditions.\n\n\n\nPrimary Level: Typically, this is used to denote differences between base characters (for example, \"a\" < \"b\"). It is the strongest difference. For example, dictionaries are divided into different sections by base character. This is also called the level1 strength.\n\nSecondary Level: Accents in the characters are considered secondary differences (for example, \"as\" < \"à s\" < \"at\"). Other differences between letters can also be considered secondary differences, depending on the language. A secondary difference is ignored when there is a primary difference anywhere in the strings. This is also called the level2 strength.\n\nNote: In some languages (such as Danish), certain accented letters are considered to be separate base characters. In most languages, however, an accented letter only has a secondary difference from the unaccented version of that letter.\n\nTertiary Level: Upper and lower case differences in characters are distinguished at the tertiary level (for example, \"ao\" < \"Ao\" < \"aò\"). In addition, a variant of a letter differs from the base form on the tertiary level (such as \"A\" and \" \"). Another example is the difference between large and small Kana. A tertiary difference is ignored when there is a primary or secondary difference anywhere in the strings. This is also called the level3 strength.\n\nQuaternary Level: When punctuation is ignored (see Ignoring Punctuations ) at level 13, an additional level can be used to distinguish words with and without punctuation (for example, \"ab\" < \"a-b\" < \"aB\"). This difference is ignored when there is a primary, secondary or tertiary difference. This is also known as the level4 strength. The quaternary level should only be used if ignoring punctuation is required or when processing Japanese text (see Hiragana processing).\n\nIdentical Level: When all other levels are equal, the identical level is used as a tiebreaker. The Unicode code point values of the NFD form of each string are compared at this level, just in case there is no difference at levels 14. For example, Hebrew cantillation marks are only distinguished at this level. This level should be used sparingly, as only code point values differences between two strings is an extremely rare occurrence. Using this level substantially decreases the performance for both incremental comparison and sort key generation (as well as increasing the sort key length). It is also known as level 5 strength.\n\nFor example, people may choose to ignore accents or ignore accents and case when searching for text. Almost all characters are distinguished by the first three levels, and in most locales the default value is thus Tertiary. However, if Alternate is set to be Shifted, then the Quaternary strength can be used to break ties among whitespace, punctuation, and symbols that would otherwise be ignored. If very fine distinctions among characters are required, then the Identical strength can be used (for example, Identical Strength distinguishes between the Mathematical Bold Small A and the Mathematical Italic Small A.). However, using levels higher than Tertiary the Identical strength result in significantly longer sort keys, and slower string comparison performance for equal strings.",
|
||||
'desc' => "Procedural style bool collator_set_strength ( Collator \$coll , int \$strength ) The ICU Collation Service supports many levels of comparison (named \"Levels\", but also known as \"Strengths\"). Having these categories enables ICU to sort strings precisely according to local conventions. However, by allowing the levels to be selectively employed, searching for a string in text can be performed with various matching conditions.\n\n\n\nPrimary Level: Typically, this is used to denote differences between base characters (for example, \"a\" < \"b\"). It is the strongest difference. For example, dictionaries are divided into different sections by base character. This is also called the level1 strength.\n\nSecondary Level: Accents in the characters are considered secondary differences. Other differences between letters can also be considered secondary differences, depending on the language. A secondary difference is ignored when there is a primary difference anywhere in the strings. This is also called the level2 strength.\n\nNote: In some languages (such as Danish), certain accented letters are considered to be separate base characters. In most languages, however, an accented letter only has a secondary difference from the unaccented version of that letter.\n\nTertiary Level: Upper and lower case differences in characters are distinguished at the tertiary level. In addition, a variant of a letter differs from the base form on the tertiary level (such as \"A\" and \" \"). Another example is the difference between large and small Kana. A tertiary difference is ignored when there is a primary or secondary difference anywhere in the strings. This is also called the level3 strength.\n\nQuaternary Level: When punctuation is ignored (see Ignoring Punctuations ) at level 13, an additional level can be used to distinguish words with and without punctuation (for example, \"ab\" < \"a-b\" < \"aB\"). This difference is ignored when there is a primary, secondary or tertiary difference. This is also known as the level4 strength. The quaternary level should only be used if ignoring punctuation is required or when processing Japanese text (see Hiragana processing).\n\nIdentical Level: When all other levels are equal, the identical level is used as a tiebreaker. The Unicode code point values of the NFD form of each string are compared at this level, just in case there is no difference at levels 14. For example, Hebrew cantillation marks are only distinguished at this level. This level should be used sparingly, as only code point values differences between two strings is an extremely rare occurrence. Using this level substantially decreases the performance for both incremental comparison and sort key generation (as well as increasing the sort key length). It is also known as level 5 strength.\n\nFor example, people may choose to ignore accents or ignore accents and case when searching for text. Almost all characters are distinguished by the first three levels, and in most locales the default value is thus Tertiary. However, if Alternate is set to be Shifted, then the Quaternary strength can be used to break ties among whitespace, punctuation, and symbols that would otherwise be ignored. If very fine distinctions among characters are required, then the Identical strength can be used (for example, Identical Strength distinguishes between the Mathematical Bold Small A and the Mathematical Italic Small A.). However, using levels higher than Tertiary the Identical strength result in significantly longer sort keys, and slower string comparison performance for equal strings.",
|
||||
'flags' => HasDocComment,
|
||||
'return' => array(
|
||||
'type' => Boolean,
|
||||
|
||||
@@ -31,6 +31,10 @@
|
||||
|
||||
#include <system/lib/systemlib.h>
|
||||
|
||||
#ifdef UIDNA_INFO_INITIALIZER
|
||||
#define HAVE_46_API 1 /* has UTS#46 API (introduced in ICU 4.6) */
|
||||
#endif
|
||||
|
||||
namespace HPHP {
|
||||
IMPLEMENT_DEFAULT_EXTENSION(idn);
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -733,13 +737,66 @@ Variant c_Normalizer::ti_normalize(const char* cls , CStrRef input,
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
enum IdnVariant {
|
||||
INTL_IDN_VARIANT_2003 = 0,
|
||||
INTL_IDN_VARIANT_UTS46
|
||||
};
|
||||
|
||||
enum {
|
||||
INTL_IDN_TO_ASCII = 0,
|
||||
INTL_IDN_TO_UTF8
|
||||
};
|
||||
|
||||
static Variant php_intl_idn_to(CStrRef domain, VRefParam errorcode, int mode) {
|
||||
long option = 0;
|
||||
#ifdef HAVE_46_API
|
||||
static Variant php_intl_idn_to_46(CStrRef domain, int64 options, IdnVariant idn_variant, VRefParam idna_info, int mode) {
|
||||
int32_t converted_capacity;
|
||||
char *converted = NULL;
|
||||
int32_t converted_len;
|
||||
UIDNA *uts46;
|
||||
UIDNAInfo info = UIDNA_INFO_INITIALIZER;
|
||||
UErrorCode status;
|
||||
|
||||
// Get UIDNA instance which implements UTS #46.
|
||||
uts46 = uidna_openUTS46(options, &status);
|
||||
SCOPE_EXIT { uidna_close(uts46); };
|
||||
if (U_FAILURE(status)) return false;
|
||||
|
||||
// Call the appropriate IDN function
|
||||
status = U_ZERO_ERROR;
|
||||
converted_capacity = 255; // no domain name may exceed this
|
||||
String result(converted_capacity, ReserveString); // reserves converted_capacity+1 characters.
|
||||
converted = result.mutableSlice().ptr;
|
||||
if (mode == INTL_IDN_TO_ASCII) {
|
||||
converted_len = uidna_nameToASCII_UTF8(uts46, (char*)domain.data(), domain.size(),
|
||||
converted, converted_capacity, &info, &status);
|
||||
} else {
|
||||
converted_len = uidna_nameToUnicodeUTF8(uts46, (char*)domain.data(), domain.size(),
|
||||
converted, converted_capacity, &info, &status);
|
||||
}
|
||||
if (U_FAILURE(status) || converted_len > converted_capacity) return false;
|
||||
if (info.errors == 0) {
|
||||
result.setSize(converted_len);
|
||||
} else {
|
||||
result.setSize(0);
|
||||
}
|
||||
|
||||
// Set up the array returned in idna_info.
|
||||
Array arr;
|
||||
arr.set("result", result);
|
||||
arr.set("isTransitionalDifferent", info.isTransitionalDifferent);
|
||||
arr.set("errors", (long)info.errors);
|
||||
idna_info = arr; // As in Zend, the previous value of idn_variant is overwritten, not modified.
|
||||
|
||||
if (info.errors == 0) {
|
||||
return result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static Variant php_intl_idn_to(CStrRef domain, int64 options, IdnVariant idn_variant, VRefParam idna_info, int mode) {
|
||||
UChar* ustring = NULL;
|
||||
int ustring_len = 0;
|
||||
UErrorCode status;
|
||||
@@ -748,13 +805,21 @@ static Variant php_intl_idn_to(CStrRef domain, VRefParam errorcode, int mode) {
|
||||
UChar* converted = NULL;
|
||||
int32_t converted_ret_len;
|
||||
|
||||
if (idn_variant != INTL_IDN_VARIANT_2003) {
|
||||
#ifdef HAVE_46_API
|
||||
if (idn_variant == INTL_IDN_VARIANT_UTS46) {
|
||||
return php_intl_idn_to_46(domain, options, idn_variant, ref(idna_info), mode);
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
// Convert the string to UTF-16
|
||||
status = U_ZERO_ERROR;
|
||||
intl_convert_utf8_to_utf16(&ustring, &ustring_len,
|
||||
(char*)domain.data(), domain.size(), &status);
|
||||
if (U_FAILURE(status)) {
|
||||
free(ustring);
|
||||
errorcode = status;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -767,17 +832,16 @@ static Variant php_intl_idn_to(CStrRef domain, VRefParam errorcode, int mode) {
|
||||
// If the malloc failed, bail out
|
||||
if (!converted) {
|
||||
free(ustring);
|
||||
errorcode = U_MEMORY_ALLOCATION_ERROR;
|
||||
return false;
|
||||
}
|
||||
if (mode == INTL_IDN_TO_ASCII) {
|
||||
converted_ret_len = uidna_IDNToASCII(ustring,
|
||||
ustring_len, converted, converted_len,
|
||||
(int32_t)option, &parse_error, &status);
|
||||
(int32_t)options, &parse_error, &status);
|
||||
} else {
|
||||
converted_ret_len = uidna_IDNToUnicode(ustring,
|
||||
ustring_len, converted, converted_len,
|
||||
(int32_t)option, &parse_error, &status);
|
||||
(int32_t)options, &parse_error, &status);
|
||||
}
|
||||
if (status != U_BUFFER_OVERFLOW_ERROR)
|
||||
break;
|
||||
@@ -789,7 +853,6 @@ static Variant php_intl_idn_to(CStrRef domain, VRefParam errorcode, int mode) {
|
||||
free(ustring);
|
||||
if (U_FAILURE(status)) {
|
||||
free(converted);
|
||||
errorcode = status;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -800,7 +863,6 @@ static Variant php_intl_idn_to(CStrRef domain, VRefParam errorcode, int mode) {
|
||||
free(converted);
|
||||
if (U_FAILURE(status)) {
|
||||
free(converted_utf8);
|
||||
errorcode = status;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -808,16 +870,16 @@ static Variant php_intl_idn_to(CStrRef domain, VRefParam errorcode, int mode) {
|
||||
return String(converted_utf8, converted_utf8_len, AttachString);
|
||||
}
|
||||
|
||||
Variant f_idn_to_ascii(CStrRef domain, VRefParam errorcode /* = null */) {
|
||||
return php_intl_idn_to(domain, ref(errorcode), INTL_IDN_TO_ASCII);
|
||||
Variant f_idn_to_ascii(CStrRef domain, int64 options /* = 0 */, int64 variant /* = 0 */, VRefParam idna_info /* = null */) {
|
||||
return php_intl_idn_to(domain, options, (IdnVariant)variant, idna_info, INTL_IDN_TO_ASCII);
|
||||
}
|
||||
|
||||
Variant f_idn_to_unicode(CStrRef domain, VRefParam errorcode /* = null */) {
|
||||
return php_intl_idn_to(domain, ref(errorcode), INTL_IDN_TO_UTF8);
|
||||
Variant f_idn_to_unicode(CStrRef domain, int64 options /* = 0 */, int64 variant /* = 0 */, VRefParam idna_info /* = null */) {
|
||||
return php_intl_idn_to(domain, options, (IdnVariant)variant, idna_info, INTL_IDN_TO_UTF8);
|
||||
}
|
||||
|
||||
Variant f_idn_to_utf8(CStrRef domain, VRefParam errorcode /* = null */) {
|
||||
return php_intl_idn_to(domain, ref(errorcode), INTL_IDN_TO_UTF8);
|
||||
Variant f_idn_to_utf8(CStrRef domain, int64 options /* = 0 */, int64 variant /* = 0 */, VRefParam idna_info /* = null */) {
|
||||
return php_intl_idn_to(domain, options, (IdnVariant)variant, idna_info, INTL_IDN_TO_UTF8);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -772,23 +772,40 @@ TypedValue* fg_collator_sort(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_idn_to_ascii(HPHP::String const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP14f_idn_to_asciiERKNS_6StringERKNS_14VRefParamValueE
|
||||
HPHP::Variant HPHP::f_idn_to_ascii(HPHP::String const&, long, long, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP14f_idn_to_asciiERKNS_6StringEllRKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
domain => rsi
|
||||
errorcode => rdx
|
||||
options => rdx
|
||||
variant => rcx
|
||||
idna_info => r8
|
||||
*/
|
||||
|
||||
TypedValue* fh_idn_to_ascii(TypedValue* _rv, Value* domain, TypedValue* errorcode) asm("_ZN4HPHP14f_idn_to_asciiERKNS_6StringERKNS_14VRefParamValueE");
|
||||
TypedValue* fh_idn_to_ascii(TypedValue* _rv, Value* domain, long options, long variant, TypedValue* idna_info) asm("_ZN4HPHP14f_idn_to_asciiERKNS_6StringEllRKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue * fg1_idn_to_ascii(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_idn_to_ascii(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToStringInPlace(args-0);
|
||||
VRefParamValue defVal1 = null;
|
||||
fh_idn_to_ascii((rv), (Value*)(args-0), (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
switch (count) {
|
||||
default: // count >= 4
|
||||
case 3:
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
VRefParamValue defVal3 = null;
|
||||
fh_idn_to_ascii((rv), (Value*)(args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0), (count > 3) ? (args-3) : (TypedValue*)(&defVal3));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
@@ -797,27 +814,27 @@ TypedValue* fg_idn_to_ascii(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
VRefParamValue defVal1 = null;
|
||||
fh_idn_to_ascii((&(rv)), (Value*)(args-0), (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (count >= 1LL && count <= 4LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && (count <= 1 || (args-1)->m_type == KindOfInt64) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
VRefParamValue defVal3 = null;
|
||||
fh_idn_to_ascii((&(rv)), (Value*)(args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0), (count > 3) ? (args-3) : (TypedValue*)(&defVal3));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_idn_to_ascii(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("idn_to_ascii", count, 1, 2, 1);
|
||||
throw_wrong_arguments_nr("idn_to_ascii", count, 1, 4, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv._count = 0;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
@@ -826,23 +843,40 @@ TypedValue* fg_idn_to_ascii(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_idn_to_unicode(HPHP::String const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP16f_idn_to_unicodeERKNS_6StringERKNS_14VRefParamValueE
|
||||
HPHP::Variant HPHP::f_idn_to_unicode(HPHP::String const&, long, long, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP16f_idn_to_unicodeERKNS_6StringEllRKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
domain => rsi
|
||||
errorcode => rdx
|
||||
options => rdx
|
||||
variant => rcx
|
||||
idna_info => r8
|
||||
*/
|
||||
|
||||
TypedValue* fh_idn_to_unicode(TypedValue* _rv, Value* domain, TypedValue* errorcode) asm("_ZN4HPHP16f_idn_to_unicodeERKNS_6StringERKNS_14VRefParamValueE");
|
||||
TypedValue* fh_idn_to_unicode(TypedValue* _rv, Value* domain, long options, long variant, TypedValue* idna_info) asm("_ZN4HPHP16f_idn_to_unicodeERKNS_6StringEllRKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue * fg1_idn_to_unicode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_idn_to_unicode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToStringInPlace(args-0);
|
||||
VRefParamValue defVal1 = null;
|
||||
fh_idn_to_unicode((rv), (Value*)(args-0), (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
switch (count) {
|
||||
default: // count >= 4
|
||||
case 3:
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
VRefParamValue defVal3 = null;
|
||||
fh_idn_to_unicode((rv), (Value*)(args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0), (count > 3) ? (args-3) : (TypedValue*)(&defVal3));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
@@ -851,27 +885,27 @@ TypedValue* fg_idn_to_unicode(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
VRefParamValue defVal1 = null;
|
||||
fh_idn_to_unicode((&(rv)), (Value*)(args-0), (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (count >= 1LL && count <= 4LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && (count <= 1 || (args-1)->m_type == KindOfInt64) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
VRefParamValue defVal3 = null;
|
||||
fh_idn_to_unicode((&(rv)), (Value*)(args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0), (count > 3) ? (args-3) : (TypedValue*)(&defVal3));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_idn_to_unicode(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("idn_to_unicode", count, 1, 2, 1);
|
||||
throw_wrong_arguments_nr("idn_to_unicode", count, 1, 4, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv._count = 0;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
@@ -880,23 +914,40 @@ TypedValue* fg_idn_to_unicode(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_idn_to_utf8(HPHP::String const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP13f_idn_to_utf8ERKNS_6StringERKNS_14VRefParamValueE
|
||||
HPHP::Variant HPHP::f_idn_to_utf8(HPHP::String const&, long, long, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP13f_idn_to_utf8ERKNS_6StringEllRKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
domain => rsi
|
||||
errorcode => rdx
|
||||
options => rdx
|
||||
variant => rcx
|
||||
idna_info => r8
|
||||
*/
|
||||
|
||||
TypedValue* fh_idn_to_utf8(TypedValue* _rv, Value* domain, TypedValue* errorcode) asm("_ZN4HPHP13f_idn_to_utf8ERKNS_6StringERKNS_14VRefParamValueE");
|
||||
TypedValue* fh_idn_to_utf8(TypedValue* _rv, Value* domain, long options, long variant, TypedValue* idna_info) asm("_ZN4HPHP13f_idn_to_utf8ERKNS_6StringEllRKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue * fg1_idn_to_utf8(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_idn_to_utf8(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToStringInPlace(args-0);
|
||||
VRefParamValue defVal1 = null;
|
||||
fh_idn_to_utf8((rv), (Value*)(args-0), (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
switch (count) {
|
||||
default: // count >= 4
|
||||
case 3:
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
VRefParamValue defVal3 = null;
|
||||
fh_idn_to_utf8((rv), (Value*)(args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0), (count > 3) ? (args-3) : (TypedValue*)(&defVal3));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
@@ -905,27 +956,27 @@ TypedValue* fg_idn_to_utf8(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
VRefParamValue defVal1 = null;
|
||||
fh_idn_to_utf8((&(rv)), (Value*)(args-0), (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (count >= 1LL && count <= 4LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && (count <= 1 || (args-1)->m_type == KindOfInt64) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
VRefParamValue defVal3 = null;
|
||||
fh_idn_to_utf8((&(rv)), (Value*)(args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0), (count > 3) ? (args-3) : (TypedValue*)(&defVal3));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_idn_to_utf8(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("idn_to_utf8", count, 1, 2, 1);
|
||||
throw_wrong_arguments_nr("idn_to_utf8", count, 1, 4, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv._count = 0;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
|
||||
@@ -201,40 +201,46 @@ sort_flag => rcx
|
||||
TypedValue* fh_collator_sort(TypedValue* _rv, TypedValue* obj, TypedValue* arr, long sort_flag) asm("_ZN4HPHP15f_collator_sortERKNS_7VariantERKNS_14VRefParamValueEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_idn_to_ascii(HPHP::String const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP14f_idn_to_asciiERKNS_6StringERKNS_14VRefParamValueE
|
||||
HPHP::Variant HPHP::f_idn_to_ascii(HPHP::String const&, long, long, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP14f_idn_to_asciiERKNS_6StringEllRKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
domain => rsi
|
||||
errorcode => rdx
|
||||
options => rdx
|
||||
variant => rcx
|
||||
idna_info => r8
|
||||
*/
|
||||
|
||||
TypedValue* fh_idn_to_ascii(TypedValue* _rv, Value* domain, TypedValue* errorcode) asm("_ZN4HPHP14f_idn_to_asciiERKNS_6StringERKNS_14VRefParamValueE");
|
||||
TypedValue* fh_idn_to_ascii(TypedValue* _rv, Value* domain, long options, long variant, TypedValue* idna_info) asm("_ZN4HPHP14f_idn_to_asciiERKNS_6StringEllRKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_idn_to_unicode(HPHP::String const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP16f_idn_to_unicodeERKNS_6StringERKNS_14VRefParamValueE
|
||||
HPHP::Variant HPHP::f_idn_to_unicode(HPHP::String const&, long, long, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP16f_idn_to_unicodeERKNS_6StringEllRKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
domain => rsi
|
||||
errorcode => rdx
|
||||
options => rdx
|
||||
variant => rcx
|
||||
idna_info => r8
|
||||
*/
|
||||
|
||||
TypedValue* fh_idn_to_unicode(TypedValue* _rv, Value* domain, TypedValue* errorcode) asm("_ZN4HPHP16f_idn_to_unicodeERKNS_6StringERKNS_14VRefParamValueE");
|
||||
TypedValue* fh_idn_to_unicode(TypedValue* _rv, Value* domain, long options, long variant, TypedValue* idna_info) asm("_ZN4HPHP16f_idn_to_unicodeERKNS_6StringEllRKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_idn_to_utf8(HPHP::String const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP13f_idn_to_utf8ERKNS_6StringERKNS_14VRefParamValueE
|
||||
HPHP::Variant HPHP::f_idn_to_utf8(HPHP::String const&, long, long, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP13f_idn_to_utf8ERKNS_6StringEllRKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
domain => rsi
|
||||
errorcode => rdx
|
||||
options => rdx
|
||||
variant => rcx
|
||||
idna_info => r8
|
||||
*/
|
||||
|
||||
TypedValue* fh_idn_to_utf8(TypedValue* _rv, Value* domain, TypedValue* errorcode) asm("_ZN4HPHP13f_idn_to_utf8ERKNS_6StringERKNS_14VRefParamValueE");
|
||||
TypedValue* fh_idn_to_utf8(TypedValue* _rv, Value* domain, long options, long variant, TypedValue* idna_info) asm("_ZN4HPHP13f_idn_to_utf8ERKNS_6StringEllRKNS_14VRefParamValueE");
|
||||
|
||||
|
||||
} // !HPHP
|
||||
|
||||
@@ -45,9 +45,9 @@ Variant f_collator_set_attribute(CVarRef obj, int64 attr, int64 val);
|
||||
Variant f_collator_set_strength(CVarRef obj, int64 strength);
|
||||
Variant f_collator_sort_with_sort_keys(CVarRef obj, VRefParam arr);
|
||||
Variant f_collator_sort(CVarRef obj, VRefParam arr, int64 sort_flag = q_Collator$$SORT_REGULAR);
|
||||
Variant f_idn_to_ascii(CStrRef domain, VRefParam errorcode = null);
|
||||
Variant f_idn_to_unicode(CStrRef domain, VRefParam errorcode = null);
|
||||
Variant f_idn_to_utf8(CStrRef domain, VRefParam errorcode = null);
|
||||
Variant f_idn_to_ascii(CStrRef domain, int64 options = 0, int64 variant = 0, VRefParam idna_info = null);
|
||||
Variant f_idn_to_unicode(CStrRef domain, int64 options = 0, int64 variant = 0, VRefParam idna_info = null);
|
||||
Variant f_idn_to_utf8(CStrRef domain, int64 options = 0, int64 variant = 0, VRefParam idna_info = null);
|
||||
extern const int64 q_Collator$$SORT_REGULAR;
|
||||
extern const int64 q_Collator$$SORT_NUMERIC;
|
||||
extern const int64 q_Collator$$SORT_STRING;
|
||||
|
||||
@@ -105,22 +105,22 @@ inline Variant x_collator_sort(CVarRef obj, VRefParam arr, int64 sort_flag = q_C
|
||||
return f_collator_sort(obj, arr, sort_flag);
|
||||
}
|
||||
|
||||
inline Variant x_idn_to_ascii(CStrRef domain, VRefParam errorcode = null) {
|
||||
inline Variant x_idn_to_ascii(CStrRef domain, int64 options = 0, int64 variant = 0, VRefParam idna_info = null) {
|
||||
FUNCTION_INJECTION_BUILTIN(idn_to_ascii);
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
return f_idn_to_ascii(domain, errorcode);
|
||||
return f_idn_to_ascii(domain, options, variant, idna_info);
|
||||
}
|
||||
|
||||
inline Variant x_idn_to_unicode(CStrRef domain, VRefParam errorcode = null) {
|
||||
inline Variant x_idn_to_unicode(CStrRef domain, int64 options = 0, int64 variant = 0, VRefParam idna_info = null) {
|
||||
FUNCTION_INJECTION_BUILTIN(idn_to_unicode);
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
return f_idn_to_unicode(domain, errorcode);
|
||||
return f_idn_to_unicode(domain, options, variant, idna_info);
|
||||
}
|
||||
|
||||
inline Variant x_idn_to_utf8(CStrRef domain, VRefParam errorcode = null) {
|
||||
inline Variant x_idn_to_utf8(CStrRef domain, int64 options = 0, int64 variant = 0, VRefParam idna_info = null) {
|
||||
FUNCTION_INJECTION_BUILTIN(idn_to_utf8);
|
||||
TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE);
|
||||
return f_idn_to_utf8(domain, errorcode);
|
||||
return f_idn_to_utf8(domain, options, variant, idna_info);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1505,9 +1505,11 @@ const char* g_class_map[] __attribute__((weak)) = {
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10006040, "idn_to_ascii", "", (const char *)0, (const char *)0,
|
||||
"/**\n * ( excerpt from http://php.net/manual/en/function.idn-to-ascii.php )\n *\n * This function converts Unicode domain name to IDNA ASCII-compatible\n * format.\n *\n * @domain string Domain to convert. In PHP 5 must be UTF-8 encoded.\n * @errorcode mixed Conversion options - combination of IDNA_*\n * constants.\n *\n * @return mixed Domain name encoded in ASCII-compatible form.\n */",
|
||||
"/**\n * ( excerpt from http://php.net/manual/en/function.idn-to-ascii.php )\n *\n * This function converts Unicode domain name to IDNA ASCII-compatible\n * format.\n *\n * @domain string Domain to convert. In PHP 5 must be UTF-8 encoded.\n * @options int Conversion options - combination of IDNA_* constants\n * (except IDNA_ERROR_* constants).\n * @variant int Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or\n * INTL_IDNA_VARIANT_UTS46 for UTS #46.\n * @idna_info mixed This parameter can be used only if\n * INTL_IDNA_VARIANT_UTS46 was used for variant. In\n * that case, it will be filled with an array with the\n * keys 'result', the possibly illegal result of the\n * transformation, 'isTransitionalDifferent', a boolean\n * indicating whether the usage of the transitional\n * mechanisms of UTS #46 either has or would have\n * changed the result and 'errors', which is an int\n * representing a bitset of the error constants\n * IDNA_ERROR_*.\n *\n * @return mixed Domain name encoded in ASCII-compatible form.\n */",
|
||||
(const char *)0xffffffff, (const char *)0x2000, "domain", "", (const char *)0x14, "", "", NULL,
|
||||
(const char *)0x2800, "errorcode", "", (const char *)0xffffffff, "N;", "null", NULL,
|
||||
(const char *)0x2000, "options", "", (const char *)0xa, "i:0;", "0", NULL,
|
||||
(const char *)0x2000, "variant", "", (const char *)0xa, "i:0;", "0", NULL,
|
||||
(const char *)0x2800, "idna_info", "", (const char *)0xffffffff, "N;", "null", NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
@@ -4311,9 +4313,11 @@ const char* g_class_map[] __attribute__((weak)) = {
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10006040, "idn_to_unicode", "", (const char *)0, (const char *)0,
|
||||
"/**\n * ( excerpt from http://php.net/manual/en/function.idn-to-unicode.php )\n *\n *\n * @domain string\n * @errorcode mixed\n *\n * @return mixed\n */",
|
||||
"/**\n * ( excerpt from http://php.net/manual/en/function.idn-to-unicode.php )\n *\n *\n * @domain string\n * @options int Conversion options - combination of IDNA_* constants\n * (except IDNA_ERROR_* constants).\n * @variant int Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or\n * INTL_IDNA_VARIANT_UTS46 for UTS #46.\n * @idna_info mixed This parameter can be used only if\n * INTL_IDNA_VARIANT_UTS46 was used for variant. In\n * that case, it will be filled with an array with the\n * keys 'result', the possibly illegal result of the\n * transformation, 'isTransitionalDifferent', a boolean\n * indicating whether the usage of the transitional\n * mechanisms of UTS #46 either has or would have\n * changed the result and 'errors', which is an int\n * representing a bitset of the error constants\n * IDNA_ERROR_*.\n *\n * @return mixed\n */",
|
||||
(const char *)0xffffffff, (const char *)0x2000, "domain", "", (const char *)0x14, "", "", NULL,
|
||||
(const char *)0x2800, "errorcode", "", (const char *)0xffffffff, "N;", "null", NULL,
|
||||
(const char *)0x2000, "options", "", (const char *)0xa, "i:0;", "0", NULL,
|
||||
(const char *)0x2000, "variant", "", (const char *)0xa, "i:0;", "0", NULL,
|
||||
(const char *)0x2800, "idna_info", "", (const char *)0xffffffff, "N;", "null", NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
@@ -6510,9 +6514,11 @@ const char* g_class_map[] __attribute__((weak)) = {
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10006040, "idn_to_utf8", "", (const char *)0, (const char *)0,
|
||||
"/**\n * ( excerpt from http://php.net/manual/en/function.idn-to-utf8.php )\n *\n * This function converts Unicode domain name from IDNA ASCII-compatible\n * format to plain Unicode.\n *\n * @domain string Domain to convert in IDNA ASCII-compatible format.\n * @errorcode mixed Conversion options - combination of IDNA_*\n * constants.\n *\n * @return mixed Domain name in Unicode. In PHP5, domain name will be\n * in UTF-8.\n */",
|
||||
"/**\n * ( excerpt from http://php.net/manual/en/function.idn-to-utf8.php )\n *\n * This function converts Unicode domain name from IDNA ASCII-compatible\n * format to plain Unicode.\n *\n * @domain string Domain to convert in IDNA ASCII-compatible format.\n * @options int Conversion options - combination of IDNA_* constants\n * (except IDNA_ERROR_* constants).\n * @variant int Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or\n * INTL_IDNA_VARIANT_UTS46 for UTS #46.\n * @idna_info mixed This parameter can be used only if\n * INTL_IDNA_VARIANT_UTS46 was used for variant. In\n * that case, it will be filled with an array with the\n * keys 'result', the possibly illegal result of the\n * transformation, 'isTransitionalDifferent', a boolean\n * indicating whether the usage of the transitional\n * mechanisms of UTS #46 either has or would have\n * changed the result and 'errors', which is an int\n * representing a bitset of the error constants\n * IDNA_ERROR_*.\n *\n * @return mixed Domain name in Unicode. In PHP5, domain name will be\n * in UTF-8.\n */",
|
||||
(const char *)0xffffffff, (const char *)0x2000, "domain", "", (const char *)0x14, "", "", NULL,
|
||||
(const char *)0x2800, "errorcode", "", (const char *)0xffffffff, "N;", "null", NULL,
|
||||
(const char *)0x2000, "options", "", (const char *)0xa, "i:0;", "0", NULL,
|
||||
(const char *)0x2000, "variant", "", (const char *)0xa, "i:0;", "0", NULL,
|
||||
(const char *)0x2800, "idna_info", "", (const char *)0xffffffff, "N;", "null", NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
@@ -22344,7 +22350,7 @@ const char* g_class_map[] __attribute__((weak)) = {
|
||||
NULL,
|
||||
NULL,
|
||||
(const char *)0x10006040, "setstrength", "", (const char *)0, (const char *)0,
|
||||
"/**\n * ( excerpt from http://php.net/manual/en/collator.setstrength.php )\n *\n * Procedural style bool collator_set_strength ( Collator $coll , int\n * $strength ) The \273 ICU Collation Service supports many levels of\n * comparison (named \"Levels\", but also known as \"Strengths\"). Having these\n * categories enables ICU to sort strings precisely according to local\n * conventions. However, by allowing the levels to be selectively employed,\n * searching for a string in text can be performed with various matching\n * conditions.\n *\n *\n *\n * Primary Level: Typically, this is used to denote differences between\n * base characters (for example, \"a\" < \"b\"). It is the strongest\n * difference. For example, dictionaries are divided into different\n * sections by base character. This is also called the level1 strength.\n *\n * Secondary Level: Accents in the characters are considered secondary\n * differences (for example, \"as\" < \"\303\240s\" < \"at\"). Other differences\n * between letters can also be considered secondary differences, depending\n * on the language. A secondary difference is ignored when there is a\n * primary difference anywhere in the strings. This is also called the\n * level2 strength.\n *\n * Note: In some languages (such as Danish), certain accented letters are\n * considered to be separate base characters. In most languages, however,\n * an accented letter only has a secondary difference from the unaccented\n * version of that letter.\n *\n * Tertiary Level: Upper and lower case differences in characters are\n * distinguished at the tertiary level (for example, \"ao\" < \"Ao\" < \"a\303\262\").\n * In addition, a variant of a letter differs from the base form on the\n * tertiary level (such as \"A\" and \" \"). Another example is the difference\n * between large and small Kana. A tertiary difference is ignored when\n * there is a primary or secondary difference anywhere in the strings. This\n * is also called the level3 strength.\n *\n * Quaternary Level: When punctuation is ignored (see Ignoring\n * Punctuations ) at level 13, an additional level can be used to\n * distinguish words with and without punctuation (for example, \"ab\" <\n * \"a-b\" < \"aB\"). This difference is ignored when there is a primary,\n * secondary or tertiary difference. This is also known as the level4\n * strength. The quaternary level should only be used if ignoring\n * punctuation is required or when processing Japanese text (see Hiragana\n * processing).\n *\n * Identical Level: When all other levels are equal, the identical level\n * is used as a tiebreaker. The Unicode code point values of the NFD form\n * of each string are compared at this level, just in case there is no\n * difference at levels 14. For example, Hebrew cantillation marks are only\n * distinguished at this level. This level should be used sparingly, as\n * only code point values differences between two strings is an extremely\n * rare occurrence. Using this level substantially decreases the\n * performance for both incremental comparison and sort key generation (as\n * well as increasing the sort key length). It is also known as level 5\n * strength.\n *\n * For example, people may choose to ignore accents or ignore accents and\n * case when searching for text. Almost all characters are distinguished by\n * the first three levels, and in most locales the default value is thus\n * Tertiary. However, if Alternate is set to be Shifted, then the\n * Quaternary strength can be used to break ties among whitespace,\n * punctuation, and symbols that would otherwise be ignored. If very fine\n * distinctions among characters are required, then the Identical strength\n * can be used (for example, Identical Strength distinguishes between the\n * Mathematical Bold Small A and the Mathematical Italic Small A.).\n * However, using levels higher than Tertiary the Identical strength result\n * in significantly longer sort keys, and slower string comparison\n * performance for equal strings.\n *\n * @strength int Collator object.\n *\n * @return bool Returns TRUE on success or FALSE on failure.\n */",
|
||||
"/**\n * ( excerpt from http://php.net/manual/en/collator.setstrength.php )\n *\n * Procedural style bool collator_set_strength ( Collator $coll , int\n * $strength ) The ICU Collation Service supports many levels of comparison\n * (named \"Levels\", but also known as \"Strengths\"). Having these categories\n * enables ICU to sort strings precisely according to local conventions.\n * However, by allowing the levels to be selectively employed, searching\n * for a string in text can be performed with various matching conditions.\n *\n *\n *\n * Primary Level: Typically, this is used to denote differences between\n * base characters (for example, \"a\" < \"b\"). It is the strongest\n * difference. For example, dictionaries are divided into different\n * sections by base character. This is also called the level1 strength.\n *\n * Secondary Level: Accents in the characters are considered secondary\n * differences. Other differences between letters can also be considered\n * secondary differences, depending on the language. A secondary difference\n * is ignored when there is a primary difference anywhere in the strings.\n * This is also called the level2 strength.\n *\n * Note: In some languages (such as Danish), certain accented letters are\n * considered to be separate base characters. In most languages, however,\n * an accented letter only has a secondary difference from the unaccented\n * version of that letter.\n *\n * Tertiary Level: Upper and lower case differences in characters are\n * distinguished at the tertiary level. In addition, a variant of a letter\n * differs from the base form on the tertiary level (such as \"A\" and \" \").\n * Another example is the difference between large and small Kana. A\n * tertiary difference is ignored when there is a primary or secondary\n * difference anywhere in the strings. This is also called the level3\n * strength.\n *\n * Quaternary Level: When punctuation is ignored (see Ignoring\n * Punctuations ) at level 13, an additional level can be used to\n * distinguish words with and without punctuation (for example, \"ab\" <\n * \"a-b\" < \"aB\"). This difference is ignored when there is a primary,\n * secondary or tertiary difference. This is also known as the level4\n * strength. The quaternary level should only be used if ignoring\n * punctuation is required or when processing Japanese text (see Hiragana\n * processing).\n *\n * Identical Level: When all other levels are equal, the identical level\n * is used as a tiebreaker. The Unicode code point values of the NFD form\n * of each string are compared at this level, just in case there is no\n * difference at levels 14. For example, Hebrew cantillation marks are only\n * distinguished at this level. This level should be used sparingly, as\n * only code point values differences between two strings is an extremely\n * rare occurrence. Using this level substantially decreases the\n * performance for both incremental comparison and sort key generation (as\n * well as increasing the sort key length). It is also known as level 5\n * strength.\n *\n * For example, people may choose to ignore accents or ignore accents and\n * case when searching for text. Almost all characters are distinguished by\n * the first three levels, and in most locales the default value is thus\n * Tertiary. However, if Alternate is set to be Shifted, then the\n * Quaternary strength can be used to break ties among whitespace,\n * punctuation, and symbols that would otherwise be ignored. If very fine\n * distinctions among characters are required, then the Identical strength\n * can be used (for example, Identical Strength distinguishes between the\n * Mathematical Bold Small A and the Mathematical Italic Small A.).\n * However, using levels higher than Tertiary the Identical strength result\n * in significantly longer sort keys, and slower string comparison\n * performance for equal strings.\n *\n * @strength int Collator object.\n *\n * @return bool Returns TRUE on success or FALSE on failure.\n */",
|
||||
(const char *)0x9, (const char *)0x2000, "strength", "", (const char *)0xa, "", "", NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -2142,11 +2142,15 @@ Variant i_pixelgetblack(void *extra, CArrRef params) {
|
||||
return invoke_func_few_handler(extra, params, &ifa_pixelgetblack);
|
||||
}
|
||||
Variant ifa_idn_to_ascii(void *extra, int count, INVOKE_FEW_ARGS_IMPL_ARGS) {
|
||||
if (UNLIKELY(count < 1 || count > 2)) return throw_wrong_arguments("idn_to_ascii", count, 1, 2, 1);
|
||||
if (UNLIKELY(count < 1 || count > 4)) return throw_wrong_arguments("idn_to_ascii", count, 1, 4, 1);
|
||||
CVarRef arg0(a0);
|
||||
if (count <= 1) return (x_idn_to_ascii(arg0));
|
||||
VRefParam arg1(vref(a1));
|
||||
return (x_idn_to_ascii(arg0, arg1));
|
||||
CVarRef arg1(a1);
|
||||
if (count <= 2) return (x_idn_to_ascii(arg0, arg1));
|
||||
CVarRef arg2(a2);
|
||||
if (count <= 3) return (x_idn_to_ascii(arg0, arg1, arg2));
|
||||
VRefParam arg3(vref(a3));
|
||||
return (x_idn_to_ascii(arg0, arg1, arg2, arg3));
|
||||
}
|
||||
Variant i_idn_to_ascii(void *extra, CArrRef params) {
|
||||
return invoke_func_few_handler(extra, params, &ifa_idn_to_ascii);
|
||||
@@ -6201,11 +6205,15 @@ Variant i_posix_getuid(void *extra, CArrRef params) {
|
||||
return invoke_func_few_handler(extra, params, &ifa_posix_getuid);
|
||||
}
|
||||
Variant ifa_idn_to_unicode(void *extra, int count, INVOKE_FEW_ARGS_IMPL_ARGS) {
|
||||
if (UNLIKELY(count < 1 || count > 2)) return throw_wrong_arguments("idn_to_unicode", count, 1, 2, 1);
|
||||
if (UNLIKELY(count < 1 || count > 4)) return throw_wrong_arguments("idn_to_unicode", count, 1, 4, 1);
|
||||
CVarRef arg0(a0);
|
||||
if (count <= 1) return (x_idn_to_unicode(arg0));
|
||||
VRefParam arg1(vref(a1));
|
||||
return (x_idn_to_unicode(arg0, arg1));
|
||||
CVarRef arg1(a1);
|
||||
if (count <= 2) return (x_idn_to_unicode(arg0, arg1));
|
||||
CVarRef arg2(a2);
|
||||
if (count <= 3) return (x_idn_to_unicode(arg0, arg1, arg2));
|
||||
VRefParam arg3(vref(a3));
|
||||
return (x_idn_to_unicode(arg0, arg1, arg2, arg3));
|
||||
}
|
||||
Variant i_idn_to_unicode(void *extra, CArrRef params) {
|
||||
return invoke_func_few_handler(extra, params, &ifa_idn_to_unicode);
|
||||
@@ -9214,11 +9222,15 @@ Variant i_override_function(void *extra, CArrRef params) {
|
||||
return invoke_func_few_handler(extra, params, &ifa_override_function);
|
||||
}
|
||||
Variant ifa_idn_to_utf8(void *extra, int count, INVOKE_FEW_ARGS_IMPL_ARGS) {
|
||||
if (UNLIKELY(count < 1 || count > 2)) return throw_wrong_arguments("idn_to_utf8", count, 1, 2, 1);
|
||||
if (UNLIKELY(count < 1 || count > 4)) return throw_wrong_arguments("idn_to_utf8", count, 1, 4, 1);
|
||||
CVarRef arg0(a0);
|
||||
if (count <= 1) return (x_idn_to_utf8(arg0));
|
||||
VRefParam arg1(vref(a1));
|
||||
return (x_idn_to_utf8(arg0, arg1));
|
||||
CVarRef arg1(a1);
|
||||
if (count <= 2) return (x_idn_to_utf8(arg0, arg1));
|
||||
CVarRef arg2(a2);
|
||||
if (count <= 3) return (x_idn_to_utf8(arg0, arg1, arg2));
|
||||
VRefParam arg3(vref(a3));
|
||||
return (x_idn_to_utf8(arg0, arg1, arg2, arg3));
|
||||
}
|
||||
Variant i_idn_to_utf8(void *extra, CArrRef params) {
|
||||
return invoke_func_few_handler(extra, params, &ifa_idn_to_utf8);
|
||||
@@ -22079,7 +22091,7 @@ extern const CallInfo ci_magickrollimage = {(void*)&i_magickrollimage, (void*)&i
|
||||
extern const CallInfo ci_get_headers = {(void*)&i_get_headers, (void*)&ifa_get_headers, 2, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_inclued_get_data = {(void*)&i_inclued_get_data, (void*)&ifa_inclued_get_data, 0, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_pixelgetblack = {(void*)&i_pixelgetblack, (void*)&ifa_pixelgetblack, 1, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_idn_to_ascii = {(void*)&i_idn_to_ascii, (void*)&ifa_idn_to_ascii, 2, 0, 0x0000000000000002L};
|
||||
extern const CallInfo ci_idn_to_ascii = {(void*)&i_idn_to_ascii, (void*)&ifa_idn_to_ascii, 4, 0, 0x0000000000000008L};
|
||||
extern const CallInfo ci_magickgetimageblob = {(void*)&i_magickgetimageblob, (void*)&ifa_magickgetimageblob, 1, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_imagecolorsforindex = {(void*)&i_imagecolorsforindex, (void*)&ifa_imagecolorsforindex, 2, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_diskfreespace = {(void*)&i_diskfreespace, (void*)&ifa_diskfreespace, 1, 0, 0x0000000000000000L};
|
||||
@@ -22477,7 +22489,7 @@ extern const CallInfo ci_imap_set_quota = {(void*)&i_imap_set_quota, (void*)&ifa
|
||||
extern const CallInfo ci_xbox_schedule_thread_reset = {(void*)&i_xbox_schedule_thread_reset, (void*)&ifa_xbox_schedule_thread_reset, 0, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_mysql_query = {(void*)&i_mysql_query, (void*)&ifa_mysql_query, 2, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_posix_getuid = {(void*)&i_posix_getuid, (void*)&ifa_posix_getuid, 0, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_idn_to_unicode = {(void*)&i_idn_to_unicode, (void*)&ifa_idn_to_unicode, 2, 0, 0x0000000000000002L};
|
||||
extern const CallInfo ci_idn_to_unicode = {(void*)&i_idn_to_unicode, (void*)&ifa_idn_to_unicode, 4, 0, 0x0000000000000008L};
|
||||
extern const CallInfo ci_imap_check = {(void*)&i_imap_check, (void*)&ifa_imap_check, 1, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_magickgetimagesize = {(void*)&i_magickgetimagesize, (void*)&ifa_magickgetimagesize, 1, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_openssl_private_encrypt = {(void*)&i_openssl_private_encrypt, (void*)&ifa_openssl_private_encrypt, 4, 0, 0x0000000000000002L};
|
||||
@@ -22791,7 +22803,7 @@ extern const CallInfo ci_ob_clean = {(void*)&i_ob_clean, (void*)&ifa_ob_clean, 0
|
||||
extern const CallInfo ci_magickgetimagechannelmean = {(void*)&i_magickgetimagechannelmean, (void*)&ifa_magickgetimagechannelmean, 2, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_curl_error = {(void*)&i_curl_error, (void*)&ifa_curl_error, 1, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_override_function = {(void*)&i_override_function, (void*)&ifa_override_function, 3, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_idn_to_utf8 = {(void*)&i_idn_to_utf8, (void*)&ifa_idn_to_utf8, 2, 0, 0x0000000000000002L};
|
||||
extern const CallInfo ci_idn_to_utf8 = {(void*)&i_idn_to_utf8, (void*)&ifa_idn_to_utf8, 4, 0, 0x0000000000000008L};
|
||||
extern const CallInfo ci_asio_exit_context = {(void*)&i_asio_exit_context, (void*)&ifa_asio_exit_context, 0, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_magickadaptivethresholdimage = {(void*)&i_magickadaptivethresholdimage, (void*)&ifa_magickadaptivethresholdimage, 4, 0, 0x0000000000000000L};
|
||||
extern const CallInfo ci_imagecolortransparent = {(void*)&i_imagecolortransparent, (void*)&ifa_imagecolortransparent, 2, 0, 0x0000000000000000L};
|
||||
|
||||
+18
-18
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -116,44 +116,45 @@ bool TestExtIntl::test_collator_sort() {
|
||||
}
|
||||
|
||||
bool TestExtIntl::test_idn_to_ascii() {
|
||||
Variant errorcode;
|
||||
VS(f_idn_to_ascii("www.m\xc3\xa5nsjonasson.se", errorcode),
|
||||
VS(f_idn_to_ascii("www.m\xc3\xa5nsjonasson.se"),
|
||||
"www.xn--mnsjonasson-x8a.se");
|
||||
VS(f_idn_to_ascii("www.facebook.com", errorcode),
|
||||
VS(f_idn_to_ascii("www.facebook.com"),
|
||||
"www.facebook.com");
|
||||
VS(f_idn_to_ascii("www.xn--m\xc3\xa5nsjonasson.se", errorcode),
|
||||
VS(f_idn_to_ascii("www.xn--m\xc3\xa5nsjonasson.se"),
|
||||
false);
|
||||
VS(f_idn_to_ascii("www.12345678901234567890123456789"
|
||||
"012345678901234m\xc3\xa5nsjonasson.se", errorcode),
|
||||
"012345678901234m\xc3\xa5nsjonasson.se"),
|
||||
"www.xn--123456789012345678901234567890123456789"
|
||||
"01234mnsjonasson-5we.se");
|
||||
VS(f_idn_to_ascii("www.12345678901234567890123456789"
|
||||
"0123456789012345m\xc3\xa5nsjonasson.se", errorcode),
|
||||
"0123456789012345m\xc3\xa5nsjonasson.se"),
|
||||
false);
|
||||
VS(f_idn_to_ascii("\u1937ai\u18ed-\u18f0.tk", 1),
|
||||
"xn--ai--youq53b.tk")
|
||||
VS(f_idn_to_ascii("\u1937ai\u18ed-\u18f0.tk", 0),
|
||||
false)
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtIntl::test_idn_to_unicode() {
|
||||
Variant errorcode;
|
||||
VS(f_idn_to_unicode("www.xn--mnsjonasson-x8a.se", errorcode),
|
||||
VS(f_idn_to_unicode("www.xn--mnsjonasson-x8a.se"),
|
||||
"www.m\xc3\xa5nsjonasson.se");
|
||||
VS(f_idn_to_unicode("www.facebook.com", errorcode),
|
||||
VS(f_idn_to_unicode("www.facebook.com"),
|
||||
"www.facebook.com");
|
||||
VS(f_idn_to_unicode("www.xn--12345678901234567890123456789"
|
||||
"012345678901234mnsjonasson-5we.se", errorcode),
|
||||
"012345678901234mnsjonasson-5we.se"),
|
||||
"www.12345678901234567890123456789"
|
||||
"012345678901234m\xc3\xa5nsjonasson.se");
|
||||
return Count(true);
|
||||
}
|
||||
|
||||
bool TestExtIntl::test_idn_to_utf8() {
|
||||
Variant errorcode;
|
||||
VS(f_idn_to_utf8("www.xn--mnsjonasson-x8a.se", errorcode),
|
||||
VS(f_idn_to_utf8("www.xn--mnsjonasson-x8a.se"),
|
||||
"www.m\xc3\xa5nsjonasson.se");
|
||||
VS(f_idn_to_utf8("www.facebook.com", errorcode),
|
||||
VS(f_idn_to_utf8("www.facebook.com"),
|
||||
"www.facebook.com");
|
||||
VS(f_idn_to_utf8("www.xn--12345678901234567890123456789"
|
||||
"012345678901234mnsjonasson-5we.se", errorcode),
|
||||
"012345678901234mnsjonasson-5we.se"),
|
||||
"www.12345678901234567890123456789"
|
||||
"012345678901234m\xc3\xa5nsjonasson.se");
|
||||
return Count(true);
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/ in \/.*hphp/ in hphp/g' -e 's/^\(object([^)]\+)\)#[0-9]\+/\1/g'
|
||||
./test/vm/filepath.filter | sed -e 's/^\(object([^)]\+)\)#[0-9]\+/\1/g'
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/ in \/.*hphp/ in hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +1,2 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/ \/.*hphp/ hphp/g' | sed -e 's/ $/ <-- trailing whitespace/g'
|
||||
./test/vm/filepath.filter | sed -e 's/ $/ <-- trailing whitespace/g'
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's,/.*hphp,hphp,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/in \/.*hphp/in hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +1,2 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g' | sed -e 's/^\(object([^)]\+)\)#[0-9]\+/\1/g'
|
||||
./test/vm/filepath.filter | sed -e 's/^\(object([^)]\+)\)#[0-9]\+/\1/g'
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, in [^ ]*hphp/, in hphp/,'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, [^ ]*\(hphp/.*\)$, \1,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, [^ ]*\(hphp/.*\)$, \1,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's,/.*hphp,hphp,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, [^ ]*hphp/, hphp/,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, [^ ]*hphp/, hphp/,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, [^ ]*\(hphp/.*\)$, \1,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's, in [^ ]*hphp/, in hphp/,'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's, in [^ ]*hphp/, in hphp/,'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's, in [^ ]*hphp/, in hphp/,'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, [^ ]*hphp/, hphp/,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, [^ ]*hphp/, hphp/,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, [^ ]*hphp/, hphp/,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,46 +1,46 @@
|
||||
Test begin
|
||||
HipHop Notice: Use of undefined constant CN - assumed 'CN'
|
||||
HipHop Notice: Use of undefined constant CN - assumed 'CN' in hphp/test/vm/constants.php on line 16
|
||||
string(2) "CN"
|
||||
HipHop Notice: Use of undefined constant CB - assumed 'CB'
|
||||
HipHop Notice: Use of undefined constant CB - assumed 'CB' in hphp/test/vm/constants.php on line 17
|
||||
string(2) "CB"
|
||||
HipHop Notice: Use of undefined constant CI - assumed 'CI'
|
||||
HipHop Notice: Use of undefined constant CI - assumed 'CI' in hphp/test/vm/constants.php on line 18
|
||||
string(2) "CI"
|
||||
HipHop Notice: Use of undefined constant CD - assumed 'CD'
|
||||
HipHop Notice: Use of undefined constant CD - assumed 'CD' in hphp/test/vm/constants.php on line 19
|
||||
string(2) "CD"
|
||||
HipHop Notice: Use of undefined constant CS - assumed 'CS'
|
||||
HipHop Notice: Use of undefined constant CS - assumed 'CS' in hphp/test/vm/constants.php on line 20
|
||||
string(2) "CS"
|
||||
Enter f()
|
||||
HipHop Notice: Use of undefined constant CN - assumed 'CN'
|
||||
HipHop Notice: Use of undefined constant CN - assumed 'CN' in hphp/test/vm/constants.php on line 5
|
||||
string(2) "CN"
|
||||
HipHop Notice: Use of undefined constant CB - assumed 'CB'
|
||||
HipHop Notice: Use of undefined constant CB - assumed 'CB' in hphp/test/vm/constants.php on line 6
|
||||
string(2) "CB"
|
||||
HipHop Notice: Use of undefined constant CI - assumed 'CI'
|
||||
HipHop Notice: Use of undefined constant CI - assumed 'CI' in hphp/test/vm/constants.php on line 7
|
||||
string(2) "CI"
|
||||
HipHop Notice: Use of undefined constant CD - assumed 'CD'
|
||||
HipHop Notice: Use of undefined constant CD - assumed 'CD' in hphp/test/vm/constants.php on line 8
|
||||
string(2) "CD"
|
||||
HipHop Notice: Use of undefined constant CS - assumed 'CS'
|
||||
HipHop Notice: Use of undefined constant CS - assumed 'CS' in hphp/test/vm/constants.php on line 9
|
||||
string(2) "CS"
|
||||
Leave f()
|
||||
HipHop Notice: Use of undefined constant CN - assumed 'CN'
|
||||
HipHop Notice: Use of undefined constant CN - assumed 'CN' in hphp/test/vm/constants.php on line 22
|
||||
string(2) "CN"
|
||||
HipHop Notice: Use of undefined constant CB - assumed 'CB'
|
||||
HipHop Notice: Use of undefined constant CB - assumed 'CB' in hphp/test/vm/constants.php on line 23
|
||||
string(2) "CB"
|
||||
HipHop Notice: Use of undefined constant CI - assumed 'CI'
|
||||
HipHop Notice: Use of undefined constant CI - assumed 'CI' in hphp/test/vm/constants.php on line 24
|
||||
string(2) "CI"
|
||||
HipHop Notice: Use of undefined constant CD - assumed 'CD'
|
||||
HipHop Notice: Use of undefined constant CD - assumed 'CD' in hphp/test/vm/constants.php on line 25
|
||||
string(2) "CD"
|
||||
HipHop Notice: Use of undefined constant CS - assumed 'CS'
|
||||
HipHop Notice: Use of undefined constant CS - assumed 'CS' in hphp/test/vm/constants.php on line 26
|
||||
string(2) "CS"
|
||||
Enter f()
|
||||
HipHop Notice: Use of undefined constant CN - assumed 'CN'
|
||||
HipHop Notice: Use of undefined constant CN - assumed 'CN' in hphp/test/vm/constants.php on line 5
|
||||
string(2) "CN"
|
||||
HipHop Notice: Use of undefined constant CB - assumed 'CB'
|
||||
HipHop Notice: Use of undefined constant CB - assumed 'CB' in hphp/test/vm/constants.php on line 6
|
||||
string(2) "CB"
|
||||
HipHop Notice: Use of undefined constant CI - assumed 'CI'
|
||||
HipHop Notice: Use of undefined constant CI - assumed 'CI' in hphp/test/vm/constants.php on line 7
|
||||
string(2) "CI"
|
||||
HipHop Notice: Use of undefined constant CD - assumed 'CD'
|
||||
HipHop Notice: Use of undefined constant CD - assumed 'CD' in hphp/test/vm/constants.php on line 8
|
||||
string(2) "CD"
|
||||
HipHop Notice: Use of undefined constant CS - assumed 'CS'
|
||||
HipHop Notice: Use of undefined constant CS - assumed 'CS' in hphp/test/vm/constants.php on line 9
|
||||
string(2) "CS"
|
||||
Leave f()
|
||||
NULL
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/ in \/.*hphp.*$//g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's, [^ ]*\(hphp/[^ (]*\), \1,g'
|
||||
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -3,7 +3,7 @@ Going to enable
|
||||
Enabled
|
||||
Done enabling
|
||||
array(1) {
|
||||
["hphp/test/vm/coverage.php"]=>
|
||||
hphp/test/vm/coverage.php"]=>
|
||||
array(27) {
|
||||
[4]=>
|
||||
int(4)
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sed -e 's,"[^ ]*hphp/,"hphp/,g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -e 's/\/.*hphp/hphp/g'
|
||||
Link simbólico
+1
@@ -0,0 +1 @@
|
||||
filepath.filter
|
||||
Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais
Referência em uma Nova Issue
Bloquear um usuário