Since it's very easy to make the patch, I made it. This patch make ZE1 case sensitive except constant. Just for playing with case sensitivity.
While you are in php source root. patch -p0 < case_insensitive_zend.diff I also attached Andrei's conversion tool. > I wrote something like this a couple of months ago. The extension > tarball is attached (it has a sample script that converts studlyCaps > function names to normal_ones). Usage: > > php -q tokenizer.php < input.php > output.php > > -Andrei > PS: I didn't test this patch. It's just for playing with case insensitive Zend. Have fun ;) -- Yasuo Ohgaki
Index: Zend/zend_API.c
===================================================================
RCS file: /repository/Zend/zend_API.c,v
retrieving revision 1.107
diff -u -r1.107 zend_API.c
--- Zend/zend_API.c 2002/01/06 15:21:08 1.107
+++ Zend/zend_API.c 2002/02/08 09:46:17
@@ -1209,7 +1209,7 @@
zend_class_entry *register_class;
char *lowercase_name = zend_strndup(class_entry->name,
class_entry->name_length);
- zend_str_tolower(lowercase_name, class_entry->name_length);
+/* zend_str_tolower(lowercase_name, class_entry->name_length); */
class_entry->type = ZEND_INTERNAL_CLASS;
class_entry->parent = NULL;
@@ -1302,7 +1302,7 @@
return 1;
lcname = estrndup(Z_STRVAL_P(callable), Z_STRLEN_P(callable));
- zend_str_tolower(lcname, Z_STRLEN_P(callable));
+/* zend_str_tolower(lcname, Z_STRLEN_P(callable)); */
if (zend_hash_exists(EG(function_table), lcname,
Z_STRLEN_P(callable)+1))
retval = 1;
efree(lcname);
@@ -1338,7 +1338,7 @@
return 1;
lcname = estrndup(Z_STRVAL_PP(obj),
Z_STRLEN_PP(obj));
- zend_str_tolower(lcname,
Z_STRLEN_PP(obj));
+/* zend_str_tolower(lcname,
+Z_STRLEN_PP(obj)); */
zend_hash_find(EG(class_table),
lcname, Z_STRLEN_PP(obj) + 1, (void**)&ce);
efree(lcname);
} else {
@@ -1362,7 +1362,7 @@
if (ce) {
lcname = estrndup(Z_STRVAL_PP(method),
Z_STRLEN_PP(method));
- zend_str_tolower(lcname,
Z_STRLEN_PP(method));
+/* zend_str_tolower(lcname,
+Z_STRLEN_PP(method)); */
if
(zend_hash_exists(&ce->function_table, lcname, Z_STRLEN_PP(method)+1))
retval = 1;
efree(lcname);
Index: Zend/zend_builtin_functions.c
===================================================================
RCS file: /repository/Zend/zend_builtin_functions.c,v
retrieving revision 1.112
diff -u -r1.112 zend_builtin_functions.c
--- Zend/zend_builtin_functions.c 2002/02/02 19:46:48 1.112
+++ Zend/zend_builtin_functions.c 2002/02/08 09:46:18
@@ -521,7 +521,7 @@
ce = Z_OBJCE_PP(arg);
else if (Z_TYPE_PP(arg) == IS_STRING) {
SEPARATE_ZVAL(arg);
- zend_str_tolower(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg));
+/* zend_str_tolower(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg)); */
zend_hash_find(EG(class_table), Z_STRVAL_PP(arg), Z_STRLEN_PP(arg)+1,
(void **)&ce);
}
@@ -549,7 +549,7 @@
convert_to_string_ex(class_name);
lcname = estrndup(Z_STRVAL_PP(class_name), Z_STRLEN_PP(class_name));
- zend_str_tolower(lcname, Z_STRLEN_PP(class_name));
+/* zend_str_tolower(lcname, Z_STRLEN_PP(class_name)); */
if (only_subclass)
ce = Z_OBJCE_PP(obj)->parent;
@@ -598,7 +598,7 @@
convert_to_string_ex(class_name);
lcname = estrndup((*class_name)->value.str.val, (*class_name)->value.str.len);
- zend_str_tolower(lcname, (*class_name)->value.str.len);
+/* zend_str_tolower(lcname, (*class_name)->value.str.len); */
if (zend_hash_find(EG(class_table), lcname, (*class_name)->value.str.len+1,
(void **)&ce)==FAILURE) {
efree(lcname);
@@ -657,7 +657,7 @@
ce = Z_OBJCE_PP(class);
else if (Z_TYPE_PP(class) == IS_STRING) {
SEPARATE_ZVAL(class);
- zend_str_tolower(Z_STRVAL_PP(class), Z_STRLEN_PP(class));
+/* zend_str_tolower(Z_STRVAL_PP(class), Z_STRLEN_PP(class)); */
zend_hash_find(EG(class_table), Z_STRVAL_PP(class),
Z_STRLEN_PP(class)+1, (void **)&ce);
}
@@ -694,7 +694,7 @@
}
convert_to_string_ex(method_name);
lcname = estrndup((*method_name)->value.str.val,
(*method_name)->value.str.len);
- zend_str_tolower(lcname, (*method_name)->value.str.len);
+/* zend_str_tolower(lcname, (*method_name)->value.str.len); */
if (zend_hash_exists(&Z_OBJCE_PP(klass)->function_table, lcname,
(*method_name)->value.str.len+1)) {
efree(lcname);
RETURN_TRUE;
@@ -718,7 +718,7 @@
}
convert_to_string_ex(class_name);
lcname = estrndup((*class_name)->value.str.val, (*class_name)->value.str.len);
- zend_str_tolower(lcname, (*class_name)->value.str.len);
+/* zend_str_tolower(lcname, (*class_name)->value.str.len); */
if (zend_hash_exists(EG(class_table), lcname, (*class_name)->value.str.len+1))
{
efree(lcname);
RETURN_TRUE;
@@ -743,7 +743,7 @@
}
convert_to_string_ex(function_name);
lcname = estrndup((*function_name)->value.str.val,
(*function_name)->value.str.len);
- zend_str_tolower(lcname, (*function_name)->value.str.len);
+/* zend_str_tolower(lcname, (*function_name)->value.str.len); */
retval = zend_hash_exists(EG(function_table), lcname,
(*function_name)->value.str.len+1);
efree(lcname);
Index: Zend/zend_compile.c
===================================================================
RCS file: /repository/Zend/zend_compile.c,v
retrieving revision 1.224
diff -u -r1.224 zend_compile.c
--- Zend/zend_compile.c 2002/01/06 15:21:09 1.224
+++ Zend/zend_compile.c 2002/02/08 09:46:19
@@ -723,7 +723,7 @@
int function_begin_line = function_token->u.opline_num;
function_token->u.op_array = CG(active_op_array);
- zend_str_tolower(name, name_len);
+/* zend_str_tolower(name, name_len); */
init_op_array(&op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE TSRMLS_CC);
@@ -820,7 +820,7 @@
{
zend_function *function;
- zend_str_tolower(function_name->u.constant.value.str.val,
function_name->u.constant.value.str.len);
+/* zend_str_tolower(function_name->u.constant.value.str.val,
+function_name->u.constant.value.str.len); */
if (zend_hash_find(CG(function_table),
function_name->u.constant.value.str.val, function_name->u.constant.value.str.len+1,
(void **) &function)==FAILURE) {
znode tmp = *function_name;
@@ -884,7 +884,7 @@
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);
opline->opcode = ZEND_INIT_FCALL_BY_NAME;
- zend_str_tolower(class_name->u.constant.value.str.val,
class_name->u.constant.value.str.len);
+/* zend_str_tolower(class_name->u.constant.value.str.val,
+class_name->u.constant.value.str.len); */
if ((class_name->u.constant.value.str.len == sizeof("parent")-1)
&& !memcmp(class_name->u.constant.value.str.val, "parent",
sizeof("parent")-1)) {
if (!CG(active_ce_parent_class_name).value.str.val) {
@@ -1556,7 +1556,7 @@
*CG(class_entry).refcount = 1;
CG(class_entry).constants_updated = 0;
- zend_str_tolower(CG(class_entry).name, CG(class_entry).name_length);
+/* zend_str_tolower(CG(class_entry).name, CG(class_entry).name_length); */
zend_hash_init(&CG(class_entry).function_table, 10, NULL, ZEND_FUNCTION_DTOR,
0);
zend_hash_init(&CG(class_entry).default_properties, 10, NULL, ZVAL_PTR_DTOR,
0);
@@ -1571,7 +1571,7 @@
zend_function tmp_zend_function;
zval *tmp;
- zend_str_tolower(parent_class_name->u.constant.value.str.val,
parent_class_name->u.constant.value.str.len);
+/* zend_str_tolower(parent_class_name->u.constant.value.str.val,
+parent_class_name->u.constant.value.str.len); */
CG(active_ce_parent_class_name).value.str.val =
estrndup(parent_class_name->u.constant.value.str.val,
parent_class_name->u.constant.value.str.len);
CG(active_ce_parent_class_name).value.str.len =
parent_class_name->u.constant.value.str.len;
Index: Zend/zend_constants.c
===================================================================
RCS file: /repository/Zend/zend_constants.c,v
retrieving revision 1.38
diff -u -r1.38 zend_constants.c
--- Zend/zend_constants.c 2002/01/06 15:21:09 1.38
+++ Zend/zend_constants.c 2002/02/08 09:46:19
@@ -226,6 +226,7 @@
lookup_name = do_alloca(name_len+1);
memcpy(lookup_name, name, name_len+1);
+ /* NOTE: Constant is not case sensitive for now */
zend_str_tolower(lookup_name, name_len);
if (zend_hash_find(EG(zend_constants), lookup_name, name_len+1, (void **)
&c)==SUCCESS) {
@@ -255,6 +256,7 @@
printf("Registering constant for module %d\n", c->module_number);
#endif
+ /* NOTE: constant is not case sensitive for now */
zend_str_tolower(lowercase_name, c->name_len);
if (zend_hash_add(EG(zend_constants), lowercase_name, c->name_len, (void *) c,
sizeof(zend_constant), NULL)==FAILURE) {
free(c->name);
Index: Zend/zend_execute.c
===================================================================
RCS file: /repository/Zend/zend_execute.c,v
retrieving revision 1.293
diff -u -r1.293 zend_execute.c
--- Zend/zend_execute.c 2002/01/06 15:21:09 1.293
+++ Zend/zend_execute.c 2002/02/08 09:46:20
@@ -1503,7 +1503,7 @@
zval_copy_ctor(&tmp);
convert_to_string(&tmp);
function_name = &tmp;
- zend_str_tolower(tmp.value.str.val,
tmp.value.str.len);
+/* zend_str_tolower(tmp.value.str.val,
+tmp.value.str.len); */
if (EX(opline)->op1.op_type != IS_UNUSED) {
if (EX(opline)->op1.op_type==IS_CONST)
{ /* used for class_name::function() */
@@ -1939,7 +1939,7 @@
class_name = *tmp;
zval_copy_ctor(&class_name);
convert_to_string(&class_name);
- zend_str_tolower(class_name.value.str.val,
class_name.value.str.len);
+/* zend_str_tolower(class_name.value.str.val,
+class_name.value.str.len); */
if (zend_hash_find(EG(class_table),
class_name.value.str.val, class_name.value.str.len+1, (void **) &ce)==FAILURE) {
zend_error(E_ERROR, "Cannot
instantiate non-existent class: %s", class_name.value.str.val);
Index: Zend/zend_execute_API.c
===================================================================
RCS file: /repository/Zend/zend_execute_API.c,v
retrieving revision 1.140
diff -u -r1.140 zend_execute_API.c
--- Zend/zend_execute_API.c 2002/01/06 15:21:09 1.140
+++ Zend/zend_execute_API.c 2002/02/08 09:46:21
@@ -424,7 +424,7 @@
int found;
lc_class = estrndup(Z_STRVAL_PP(object_pp),
Z_STRLEN_PP(object_pp));
- zend_str_tolower(lc_class, Z_STRLEN_PP(object_pp));
+/* zend_str_tolower(lc_class, Z_STRLEN_PP(object_pp)); */
found = zend_hash_find(EG(class_table), lc_class,
Z_STRLEN_PP(object_pp) + 1, (void **) &ce);
efree(lc_class);
if (found == FAILURE)
@@ -442,7 +442,7 @@
function_name_copy = *function_name;
zval_copy_ctor(&function_name_copy);
- zend_str_tolower(function_name_copy.value.str.val,
function_name_copy.value.str.len);
+/* zend_str_tolower(function_name_copy.value.str.val,
+function_name_copy.value.str.len); */
original_function_state_ptr = EG(function_state_ptr);
if (zend_hash_find(function_table, function_name_copy.value.str.val,
function_name_copy.value.str.len+1, (void **) &function_state.function)==FAILURE) {
Index: Zend/zend_language_scanner.l
===================================================================
RCS file: /repository/Zend/zend_language_scanner.l,v
retrieving revision 1.43
diff -u -r1.43 zend_language_scanner.l
--- Zend/zend_language_scanner.l 2002/01/06 15:21:09 1.43
+++ Zend/zend_language_scanner.l 2002/02/08 09:46:21
@@ -1256,9 +1256,11 @@
}
-<ST_HEREDOC>^{LABEL}(";")?{NEWLINE} {
+<ST_HEREDOC>^{TABS_AND_SPACES}{LABEL}(";")?{NEWLINE} {
int label_len;
unsigned char unput_semicolon;
+ int tabs_and_spaces = 0;
+ void *tmp;
CG(zend_lineno)++;
if (yytext[yyleng-2]=='\r') {
@@ -1273,8 +1275,12 @@
} else{
unput_semicolon=0;
}
+
+ if (yytext[tabs_and_spaces] == ' ' || yytext[tabs_and_spaces] == '\t')
+ for (; yytext[tabs_and_spaces] == ' ' || yytext[tabs_and_spaces] == '\t';
+tabs_and_spaces++);
- if (label_len==CG(heredoc_len) && !memcmp(yytext, CG(heredoc), label_len)) {
+ tmp =(char *)yytext+tabs_and_spaces;
+ if (label_len - tabs_and_spaces ==CG(heredoc_len) && !memcmp(tmp, CG(heredoc),
+label_len - tabs_and_spaces)) {
zendlval->value.str.val = estrndup(yytext, yyleng); /* unput destroys
yytext */
zendlval->value.str.len = yyleng;
if (unput_semicolon) {
tokenizer.tar.gz
Description: GNU Zip compressed data
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php
