/* {{{ write_property handler */ static zval *Transliterator_write_property( zval *object, zval *member, zval *value, void **cache_slot ) { zend_class_entry *scope; TRANSLITERATOR_PROPERTY_HANDLER_PROLOG; if (EG(fake_scope)) { scope = EG(fake_scope); } else { scope = zend_get_executed_scope(); } if( ( scope != Transliterator_ce_ptr ) && ( zend_binary_strcmp( "id", sizeof( "id" ) - 1, Z_STRVAL_P( member ), Z_STRLEN_P( member ) ) == 0 ) ) { php_error_docref0( NULL, E_WARNING, "The property \"id\" is read-only" ); } else { value = zend_std_write_property( object, member, value, cache_slot ); } TRANSLITERATOR_PROPERTY_HANDLER_EPILOG; return value; }
U_CFUNC PHP_FUNCTION(datefmt_set_timezone_id) { php_error_docref0(NULL TSRMLS_CC, E_DEPRECATED, "Use datefmt_set_timezone() instead, which also accepts a plain " "time zone identifier and for which this function is now an " "alias"); PHP_FN(datefmt_set_timezone)(INTERNAL_FUNCTION_PARAM_PASSTHRU); }
void err_msg_dispose(struct err_s *err) { if (err->msg != NULL) { php_error_docref0(NULL, err->level, "%s", err->msg); if (err->should_free) { efree(err->msg); } } }
/* {{{ timezone_register_IntlTimeZone_class * Initialize 'IntlTimeZone' class */ U_CFUNC void timezone_register_IntlTimeZone_class(void) { zend_class_entry ce; /* Create and register 'IntlTimeZone' class. */ INIT_CLASS_ENTRY(ce, "IntlTimeZone", TimeZone_class_functions); ce.create_object = TimeZone_object_create; TimeZone_ce_ptr = zend_register_internal_class(&ce); if (!TimeZone_ce_ptr) { //can't happen now without bigger problems before php_error_docref0(NULL, E_ERROR, "IntlTimeZone: class registration has failed."); return; } memcpy(&TimeZone_handlers, zend_get_std_object_handlers(), sizeof TimeZone_handlers); TimeZone_handlers.offset = XtOffsetOf(TimeZone_object, zo); TimeZone_handlers.clone_obj = TimeZone_clone_obj; TimeZone_handlers.compare_objects = TimeZone_compare_objects; TimeZone_handlers.get_debug_info = TimeZone_get_debug_info; TimeZone_handlers.dtor_obj = TimeZone_objects_dtor; TimeZone_handlers.free_obj = TimeZone_objects_free; /* Declare 'IntlTimeZone' class constants */ #define TIMEZONE_DECL_LONG_CONST(name, val) \ zend_declare_class_constant_long(TimeZone_ce_ptr, name, sizeof(name) - 1, \ val) TIMEZONE_DECL_LONG_CONST("DISPLAY_SHORT", TimeZone::SHORT); TIMEZONE_DECL_LONG_CONST("DISPLAY_LONG", TimeZone::LONG); #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 44 TIMEZONE_DECL_LONG_CONST("DISPLAY_SHORT_GENERIC", TimeZone::SHORT_GENERIC); TIMEZONE_DECL_LONG_CONST("DISPLAY_LONG_GENERIC", TimeZone::LONG_GENERIC); TIMEZONE_DECL_LONG_CONST("DISPLAY_SHORT_GMT", TimeZone::SHORT_GMT); TIMEZONE_DECL_LONG_CONST("DISPLAY_LONG_GMT", TimeZone::LONG_GMT); TIMEZONE_DECL_LONG_CONST("DISPLAY_SHORT_COMMONLY_USED", TimeZone::SHORT_COMMONLY_USED); TIMEZONE_DECL_LONG_CONST("DISPLAY_GENERIC_LOCATION", TimeZone::GENERIC_LOCATION); #endif #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48 TIMEZONE_DECL_LONG_CONST("TYPE_ANY", UCAL_ZONE_TYPE_ANY); TIMEZONE_DECL_LONG_CONST("TYPE_CANONICAL", UCAL_ZONE_TYPE_CANONICAL); TIMEZONE_DECL_LONG_CONST("TYPE_CANONICAL_LOCATION", UCAL_ZONE_TYPE_CANONICAL_LOCATION); #endif /* Declare 'IntlTimeZone' class properties */ }
int php_do_setsockopt_ipv6_rfc3542(php_socket *php_sock, int level, int optname, zval *arg4) { struct err_s err = {0}; zend_llist *allocations = NULL; void *opt_ptr; socklen_t optlen; int retval; assert(level == IPPROTO_IPV6); switch (optname) { #ifdef IPV6_PKTINFO case IPV6_PKTINFO: #ifdef PHP_WIN32 if (Z_TYPE_P(arg4) == IS_ARRAY) { php_error_docref0(NULL, E_WARNING, "Windows does not " "support sticky IPV6_PKTINFO"); return FAILURE; } else { /* windows has no IPV6_RECVPKTINFO, and uses IPV6_PKTINFO * for the same effect. We define IPV6_RECVPKTINFO to be * IPV6_PKTINFO, so assume the assume user used IPV6_RECVPKTINFO */ return 1; } #endif opt_ptr = from_zval_run_conversions(arg4, php_sock, from_zval_write_in6_pktinfo, sizeof(struct in6_pktinfo), "in6_pktinfo", &allocations, &err); if (err.has_error) { err_msg_dispose(&err); return FAILURE; } optlen = sizeof(struct in6_pktinfo); goto dosockopt; #endif } /* we also support IPV6_TCLASS, but that can be handled by the default * integer optval handling in the caller */ return 1; dosockopt: retval = setsockopt(php_sock->bsd_socket, level, optname, opt_ptr, optlen); if (retval != 0) { PHP_SOCKET_ERROR(php_sock, "unable to set socket option", errno); } allocations_dispose(&allocations); return retval != 0 ? FAILURE : SUCCESS; }
/* {{{ read_property handler */ static zval *Transliterator_read_property( zval *object, zval *member, int type, void **cache_slot, zval *rv ) { zval *retval; TRANSLITERATOR_PROPERTY_HANDLER_PROLOG; if( ( type != BP_VAR_R && type != BP_VAR_IS ) && ( zend_binary_strcmp( "id", sizeof( "id" ) - 1, Z_STRVAL_P( member ), Z_STRLEN_P( member ) ) == 0 ) ) { php_error_docref0( NULL, E_WARNING, "The property \"id\" is read-only" ); retval = &EG( uninitialized_zval ); } else { retval = zend_std_read_property( object, member, type, cache_slot, rv ); } TRANSLITERATOR_PROPERTY_HANDLER_EPILOG; return retval; }
/* {{{ calendar_register_IntlCalendar_class * Initialize 'IntlCalendar' class */ void calendar_register_IntlCalendar_class(void) { zend_class_entry ce; /* Create and register 'IntlCalendar' class. */ INIT_CLASS_ENTRY(ce, "IntlCalendar", Calendar_class_functions); ce.create_object = Calendar_object_create; Calendar_ce_ptr = zend_register_internal_class(&ce); if (!Calendar_ce_ptr) { //can't happen now without bigger problems before php_error_docref0(NULL, E_ERROR, "IntlCalendar: class registration has failed."); return; } memcpy( &Calendar_handlers, zend_get_std_object_handlers(), sizeof Calendar_handlers); Calendar_handlers.offset = XtOffsetOf(Calendar_object, zo); Calendar_handlers.clone_obj = Calendar_clone_obj; Calendar_handlers.get_debug_info = Calendar_get_debug_info; Calendar_handlers.dtor_obj = Calendar_objects_dtor; Calendar_handlers.free_obj = Calendar_objects_free; /* Create and register 'IntlGregorianCalendar' class. */ INIT_CLASS_ENTRY(ce, "IntlGregorianCalendar", GregorianCalendar_class_functions); GregorianCalendar_ce_ptr = zend_register_internal_class_ex(&ce, Calendar_ce_ptr); if (!GregorianCalendar_ce_ptr) { //can't happen know without bigger problems before php_error_docref0(NULL, E_ERROR, "IntlGregorianCalendar: class registration has failed."); return; } /* Declare 'IntlCalendar' class constants */ #define CALENDAR_DECL_LONG_CONST(name, val) \ zend_declare_class_constant_long(Calendar_ce_ptr, name, sizeof(name) - 1, \ val) CALENDAR_DECL_LONG_CONST("FIELD_ERA", UCAL_ERA); CALENDAR_DECL_LONG_CONST("FIELD_YEAR", UCAL_YEAR); CALENDAR_DECL_LONG_CONST("FIELD_MONTH", UCAL_MONTH); CALENDAR_DECL_LONG_CONST("FIELD_WEEK_OF_YEAR", UCAL_WEEK_OF_YEAR); CALENDAR_DECL_LONG_CONST("FIELD_WEEK_OF_MONTH", UCAL_WEEK_OF_MONTH); CALENDAR_DECL_LONG_CONST("FIELD_DATE", UCAL_DATE); CALENDAR_DECL_LONG_CONST("FIELD_DAY_OF_YEAR", UCAL_DAY_OF_YEAR); CALENDAR_DECL_LONG_CONST("FIELD_DAY_OF_WEEK", UCAL_DAY_OF_WEEK); CALENDAR_DECL_LONG_CONST("FIELD_DAY_OF_WEEK_IN_MONTH", UCAL_DAY_OF_WEEK_IN_MONTH); CALENDAR_DECL_LONG_CONST("FIELD_AM_PM", UCAL_AM_PM); CALENDAR_DECL_LONG_CONST("FIELD_HOUR", UCAL_HOUR); CALENDAR_DECL_LONG_CONST("FIELD_HOUR_OF_DAY", UCAL_HOUR_OF_DAY); CALENDAR_DECL_LONG_CONST("FIELD_HOUR", UCAL_HOUR); CALENDAR_DECL_LONG_CONST("FIELD_HOUR_OF_DAY", UCAL_HOUR_OF_DAY); CALENDAR_DECL_LONG_CONST("FIELD_MINUTE", UCAL_MINUTE); CALENDAR_DECL_LONG_CONST("FIELD_SECOND", UCAL_SECOND); CALENDAR_DECL_LONG_CONST("FIELD_MILLISECOND", UCAL_MILLISECOND); CALENDAR_DECL_LONG_CONST("FIELD_ZONE_OFFSET", UCAL_ZONE_OFFSET); CALENDAR_DECL_LONG_CONST("FIELD_DST_OFFSET", UCAL_DST_OFFSET); CALENDAR_DECL_LONG_CONST("FIELD_YEAR_WOY", UCAL_YEAR_WOY); CALENDAR_DECL_LONG_CONST("FIELD_DOW_LOCAL", UCAL_DOW_LOCAL); CALENDAR_DECL_LONG_CONST("FIELD_EXTENDED_YEAR", UCAL_EXTENDED_YEAR); CALENDAR_DECL_LONG_CONST("FIELD_JULIAN_DAY", UCAL_JULIAN_DAY); CALENDAR_DECL_LONG_CONST("FIELD_MILLISECONDS_IN_DAY", UCAL_MILLISECONDS_IN_DAY); CALENDAR_DECL_LONG_CONST("FIELD_IS_LEAP_MONTH", UCAL_IS_LEAP_MONTH); CALENDAR_DECL_LONG_CONST("FIELD_FIELD_COUNT", UCAL_FIELD_COUNT); CALENDAR_DECL_LONG_CONST("FIELD_DAY_OF_MONTH", UCAL_DAY_OF_MONTH); CALENDAR_DECL_LONG_CONST("DOW_SUNDAY", UCAL_SUNDAY); CALENDAR_DECL_LONG_CONST("DOW_MONDAY", UCAL_MONDAY); CALENDAR_DECL_LONG_CONST("DOW_TUESDAY", UCAL_TUESDAY); CALENDAR_DECL_LONG_CONST("DOW_WEDNESDAY", UCAL_WEDNESDAY); CALENDAR_DECL_LONG_CONST("DOW_THURSDAY", UCAL_THURSDAY); CALENDAR_DECL_LONG_CONST("DOW_FRIDAY", UCAL_FRIDAY); CALENDAR_DECL_LONG_CONST("DOW_SATURDAY", UCAL_SATURDAY); #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 44 CALENDAR_DECL_LONG_CONST("DOW_TYPE_WEEKDAY", UCAL_WEEKDAY); CALENDAR_DECL_LONG_CONST("DOW_TYPE_WEEKEND", UCAL_WEEKEND); CALENDAR_DECL_LONG_CONST("DOW_TYPE_WEEKEND_OFFSET", UCAL_WEEKEND_ONSET); CALENDAR_DECL_LONG_CONST("DOW_TYPE_WEEKEND_CEASE", UCAL_WEEKEND_CEASE); #endif #if U_ICU_VERSION_MAJOR_NUM >= 49 CALENDAR_DECL_LONG_CONST("WALLTIME_FIRST", UCAL_WALLTIME_FIRST); CALENDAR_DECL_LONG_CONST("WALLTIME_LAST", UCAL_WALLTIME_LAST); CALENDAR_DECL_LONG_CONST("WALLTIME_NEXT_VALID", UCAL_WALLTIME_NEXT_VALID); #endif }
static void php_intl_idn_handoff(INTERNAL_FUNCTION_PARAMETERS, int mode) { char *domain; size_t domain_len; zend_long option = 0, variant = INTL_IDN_VARIANT_2003; zval *idna_info = NULL; intl_error_reset(NULL); if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|llz/", &domain, &domain_len, &option, &variant, &idna_info) == FAILURE) { php_intl_bad_args("bad arguments", mode); RETURN_NULL(); /* don't set FALSE because that's not the way it was before... */ } #ifdef HAVE_46_API if (variant != INTL_IDN_VARIANT_2003 && variant != INTL_IDN_VARIANT_UTS46) { php_intl_bad_args("invalid variant, must be one of {" "INTL_IDNA_VARIANT_2003, INTL_IDNA_VARIANT_UTS46}", mode); RETURN_FALSE; } #else if (variant != INTL_IDN_VARIANT_2003) { php_intl_bad_args("invalid variant, PHP was compiled against " "an old version of ICU and only supports INTL_IDN_VARIANT_2003", mode); RETURN_FALSE; } #endif if (domain_len < 1) { php_intl_bad_args("empty domain name", mode); RETURN_FALSE; } if (domain_len > INT32_MAX - 1) { php_intl_bad_args("domain name too large", mode); RETURN_FALSE; } /* don't check options; it wasn't checked before */ if (idna_info != NULL) { if (variant == INTL_IDN_VARIANT_2003) { php_error_docref0(NULL, E_NOTICE, "4 arguments were provided, but INTL_IDNA_VARIANT_2003 only " "takes 3 - extra argument ignored"); } else { zval_dtor(idna_info); array_init(idna_info); } } if (variant == INTL_IDN_VARIANT_2003) { php_intl_idn_to(INTERNAL_FUNCTION_PARAM_PASSTHRU, domain, (int32_t)domain_len, (uint32_t)option, mode); } #ifdef HAVE_46_API else { php_intl_idn_to_46(INTERNAL_FUNCTION_PARAM_PASSTHRU, domain, (int32_t)domain_len, (uint32_t)option, mode, idna_info); } #endif }