From: Andreas Dilger Date: Sat, 11 Jun 2011 15:04:42 +0000 (-0400) Subject: ext2fs: fix undeclared posix_memalign() warning X-Git-Tag: v1.42-WIP-0702~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ac2aa23ef030863f51fc77b42715e173967c44d;p=thirdparty%2Fe2fsprogs.git ext2fs: fix undeclared posix_memalign() warning Older distros do not define posix_memalign() by default in the headers. If ext2fs.h is included early in the headers, it is possible to "#define _XOPEN_SOURCE 600" so that the stdlib.h header will define it, but if ext2fs.h is included after stdlib.h there is no posix_memalign() declaration. Add a posix_memalign() declaration if stdlib.h didn't do it. This is a bit of a hack for GNU headers, but it works on Linux and OS/X without problems. Signed-off-by: Andreas Dilger Signed-off-by: Theodore Ts'o --- diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h index 889c77163..b0e73b650 100644 --- a/lib/ext2fs/ext2fs.h +++ b/lib/ext2fs/ext2fs.h @@ -29,6 +29,10 @@ extern "C" { #define NO_INLINE_FUNCS #endif +#ifndef _XOPEN_SOURCE +#define _XOPEN_SOURCE 600 /* for posix_memalign() */ +#endif + /* * Where the master copy of the superblock is located, and how big * superblocks are supposed to be. We define SUPERBLOCK_SIZE because @@ -37,7 +41,7 @@ extern "C" { * 1032 bytes long). */ #define SUPERBLOCK_OFFSET 1024 -#define SUPERBLOCK_SIZE 1024 +#define SUPERBLOCK_SIZE 1024 /* * The last ext2fs revision level that this version of the library is @@ -54,6 +58,13 @@ extern "C" { #include #include +#ifndef __USE_XOPEN2K +/* If the "#define _XOPEN_SOURCE 600" didn't succeed in declaring + * posix_memalign(), maybe due to or included beforej + * _XOPEN_SOURCE, declare it here to avoid compiler warnings. */ +extern int posix_memalign(void **__memptr, size_t __alignment, size_t __size); +#endif + #if EXT2_FLAT_INCLUDES #include "e2_types.h" #include "ext2_fs.h"