#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; }