Submitted by: Jeremy Utley Date: 2004-12-25 Initial Package Version: 2.12p (should apply to versions back to at least k) Upstream Status: Not Submitted - Test Version Origin: Alexander Patrakov, adapted from debian build of cramfs utilities Description: Util-Linux fails in cramfs compilation due to changes in the linux-libc-headers package 2.6.9 and after. This patch is a proper fix to the problem, but may in fact not be accepted upstream. diff -Naur util-linux-2.12p/disk-utils/fsck.cramfs.c util-linux-2.12p-new/disk-utils/fsck.cramfs.c --- util-linux-2.12p/disk-utils/fsck.cramfs.c 2004-12-11 14:53:16.000000000 +0000 +++ util-linux-2.12p-new/disk-utils/fsck.cramfs.c 2004-12-26 00:53:10.665199086 +0000 @@ -76,16 +76,7 @@ #define PAD_SIZE 512 -#include -#ifdef PAGE_SIZE -#define PAGE_CACHE_SIZE ((int) PAGE_SIZE) -#elif defined __ia64__ -#define PAGE_CACHE_SIZE (16384) -#elif defined __alpha__ -#define PAGE_CACHE_SIZE (8192) -#else -#define PAGE_CACHE_SIZE (4096) -#endif +#define PAGE_CACHE_SIZE page_size /* Guarantee access to at least 8kB at a time */ #define ROMBUFFER_BITS 13 @@ -95,11 +86,13 @@ static unsigned long read_buffer_block = ~0UL; /* Uncompressing data structures... */ -static char outbuffer[PAGE_CACHE_SIZE*2]; +static char *outbuffer; z_stream stream; #endif /* INCLUDE_FS_TESTS */ +static size_t page_size; + /* Input status of 0 to print help and exit without an error. */ static void usage(int status) { @@ -464,9 +457,17 @@ int c; /* for getopt */ int start = 0; + page_size = sysconf(_SC_PAGESIZE); + if (argc) progname = argv[0]; + outbuffer = malloc(page_size * 2); + if (!outbuffer) { + fprintf(stderr, _("failed to allocate outbuffer\n")); + exit(8); + } + /* command line options */ while ((c = getopt(argc, argv, "hx:v")) != EOF) { switch (c) { diff -Naur util-linux-2.12p/disk-utils/mkfs.cramfs.c util-linux-2.12p-new/disk-utils/mkfs.cramfs.c --- util-linux-2.12p/disk-utils/mkfs.cramfs.c 2004-12-11 14:56:01.000000000 +0000 +++ util-linux-2.12p-new/disk-utils/mkfs.cramfs.c 2004-12-26 00:53:10.666198928 +0000 @@ -46,16 +46,8 @@ static const char *progname = "mkcramfs"; static int verbose = 0; -#ifdef __ia64__ -#define PAGE_CACHE_SIZE (16384) -#elif defined __alpha__ -#define PAGE_CACHE_SIZE (8192) -#else -#define PAGE_CACHE_SIZE (4096) -#endif - /* The kernel assumes PAGE_CACHE_SIZE as block size. */ -static unsigned int blksize = PAGE_CACHE_SIZE; /* settable via -b option */ +static unsigned int blksize; /* settable via -b option */ static long total_blocks = 0, total_nodes = 1; /* pre-count the root node */ static int image_length = 0; @@ -730,6 +722,7 @@ u32 crc = crc32(0L, Z_NULL, 0); int c; + blksize = sysconf(_SC_PAGESIZE); total_blocks = 0; if (argc) {