As of JPEG-9, the type 'boolean' is an enumeration, but since glib defines TRUE and FALSE as numeric constants and this is C++, they need to be explicitly casted. --- a/src/af/util/xp/ut_jpeg.cpp +++ b/src/af/util/xp/ut_jpeg.cpp @@ -102,7 +102,7 @@ static boolean _jpegFillInputBuffer (j_decompress_ptr cinfo) src->pub.next_input_byte = src->sourceBuf->getPointer (src->pos); src->pub.bytes_in_buffer = src->sourceBuf->getLength (); - return 1; // boolean is a libjpeg type that is an int. + return (boolean)TRUE; } /* In the following file, we also need to reverse header include order: JPEG needs to be included before Glib, which is included by "abiword-garble.h" for this fix to work. The JPEG header needs the types FILE and size_t, we can get them from cstdio. --- a/plugins/garble/xp/abiword-garble-jpeg.cpp 2009-09-05 17:49:53.000000000 +0200 +++ b/plugins/garble/xp/abiword-garble-jpeg.cpp 2014-09-07 21:28:49.364008571 +0200 @@ -20,12 +20,14 @@ * 02111-1307, USA. */ -#include "abiword-garble.h" +#include extern "C" { #include } +#include "abiword-garble.h" + //----------------------------------------------------------------------------- typedef struct { struct jpeg_destination_mgr pub; @@ -49,7 +51,7 @@ mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest; dest->pub.next_output_byte = dest->buf; dest->pub.free_in_buffer = dest->bufsize; - return FALSE; + return (boolean)FALSE; } //----------------------------------------------------------------------------- @@ -96,7 +98,7 @@ cinfo.image_width = (JDIMENSION) w; cinfo.image_height = (JDIMENSION) h; jpeg_set_defaults (&cinfo); - jpeg_set_quality ( &cinfo, 50, TRUE ); + jpeg_set_quality ( &cinfo, 50, (boolean)TRUE ); cinfo.dest = (struct jpeg_destination_mgr *) (*cinfo.mem->alloc_small)((j_common_ptr)&cinfo, JPOOL_PERMANENT, sizeof(mem_destination_mgr)); dest = (mem_dest_ptr) cinfo.dest; dest->pub.init_destination = _jpeg_init_destination; @@ -105,7 +107,7 @@ dest->buf = (JOCTET*)data; dest->bufsize = length; dest->jpegsize = 0; - jpeg_start_compress (&cinfo, TRUE); + jpeg_start_compress (&cinfo, (boolean)TRUE); // write data for (int i=0; iExpand)Author 2021-11-16daemon: Do not deduplicate files smaller than 8 KiB....Files smaller than 8 KiB typically represent ~70% of the entries in /gnu/store/.links but only contribute to ~4% of the space savings afforded by deduplication. Not considering these files for deduplication speeds up file insertion in the store and, more importantly, leaves 'removeUnusedLinks' with fewer entries to traverse, thereby speeding it up proportionally. Partly fixes <https://issues.guix.gnu.org/24937>. * config-daemon.ac: Remove symlink hard link check and CAN_LINK_SYMLINK definition. * guix/store/deduplication.scm (%deduplication-minimum-size): New variable. (deduplicate)[loop]: Do not recurse when FILE's size is below %DEDUPLICATION-MINIMUM-SIZE. (dump-port): New procedure. (dump-file/deduplicate)[hash]: Turn into... [dump-and-compute-hash]: ... this thunk. Call 'deduplicate' only when SIZE is greater than %DEDUPLICATION-MINIMUM-SIZE; otherwise call 'dump-port'. * nix/libstore/gc.cc (LocalStore::removeUnusedLinks): Drop files where st.st_size < deduplicationMinSize. * nix/libstore/local-store.hh (deduplicationMinSize): New declaration. * nix/libstore/optimise-store.cc (deduplicationMinSize): New variable. (LocalStore::optimisePath_): Return when PATH is a symlink or smaller than 'deduplicationMinSize'. * tests/derivations.scm ("identical files are deduplicated"): Produce files bigger than %DEDUPLICATION-MINIMUM-SIZE. * tests/nar.scm ("restore-file-set with directories (signed, valid)"): Likewise. * tests/store-deduplication.scm ("deduplicate, below %deduplication-minimum-size"): New test. ("deduplicate", "deduplicate, ENOSPC"): Produce files bigger than %DEDUPLICATION-MINIMUM-SIZE. * tests/store.scm ("substitute, deduplication"): Likewise. Ludovic Courtès