X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/8d3a785fa53f0334822dfccdb5d643c7bcebd225..d5833800a8d14bf8b57002e837ce69f3adbae694:/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; +}