1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-18 19:49:40 +00:00
freebsd-ports/mail/dovecot/files/patch-src_lib-index_test-mail-index-transaction-update.c
Dimitry Andric b43593bdbc mail/dovecot: fix build with clang 15
During an exp-run for llvm 15 (see bug 265425), it turned out that
mail/dovecot failed to build with clang 15:

  ioloop-notify-kqueue.c:70:2: error: call to undeclared function 'i_gettimeofday'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
          i_gettimeofday(&ioloop_timeval);
          ^
  ioloop-notify-kqueue.c:70:2: note: did you mean 'gettimeofday'?
  /usr/include/sys/time.h:617:5: note: 'gettimeofday' declared here
  int     gettimeofday(struct timeval *, struct timezone *);
          ^
  ...
  --- test-mail-index-transaction-update.o ---
  test-mail-index-transaction-update.c:633:14: warning: comparison of function 'timezone' equal to a null pointer is always false [-Wtautological-pointer-compare]
          test_assert(timezone == 0);
                      ^~~~~~~~    ~
  ../../src/lib-test/test-common.h:20:8: note: expanded from macro 'test_assert'
          if (!(code)) test_assert_failed(#code, __FILE__, __LINE__); \
                ^~~~
  test-mail-index-transaction-update.c:633:14: note: prefix with the address-of operator to silence this warning
          test_assert(timezone == 0);
                      ^
                      &
  ../../src/lib-test/test-common.h:20:8: note: expanded from macro 'test_assert'
          if (!(code)) test_assert_failed(#code, __FILE__, __LINE__); \
                ^
  test-mail-index-transaction-update.c:648:42: warning: arithmetic on a pointer to the function type 'char *(int, int)' is a GNU extension [-Wgnu-pointer-arith]
                  hdr.day_stamp = tests[i].old_day_stamp + timezone;
                                                         ^ ~~~~~~~~
  test-mail-index-transaction-update.c:648:17: error: incompatible pointer to integer conversion assigning to 'uint32_t' (aka 'unsigned int') from 'char *(*)(int, int)' [-Wint-conversion]
                  hdr.day_stamp = tests[i].old_day_stamp + timezone;
                                ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  test-mail-index-transaction-update.c:650:49: warning: arithmetic on a pointer to the function type 'char *(int, int)' is a GNU extension [-Wgnu-pointer-arith]
                  mail_index_update_day_headers(t, tests[i].now + timezone);
                                                                ^ ~~~~~~~~
  test-mail-index-transaction-update.c:650:36: error: incompatible pointer to integer conversion passing 'char *(*)(int, int)' to parameter of type 'time_t' (aka 'long') [-Wint-conversion]
                  mail_index_update_day_headers(t, tests[i].now + timezone);
                                                   ^~~~~~~~~~~~~~~~~~~~~~~
  ./mail-index-transaction-private.h:127:77: note: passing argument to parameter 'day_stamp' here
  void mail_index_update_day_headers(struct mail_index_transaction *t, time_t day_stamp);
                                                                              ^
  test-mail-index-transaction-update.c:654:63: warning: arithmetic on a pointer to the function type 'char *(int, int)' is a GNU extension [-Wgnu-pointer-arith]
                  test_assert_idx(new_hdr.day_stamp == tests[i].new_day_stamp + timezone, i);
                                                                              ^ ~~~~~~~~
  ../../src/lib-test/test-common.h:26:9: note: expanded from macro 'test_assert_idx'
                  if (!(code)) test_assert_failed_idx(#code, __FILE__, __LINE__, i); \
                        ^~~~
  test-mail-index-transaction-update.c:654:37: warning: comparison between pointer and integer ('uint32_t' (aka 'unsigned int') and 'char *(*)(int, int)') [-Wpointer-integer-compare]
                  test_assert_idx(new_hdr.day_stamp == tests[i].new_day_stamp + timezone, i);
                                  ~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../../src/lib-test/test-common.h:26:9: note: expanded from macro 'test_assert_idx'
                  if (!(code)) test_assert_failed_idx(#code, __FILE__, __LINE__, i); \
                        ^~~~

Fix these warnings and errors by importing:
e983ead775
1a7b1f66fe
867a37fa7b

PR:		268204
Approved by:	maintainer timeout (2 weeks)
MFH:		2022Q4
2022-12-25 18:48:02 +01:00

39 lines
1.5 KiB
C

--- src/lib-index/test-mail-index-transaction-update.c.orig 2022-06-14 06:55:03 UTC
+++ src/lib-index/test-mail-index-transaction-update.c
@@ -6,6 +6,7 @@
#include "test-common.h"
#include "mail-index-private.h"
#include "mail-index-transaction-private.h"
+#include "utc-offset.h"
#include <time.h>
@@ -630,7 +631,9 @@ static void test_mail_index_update_day_first_uid(void)
/* daylight savings times were confusing these tests, so we'll now
just assume that TZ=UTC */
- test_assert(timezone == 0);
+ time_t now = time(NULL);
+ struct tm *local_time = localtime(&now);
+ test_assert(utc_offset(local_time, now) == 0);
hdr.messages_count = 10;
t = mail_index_transaction_new();
@@ -645,13 +648,13 @@ static void test_mail_index_update_day_first_uid(void)
i_zero(&hdr);
for (j = 0; j < N_ELEMENTS(hdr.day_first_uid); j++)
hdr.day_first_uid[j] = 8-j;
- hdr.day_stamp = tests[i].old_day_stamp + timezone;
+ hdr.day_stamp = tests[i].old_day_stamp;
memcpy(t->post_hdr_change, &hdr, sizeof(hdr));
- mail_index_update_day_headers(t, tests[i].now + timezone);
+ mail_index_update_day_headers(t, tests[i].now);
struct mail_index_header new_hdr;
memcpy(&new_hdr, t->post_hdr_change, sizeof(new_hdr));
- test_assert_idx(new_hdr.day_stamp == tests[i].new_day_stamp + timezone, i);
+ test_assert_idx(new_hdr.day_stamp == tests[i].new_day_stamp, i);
test_assert_idx(memcmp(new_hdr.day_first_uid,
tests[i].new_day_first_uid,
sizeof(uint32_t) * 8) == 0, i);