/* {{{ format_znode */ void *format_znode(znode *n, zend_uint base_address) { char *tmp; char *buff = NULL; switch (n->op_type) { case IS_UNUSED: return pvt_sprintf("%s", " "); break; /* 1, Constant */ case IS_CONST: #if PHP_VERSION_ID >= 50399 tmp = format_zval(n->zv, 0); #else tmp = format_zval(&n->u.constant, 0); #endif buff = pvt_sprintf("%s", tmp); efree(tmp); return buff; break; /* 16, Compiled variable */ case IS_CV: return pvt_sprintf("!%d", n->u.var); break; /* 4, Variable */ case IS_VAR: return pvt_sprintf("$%ld", n->u.var/sizeof(temp_variable)); break; /* 2, TMP variable */ case IS_TMP_VAR: return pvt_sprintf( "~%ld", n->u.var/sizeof(temp_variable)); break; case PVT_IS_OPNUM: return pvt_sprintf("->%d", n->u.opline_num); break; case PVT_IS_OPLINE: return pvt_sprintf("->%ld", (n->u.opline_num - base_address) / sizeof(zend_op)); break; case PVT_IS_CLASS: return pvt_sprintf(":%ld", n->u.var / sizeof(temp_variable)); break; default: return pvt_sprintf("%s", " "); break; } }
void format_znode(znode *n, char *buffer){ switch (n->op_type) { case IS_CONST: #if PHP_VERSION_ID >= 50399 format_zval(&n.zv, buffer); #else format_zval(&n->u.constant, buffer); #endif break; case IS_VAR: snprintf(buffer, BUFFER_LEN, "$%d", n->u.var/sizeof(temp_variable)); break; case IS_TMP_VAR: snprintf(buffer, BUFFER_LEN, "~%d", n->u.var/sizeof(temp_variable)); break; default: snprintf(buffer, BUFFER_LEN, "%S", ""); break; } }