From d5833800a8d14bf8b57002e837ce69f3adbae694 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 16 Dec 2006 19:24:05 +0000 Subject: [PATCH] New file to figure out if a system has any rounding needs when prepending extra values at the start of the file_struct. --- mkrounding.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 mkrounding.c diff --git a/mkrounding.c b/mkrounding.c new file mode 100644 index 00000000..11b8302c --- /dev/null +++ b/mkrounding.c @@ -0,0 +1,45 @@ +#include "rsync.h" + +struct test1 { + union file_extras extras1[1]; + struct { +# include "mkrounding.h" + } file; +}; + +struct test2 { + union file_extras extras2[2]; + struct { +# include "mkrounding.h" + } file; +}; + +struct test4 { + union file_extras extras4[4]; + struct { +# include "mkrounding.h" + } file; +}; + +#define SIZE_TEST(n) (sizeof (struct test ## n) == EXTRA_LEN * n + sizeof (struct file_struct)) + + int main(UNUSED(int argc), UNUSED(char *argv[])) +{ + int cnt; + if (SIZE_TEST(1)) + cnt = 0; + else if (SIZE_TEST(2)) + cnt = 1; + else if (SIZE_TEST(4)) + cnt = 3; + else { + fprintf(stderr, "Unable to determine required file_extras rounding!\n"); + cnt = 3; + } + if (cnt) + fprintf(stderr, "Rounding file_extras values in multiples of %d.\n", cnt + 1); + else + fprintf(stderr, "No rounding needed for file_extras values.\n"); + printf("#define EXTRA_ROUNDING %d\n", cnt); + return 0; +} -- 2.34.1