From: Wayne Davison Date: Sat, 16 Dec 2006 19:24:05 +0000 (+0000) Subject: New file to figure out if a system has any rounding needs when X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/d5833800a8d14bf8b57002e837ce69f3adbae694?ds=inline New file to figure out if a system has any rounding needs when prepending extra values at the start of the file_struct. --- 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; +}