summaryrefslogtreecommitdiff
path: root/ext/standard/browscap.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/browscap.c')
-rw-r--r--ext/standard/browscap.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c
index f4e38c5860..8b53c29c09 100644
--- a/ext/standard/browscap.c
+++ b/ext/standard/browscap.c
@@ -85,7 +85,7 @@ static void browscap_entry_dtor_persistent(zval *zvalue)
pefree(entry, 1);
}
-static inline zend_bool is_placeholder(char c) {
+static inline bool is_placeholder(char c) {
return c == '?' || c == '*';
}
@@ -221,7 +221,7 @@ typedef struct _browscap_parser_ctx {
} browscap_parser_ctx;
static zend_string *browscap_intern_str(
- browscap_parser_ctx *ctx, zend_string *str, zend_bool persistent) {
+ browscap_parser_ctx *ctx, zend_string *str, bool persistent) {
zend_string *interned = zend_hash_find_ptr(&ctx->str_interned, str);
if (interned) {
zend_string_addref(interned);
@@ -237,7 +237,7 @@ static zend_string *browscap_intern_str(
}
static zend_string *browscap_intern_str_ci(
- browscap_parser_ctx *ctx, zend_string *str, zend_bool persistent) {
+ browscap_parser_ctx *ctx, zend_string *str, bool persistent) {
zend_string *lcname;
zend_string *interned;
ALLOCA_FLAG(use_heap);
@@ -261,7 +261,7 @@ static zend_string *browscap_intern_str_ci(
}
static void browscap_add_kv(
- browser_data *bdata, zend_string *key, zend_string *value, zend_bool persistent) {
+ browser_data *bdata, zend_string *key, zend_string *value, bool persistent) {
if (bdata->kv_used == bdata->kv_size) {
bdata->kv_size *= 2;
bdata->kv = safe_perealloc(bdata->kv, sizeof(browscap_kv), bdata->kv_size, 0, persistent);
@@ -406,16 +406,18 @@ static int browscap_read_file(char *filename, browser_data *browdata, int persis
{
zend_file_handle fh;
browscap_parser_ctx ctx = {0};
+ FILE *fp;
if (filename == NULL || filename[0] == '\0') {
return FAILURE;
}
- zend_stream_init_fp(&fh, VCWD_FOPEN(filename, "r"), filename);
- if (!fh.handle.fp) {
+ fp = VCWD_FOPEN(filename, "r");
+ if (!fp) {
zend_error(E_CORE_WARNING, "Cannot open \"%s\" for reading", filename);
return FAILURE;
}
+ zend_stream_init_fp(&fh, fp, filename);
browdata->htab = pemalloc(sizeof *browdata->htab, persistent);
zend_hash_init(browdata->htab, 0, NULL,
@@ -439,6 +441,7 @@ static int browscap_read_file(char *filename, browser_data *browdata, int persis
zend_string_release(ctx.current_section_name);
}
zend_hash_destroy(&ctx.str_interned);
+ zend_destroy_file_handle(&fh);
return SUCCESS;
}
@@ -679,14 +682,14 @@ static void browscap_zval_copy_ctor(zval *p) /* {{{ */
PHP_FUNCTION(get_browser)
{
zend_string *agent_name = NULL, *lookup_browser_name;
- zend_bool return_array = 0;
+ bool return_array = 0;
browser_data *bdata;
browscap_entry *found_entry = NULL;
HashTable *agent_ht;
ZEND_PARSE_PARAMETERS_START(0, 2)
Z_PARAM_OPTIONAL
- Z_PARAM_STR_EX(agent_name, 1, 0)
+ Z_PARAM_STR_OR_NULL(agent_name)
Z_PARAM_BOOL(return_array)
ZEND_PARSE_PARAMETERS_END();