X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_api.c;h=eec41daa0d7068d964cc26ab7377e15dc6b78fba;hp=f59a7d0a75cf2d7fd7561b624d2068ff9406d840;hb=c04184b2188a60efed4753d7eef7f3952aed9cef;hpb=b0919f33875667baecb05888fba006d5652d68d1 diff --git a/http_api.c b/http_api.c index f59a7d0..eec41da 100644 --- a/http_api.c +++ b/http_api.c @@ -85,7 +85,7 @@ STATUS _http_parse_key_list(const char *list, HashTable *items, char separator, int vallen = 0, keylen = 0, done = 0; zval array; - Z_ARRVAL(array) = items; + INIT_ZARR(array, items); if (!(val = strchr(list, '='))) { return FAILURE; @@ -358,15 +358,19 @@ PHP_HTTP_API char *_http_guess_content_type(const char *magicfile, long magicmod char *ct = NULL; #ifdef HTTP_HAVE_MAGIC - struct magic_set *magic = magic_open(magicmode); + /* magic_load() fails if MAGIC_MIME is set because it + cowardly adds .mime to the file name */ + struct magic_set *magic = magic_open(magicmode &~ MAGIC_MIME); if (!magic) { http_error_ex(HE_WARNING, HTTP_E_INVALID_PARAM, "Invalid magic mode: %ld", magicmode); } else if (-1 == magic_load(magic, magicfile)) { - http_error_ex(HE_WARNING, HTTP_E_RUNTIME, "Failed to load magic database '%s'", magicfile); + http_error_ex(HE_WARNING, HTTP_E_RUNTIME, "Failed to load magic database '%s' (%s)", magicfile, magic_error(magic)); } else { const char *ctype = NULL; + magic_setflags(magic, magicmode); + switch (data_mode) { case SEND_RSRC: