diff --git a/README.md b/README.md index 92c91ae..88195d4 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,8 @@ To use the system library % ./configure --with-libzstd ``` +> minimum system libzstd library version to 1.4.0 + Install from [pecl](https://pecl.php.net/package/zstd): ``` bash diff --git a/config.m4 b/config.m4 index f0a12cf..304eccd 100644 --- a/config.m4 +++ b/config.m4 @@ -73,6 +73,7 @@ if test "$PHP_ZSTD" != "no"; then zstd/lib/compress/zstd_lazy.c zstd/lib/compress/zstd_ldm.c zstd/lib/compress/zstd_opt.c + zstd/lib/compress/zstd_preSplit.c zstd/lib/compress/zstdmt_compress.c " ZSTD_DECOMPRESS_SOURCES=" diff --git a/config.w32 b/config.w32 index 07443f9..466da7c 100644 --- a/config.w32 +++ b/config.w32 @@ -20,7 +20,7 @@ if (PHP_ZSTD != "no") { EXTENSION("zstd", "zstd.c", null, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); ADD_SOURCES("zstd/lib/common", "debug.c entropy_common.c error_private.c fse_decompress.c pool.c threading.c xxhash.c zstd_common.c", "zstd"); - ADD_SOURCES("zstd/lib/compress", "fse_compress.c hist.c huf_compress.c zstd_compress.c zstd_compress_literals.c zstd_compress_sequences.c zstd_compress_superblock.c zstd_double_fast.c zstd_fast.c zstd_lazy.c zstd_ldm.c zstd_opt.c zstdmt_compress.c", "zstd"); + ADD_SOURCES("zstd/lib/compress", "fse_compress.c hist.c huf_compress.c zstd_compress.c zstd_compress_literals.c zstd_compress_sequences.c zstd_compress_superblock.c zstd_double_fast.c zstd_fast.c zstd_lazy.c zstd_ldm.c zstd_opt.c zstd_preSplit.c zstdmt_compress.c", "zstd"); ADD_SOURCES("zstd/lib/decompress", "huf_decompress.c zstd_ddict.c zstd_decompress.c zstd_decompress_block.c", "zstd"); ADD_FLAG("CFLAGS_ZSTD", " /I" + configure_module_dirname + " /I" + configure_module_dirname + "/zstd/lib/common" + " /I" + configure_module_dirname + "/zstd/lib"); diff --git a/tests/008.phpt b/tests/008.phpt deleted file mode 100644 index a319049..0000000 --- a/tests/008.phpt +++ /dev/null @@ -1,72 +0,0 @@ ---TEST-- -zstd_compress(): compress level ---SKIPIF-- -= 10304) die("skip needs libzstd 1.3.3 or older"); -?> ---FILE-- - -===Done=== ---EXPECTF-- -*** Data size *** -3547 -*** Compression Level *** -1 -- 1%d -- true -2 -- 1%d -- true -3 -- 1%d -- true -4 -- 1%d -- true -5 -- 1%d -- true -6 -- 1%d -- true -7 -- 1%d -- true -8 -- 1%d -- true -9 -- 1%d -- true -10 -- 1%d -- true -11 -- 1%d -- true -12 -- 1%d -- true -13 -- 1%d -- true -14 -- 1%d -- true -15 -- 1%d -- true -16 -- 1%d -- true -17 -- 1%d -- true -18 -- 1%d -- true -19 -- 1%d -- true -20 -- 1%d -- true -21 -- 1%d -- true -22 -- 1%d -- true -*** Invalid Compression Level *** - -Warning: zstd_compress: compression level (100) must be within 1..22 in %s on line %d -100 -- 0 -- -Warning: zstd_uncompress: it was not compressed by zstd in %s on line %d -false - -Warning: zstd_compress: compression level (-1) must be within 1..22 in %s on line %d --1 -- 0 -- -Warning: zstd_uncompress: it was not compressed by zstd in %s on line %d -false -===Done=== diff --git a/tests/009.phpt b/tests/009.phpt index b12233b..293c1df 100644 --- a/tests/009.phpt +++ b/tests/009.phpt @@ -1,9 +1,5 @@ --TEST-- zstd_compress(): compress level ---SKIPIF-- - --FILE-- --FILE-- array( + "level" => ZSTD_COMPRESS_LEVEL_DEFAULT, + "dict" => $dictionary, + ) + ) +); + +var_dump(file_put_contents('compress.zstd://' . $file, $data, 0, $ctx) == strlen($data)); + +echo "Decompression\n"; + +var_dump(zstd_uncompress_dict(file_get_contents($file), $dictionary) === $data); + +@unlink($file); +?> +===Done=== +--EXPECTF-- +Compression +bool(true) +Decompression +bool(true) +===Done=== diff --git a/tests/streams_5.phpt b/tests/streams_5.phpt index da77ae3..d3045b4 100644 --- a/tests/streams_5.phpt +++ b/tests/streams_5.phpt @@ -1,9 +1,5 @@ --TEST-- compress.zstd streams with dictionary ---SKIPIF-- - --FILE-- cctx, &self->output, &in, end ? ZSTD_e_end : ZSTD_e_flush); if (ZSTD_isError(res)) { - php_error_docref(NULL, E_WARNING, - "libzstd error %s\n", ZSTD_getErrorName(res)); + ZSTD_WARNING("zstd: %s\n", ZSTD_getErrorName(res)); ret = EOF; } php_stream_write(self->stream, self->output.dst, self->output.pos); @@ -529,8 +580,7 @@ static ssize_t php_zstd_decomp_read(php_stream *stream, char *buf, size_t count) res = ZSTD_decompressStream(self->dctx, &self->output, &self->input); if (ZSTD_IS_ERROR(res)) { - php_error_docref(NULL, E_WARNING, - "libzstd error %s\n", ZSTD_getErrorName(res)); + ZSTD_WARNING("zstd: %s\n", ZSTD_getErrorName(res)); #if PHP_VERSION_ID >= 70400 return -1; #endif @@ -570,8 +620,7 @@ php_zstd_comp_write(php_stream *stream, const char *buf, size_t count) res = ZSTD_compressStream2(self->cctx, &self->output, &in, ZSTD_e_continue); if (ZSTD_isError(res)) { - php_error_docref(NULL, E_WARNING, - "libzstd error %s\n", ZSTD_getErrorName(res)); + ZSTD_WARNING("zstd: %s\n", ZSTD_getErrorName(res)); #if PHP_VERSION_ID >= 70400 return -1; #endif @@ -668,9 +717,8 @@ php_stream_zstd_opener( } if (level > ZSTD_maxCLevel()) { - php_error_docref(NULL, E_WARNING, - "zstd: compression level (%d) must be less than %d", - level, ZSTD_maxCLevel()); + ZSTD_WARNING("zstd: compression level (%d) must be less than %d", + level, ZSTD_maxCLevel()); level = ZSTD_maxCLevel(); } @@ -687,8 +735,7 @@ php_stream_zstd_opener( self->dctx = NULL; self->cctx = ZSTD_createCCtx(); if (!self->cctx) { - php_error_docref(NULL, E_WARNING, - "zstd: compression context failed"); + ZSTD_WARNING("zstd: compression context failed"); php_stream_close(self->stream); efree(self); return NULL; @@ -706,8 +753,7 @@ php_stream_zstd_opener( } else { self->dctx = ZSTD_createDCtx(); if (!self->dctx) { - php_error_docref(NULL, E_WARNING, - "zstd: compression context failed"); + ZSTD_WARNING("zstd: compression context failed"); php_stream_close(self->stream); efree(self); return NULL; @@ -892,7 +938,7 @@ php_zstd_output_handler_load_dict(php_zstd_context *ctx, int level) REPORT_ERRORS, // | USE_PATH NULL, context); if (!stream) { - ZSTD_WARNING("could not open dictionary stream: %s", dict); + ZSTD_WARNING("failed to open dictionary stream: %s", dict); return; }