Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package birb for openSUSE:Factory checked in 
at 2026-03-17 19:06:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/birb (Old)
 and      /work/SRC/openSUSE:Factory/.birb.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "birb"

Tue Mar 17 19:06:03 2026 rev:6 rq:1339531 version:0.7.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/birb/birb.changes        2025-12-31 
10:48:44.713719188 +0100
+++ /work/SRC/openSUSE:Factory/.birb.new.8177/birb.changes      2026-03-17 
19:08:01.081421341 +0100
@@ -1,0 +2,10 @@
+Tue Mar 17 09:02:08 UTC 2026 - Richard Rahl <[email protected]>
+
+- Update to version 0.7.1:
+  * Fix a warning with birb_str_wipe
+  * Turn off pedantic warnings
+- Update to verison 0.7.0:
+  * Add birb_time_zone functions
+  * Add a simple birb_str_wipe implementation
+
+-------------------------------------------------------------------

Old:
----
  birb-0.6.1.tar.xz
  birb-0.6.1.tar.xz.asc

New:
----
  birb-0.7.1.tar.xz
  birb-0.7.1.tar.xz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ birb.spec ++++++
--- /var/tmp/diff_new_pack.n4emFo/_old  2026-03-17 19:08:01.553440804 +0100
+++ /var/tmp/diff_new_pack.n4emFo/_new  2026-03-17 19:08:01.553440804 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package birb
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %define         sover 0
 Name:           birb
-Version:        0.6.1
+Version:        0.7.1
 Release:        0
 Summary:        A library of utilities for GLib based apps
 License:        LGPL-2.1-or-later

++++++ birb-0.6.1.tar.xz -> birb-0.7.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/.hg_archival.txt 
new/birb-0.7.1/.hg_archival.txt
--- old/birb-0.6.1/.hg_archival.txt     2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/.hg_archival.txt     2026-03-13 21:47:39.000000000 +0100
@@ -1,4 +1,4 @@
 repo: d9d91dc0265d9ad1b6d5aee4cb57fe71381be5ab
-node: e9e95f6dee4299b0218db3de6408949b827805b8
+node: 1bdd57e54f35416100786587991fe3e36e8ef76e
 branch: default
-tag: v0.6.1
+tag: v0.7.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/ChangeLog new/birb-0.7.1/ChangeLog
--- old/birb-0.6.1/ChangeLog    2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/ChangeLog    2026-03-13 21:47:39.000000000 +0100
@@ -1,3 +1,11 @@
+0.7.1: 2026-03-13
+  * Fix a warning with birb_str_wipe (RR 4431) (Gary Kramlich)
+  * Turn off pedantic warnings (RR 4434) (Gary Kramlich)
+
+0.7.0: 2026-03-11
+  * Add birb_time_zone functions (RR 4381) (Markus Fischer)
+  * Add a simple birb_str_wipe implementation (RR 4411) (Gary Kramlich)
+
 0.6.1: 2025-12-30
   * Fix the license headers for the tests (RR 4289) (Gary Kramlich)
   * Add an override for the check-license-headers script (RR 4292)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbactionmenu.c 
new/birb-0.7.1/birb/birbactionmenu.c
--- old/birb-0.6.1/birb/birbactionmenu.c        2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birbactionmenu.c        2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbactionmenu.h 
new/birb-0.7.1/birb/birbactionmenu.h
--- old/birb-0.6.1/birb/birbactionmenu.h        2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birbactionmenu.h        2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbassert.h 
new/birb-0.7.1/birb/birbassert.h
--- old/birb-0.6.1/birb/birbassert.h    2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbassert.h    2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbcount.c 
new/birb-0.7.1/birb/birbcount.c
--- old/birb-0.6.1/birb/birbcount.c     2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbcount.c     2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbcount.h 
new/birb-0.7.1/birb/birbcount.h
--- old/birb-0.6.1/birb/birbcount.h     2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbcount.h     2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbdatetime.c 
new/birb-0.7.1/birb/birbdatetime.c
--- old/birb-0.6.1/birb/birbdatetime.c  2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbdatetime.c  2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbdatetime.h 
new/birb-0.7.1/birb/birbdatetime.h
--- old/birb-0.6.1/birb/birbdatetime.h  2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbdatetime.h  2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbenv.c 
new/birb-0.7.1/birb/birbenv.c
--- old/birb-0.6.1/birb/birbenv.c       2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbenv.c       2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbenv.h 
new/birb-0.7.1/birb/birbenv.h
--- old/birb-0.6.1/birb/birbenv.h       2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbenv.h       2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbheader.template 
new/birb-0.7.1/birb/birbheader.template
--- old/birb-0.6.1/birb/birbheader.template     2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birbheader.template     2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birblocalizedstring.c 
new/birb-0.7.1/birb/birblocalizedstring.c
--- old/birb-0.6.1/birb/birblocalizedstring.c   2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birblocalizedstring.c   2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birblocalizedstring.h 
new/birb-0.7.1/birb/birblocalizedstring.h
--- old/birb-0.6.1/birb/birblocalizedstring.h   2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birblocalizedstring.h   2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbmenu.c 
new/birb-0.7.1/birb/birbmenu.c
--- old/birb-0.6.1/birb/birbmenu.c      2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbmenu.c      2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbmenu.h 
new/birb-0.7.1/birb/birbmenu.h
--- old/birb-0.6.1/birb/birbmenu.h      2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbmenu.h      2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbpangoformatter.c 
new/birb-0.7.1/birb/birbpangoformatter.c
--- old/birb-0.6.1/birb/birbpangoformatter.c    2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birbpangoformatter.c    2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbpangoformatter.h 
new/birb-0.7.1/birb/birbpangoformatter.h
--- old/birb-0.6.1/birb/birbpangoformatter.h    2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birbpangoformatter.h    2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbqueuedoutputstream.c 
new/birb-0.7.1/birb/birbqueuedoutputstream.c
--- old/birb-0.6.1/birb/birbqueuedoutputstream.c        2025-12-30 
00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbqueuedoutputstream.c        2026-03-13 
21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbqueuedoutputstream.h 
new/birb-0.7.1/birb/birbqueuedoutputstream.h
--- old/birb-0.6.1/birb/birbqueuedoutputstream.h        2025-12-30 
00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbqueuedoutputstream.h        2026-03-13 
21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbresponsestream.c 
new/birb-0.7.1/birb/birbresponsestream.c
--- old/birb-0.6.1/birb/birbresponsestream.c    2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birbresponsestream.c    2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbresponsestream.h 
new/birb-0.7.1/birb/birbresponsestream.h
--- old/birb-0.6.1/birb/birbresponsestream.h    2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birbresponsestream.h    2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbstr.c 
new/birb-0.7.1/birb/birbstr.c
--- old/birb-0.6.1/birb/birbstr.c       2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbstr.c       2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbstr.h 
new/birb-0.7.1/birb/birbstr.h
--- old/birb-0.6.1/birb/birbstr.h       2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbstr.h       2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
@@ -26,6 +26,12 @@
 #ifndef BIRB_STR_H
 #define BIRB_STR_H
 
+#ifdef _WIN32
+# include <windows.h>
+#endif
+
+#include <string.h>
+
 #include <glib.h>
 
 #include "birbversion.h"
@@ -107,6 +113,50 @@
        return (guint)ivalue;
 }
 
+/**
+ * birb_str_wipe:
+ * @str: (transfer full)(nullable): a null terminated string to wipe
+ *
+ * Securely erases and frees the given string.
+ *
+ * This uses the best available method on each platform, but will fallback to
+ * memset if the platform is unknown.
+ *
+ * Since: 0.7
+ */
+BIRB_AVAILABLE_STATIC_INLINE_IN_0_7
+static inline void
+birb_str_wipe(char *str) {
+#ifdef _WIN32
+       if(str == NULL) {
+               return;
+       }
+
+       SecureZeroMemory(str, strlen(str));
+       g_free(str);
+#else
+       /* This implementation is based on egg_secure_clear from gcr.
+        * 
https://gitlab.gnome.org/GNOME/gcr/-/blob/fcfb16d74531376e22b6d9416fd2f7c33e540c37/egg/egg-secure-memory.c#L1350
+        */
+       volatile unsigned char *sp = NULL;
+       size_t length = 0;
+
+       if(str == NULL) {
+               return;
+       }
+
+       sp = (volatile unsigned char *)str;
+       length = strlen(str);
+       while(length > 0) {
+               *sp = 0xAA;
+               sp++;
+               length--;
+       }
+
+       g_free(str);
+#endif
+}
+
 G_END_DECLS
 
 #endif /* BIRB_STR_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbstringobject.c 
new/birb-0.7.1/birb/birbstringobject.c
--- old/birb-0.6.1/birb/birbstringobject.c      2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birbstringobject.c      2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbstringobject.h 
new/birb-0.7.1/birb/birbstringobject.h
--- old/birb-0.6.1/birb/birbstringobject.h      2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/birbstringobject.h      2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbtimezone.c 
new/birb-0.7.1/birb/birbtimezone.c
--- old/birb-0.6.1/birb/birbtimezone.c  1970-01-01 01:00:00.000000000 +0100
+++ new/birb-0.7.1/birb/birbtimezone.c  2026-03-13 21:47:39.000000000 +0100
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) Birb Developers
+ *
+ * Birb is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the AUTHORS file distributed with this source
+ * distribution
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation; either version 2.1 of the License, or (at your
+ * option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "birbtimezone.h"
+
+#include "birbstr.h"
+
+/******************************************************************************
+ * Public API
+ *****************************************************************************/
+
+void
+birb_time_zone_clear(GTimeZone **timezone_ptr) {
+       if(timezone_ptr == NULL || *timezone_ptr == NULL) {
+               return;
+       }
+
+       g_time_zone_unref(*timezone_ptr);
+       *timezone_ptr = NULL;
+}
+
+int
+birb_time_zone_compare(GTimeZone *tz1, GTimeZone *tz2) {
+       gint32 offset1;
+       gint32 offset2;
+
+       if(tz1 == NULL && tz2 == NULL) {
+               return 0;
+       }
+       if(tz1 == NULL) {
+               return -1;
+       }
+       if(tz2 == NULL) {
+               return 1;
+       }
+
+       offset1 = g_time_zone_get_offset(tz1, 0);
+       offset2 = g_time_zone_get_offset(tz2, 0);
+
+       if(offset1 < offset2) {
+               return -1;
+       }
+
+       if(offset1 > offset2) {
+               return 1;
+       }
+
+       return 0;
+}
+
+gboolean
+birb_time_zone_equal(GTimeZone *tz1, GTimeZone *tz2) {
+       const char *tz1_id;
+       const char *tz2_id;
+
+       if(tz1 == NULL && tz2 == NULL) {
+               return TRUE;
+       }
+       if(tz1 == NULL || tz2 == NULL) {
+               return FALSE;
+       }
+
+       tz1_id = g_time_zone_get_identifier(tz1);
+       tz2_id = g_time_zone_get_identifier(tz2);
+
+       return birb_str_equal(tz1_id, tz2_id);
+}
+
+gboolean
+birb_time_zone_set(GTimeZone **timezone_ptr, GTimeZone *new_timezone) {
+       GTimeZone *old = NULL;
+
+       g_return_val_if_fail(timezone_ptr != NULL, FALSE);
+
+       old = *timezone_ptr;
+
+       if(birb_time_zone_equal(old, new_timezone)) {
+               return FALSE;
+       }
+
+       if(old != NULL) {
+               g_time_zone_unref(old);
+       }
+
+       if(new_timezone != NULL) {
+               *timezone_ptr = g_time_zone_ref(new_timezone);
+       } else {
+               *timezone_ptr = NULL;
+       }
+
+       return TRUE;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbtimezone.h 
new/birb-0.7.1/birb/birbtimezone.h
--- old/birb-0.6.1/birb/birbtimezone.h  1970-01-01 01:00:00.000000000 +0100
+++ new/birb-0.7.1/birb/birbtimezone.h  2026-03-13 21:47:39.000000000 +0100
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) Birb Developers
+ *
+ * Birb is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the AUTHORS file distributed with this source
+ * distribution
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation; either version 2.1 of the License, or (at your
+ * option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, see <https://www.gnu.org/licenses/>.
+ */
+
+#if !defined(BIRB_GLOBAL_HEADER_INSIDE) && !defined(BIRB_COMPILATION)
+# error "only <birb.h> may be included directly"
+#endif
+
+#ifndef BIRB_TIME_ZONE_H
+#define BIRB_TIME_ZONE_H
+
+#include <glib.h>
+
+#include "birbversion.h"
+
+G_BEGIN_DECLS
+
+/**
+ * birb_time_zone_clear:
+ * @timezone_ptr: A pointer to a [[email protected]] reference.
+ *
+ * Clears a reference to a [[email protected]].
+ *
+ * If the reference is %NULL, this function does nothing. Otherwise, the
+ * reference count of the [[email protected]] is decreased and the pointer is
+ * set to %NULL.
+ *
+ * Since: 0.7
+ */
+BIRB_AVAILABLE_IN_0_7
+void birb_time_zone_clear(GTimeZone **timezone_ptr);
+
+/**
+ * birb_time_zone_compare:
+ * @tz1: (nullable) (transfer none): The pointer to the first
+ *       [[email protected]] to compare.
+ * @tz2: (nullable) (transfer none): The pointer to the second
+ *       [[email protected]] to compare.
+ *
+ * Compare two [[email protected]] objects.
+ *
+ * Returns: -1, 0 or 1 if @tz1 is *less than*, *equal to* or
+ *          *greater than* @tz2.
+ *
+ * Since: 0.7
+ */
+BIRB_AVAILABLE_IN_0_7
+int birb_time_zone_compare(GTimeZone *tz1, GTimeZone *tz2);
+
+/**
+ * birb_time_zone_equal:
+ * @tz1: (nullable) (transfer none): The pointer to the first
+ *       [[email protected]] to compare.
+ * @tz2: (nullable) (transfer none): The pointer to the second
+ *       [[email protected]] to compare.
+ *
+ * Checks two [[email protected]] objects for equality.
+ *
+ * Returns: %TRUE if @tz1 and @tz2 are equal.
+ *
+ * Since: 0.7
+ */
+BIRB_AVAILABLE_IN_0_7
+gboolean birb_time_zone_equal(GTimeZone *tz1, GTimeZone *tz2);
+
+/**
+ * birb_time_zone_set:
+ * @timezone_ptr: (inout) (not optional) (nullable): A pointer to a
+ *                [[email protected]] reference.
+ * @new_timezone: (nullable) (transfer none): The new time zone to set.
+ *
+ * Updates @timezone_ptr to point to @new_timezone.
+ *
+ * If @timezone_ptr had a previous reference, it will be un-referenced.
+ *
+ * If @new_timezone is not %NULL, a new reference will be added when it is
+ * assigned to @timezone_ptr.
+ *
+ * @timezone_ptr can not be %NULL but may point to a %NULL value.
+ *
+ * Returns: %TRUE if the value of @timezone_ptr changed, otherwise %FALSE.
+ *
+ * Since: 0.7
+ */
+BIRB_AVAILABLE_IN_0_7
+gboolean birb_time_zone_set(GTimeZone **timezone_ptr, GTimeZone *new_timezone);
+
+G_END_DECLS
+
+#endif /* BIRB_TIME_ZONE_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbversion.c 
new/birb-0.7.1/birb/birbversion.c
--- old/birb-0.6.1/birb/birbversion.c   2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbversion.c   2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/birbversion.h 
new/birb-0.7.1/birb/birbversion.h
--- old/birb-0.6.1/birb/birbversion.h   2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/birbversion.h   2026-03-13 21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
@@ -276,6 +276,30 @@
 #define BIRB_AVAILABLE_TYPE_IN_0_6
 #endif
 
+/**
+ * BIRB_VERSION_0_7:
+ *
+ * A macro that evaluates to the 0.7 version of birb, in a format that can be
+ * used by the C pre-processor.
+ *
+ * Since: 0.7
+ */
+#define BIRB_VERSION_0_7 (G_ENCODE_VERSION(0, 7))
+
+#if BIRB_VERSION_MAX_ALLOWED < BIRB_VERSION_0_7
+#define BIRB_AVAILABLE_IN_0_7 BIRB_UNAVAILABLE(0, 7)
+#define BIRB_AVAILABLE_ENUMERATOR_IN_0_7 BIRB_UNAVAILABLE_ENUMERATOR(0, 7)
+#define BIRB_AVAILABLE_MACRO_IN_0_7 BIRB_UNAVAILABLE_MACRO(0, 7)
+#define BIRB_AVAILABLE_STATIC_INLINE_IN_0_7 BIRB_UNAVAILABLE_STATIC_INLINE(0, 
7)
+#define BIRB_AVAILABLE_TYPE_IN_0_7 BIRB_UNAVAILABLE_TYPE(0, 7)
+#else
+#define BIRB_AVAILABLE_IN_0_7 _BIRB_EXTERN
+#define BIRB_AVAILABLE_ENUMERATOR_IN_0_7
+#define BIRB_AVAILABLE_MACRO_IN_0_7
+#define BIRB_AVAILABLE_STATIC_INLINE_IN_0_7
+#define BIRB_AVAILABLE_TYPE_IN_0_7
+#endif
+
 G_BEGIN_DECLS
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/meson.build 
new/birb-0.7.1/birb/meson.build
--- old/birb-0.6.1/birb/meson.build     2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/meson.build     2026-03-13 21:47:39.000000000 +0100
@@ -12,6 +12,7 @@
   'birbresponsestream.c',
   'birbstr.c',
   'birbstringobject.c',
+  'birbtimezone.c',
   'birbversion.c',
 ]
 
@@ -28,6 +29,7 @@
   'birbresponsestream.h',
   'birbstr.h',
   'birbstringobject.h',
+  'birbtimezone.h',
   'birbversion.h',
 ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/meson.build 
new/birb-0.7.1/birb/tests/meson.build
--- old/birb-0.6.1/birb/tests/meson.build       2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/tests/meson.build       2026-03-13 21:47:39.000000000 
+0100
@@ -9,6 +9,7 @@
   'queued_output_stream',
   'str',
   'string_object',
+  'time_zone'
 ]
 
 SERIAL_TESTS = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_action_menu.c 
new/birb-0.7.1/birb/tests/test_action_menu.c
--- old/birb-0.6.1/birb/tests/test_action_menu.c        2025-12-30 
00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/tests/test_action_menu.c        2026-03-13 
21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_count.c 
new/birb-0.7.1/birb/tests/test_count.c
--- old/birb-0.6.1/birb/tests/test_count.c      2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/tests/test_count.c      2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_date_time.c 
new/birb-0.7.1/birb/tests/test_date_time.c
--- old/birb-0.6.1/birb/tests/test_date_time.c  2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/tests/test_date_time.c  2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_env.c 
new/birb-0.7.1/birb/tests/test_env.c
--- old/birb-0.6.1/birb/tests/test_env.c        2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/tests/test_env.c        2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_header.template 
new/birb-0.7.1/birb/tests/test_header.template
--- old/birb-0.6.1/birb/tests/test_header.template      2025-12-30 
00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/tests/test_header.template      2026-03-13 
21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_localized_string.c 
new/birb-0.7.1/birb/tests/test_localized_string.c
--- old/birb-0.6.1/birb/tests/test_localized_string.c   2025-12-30 
00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/tests/test_localized_string.c   2026-03-13 
21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_menu.c 
new/birb-0.7.1/birb/tests/test_menu.c
--- old/birb-0.6.1/birb/tests/test_menu.c       2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/tests/test_menu.c       2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_pango_formatter.c 
new/birb-0.7.1/birb/tests/test_pango_formatter.c
--- old/birb-0.6.1/birb/tests/test_pango_formatter.c    2025-12-30 
00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/tests/test_pango_formatter.c    2026-03-13 
21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_queued_output_stream.c 
new/birb-0.7.1/birb/tests/test_queued_output_stream.c
--- old/birb-0.6.1/birb/tests/test_queued_output_stream.c       2025-12-30 
00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/tests/test_queued_output_stream.c       2026-03-13 
21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_response_stream.c 
new/birb-0.7.1/birb/tests/test_response_stream.c
--- old/birb-0.6.1/birb/tests/test_response_stream.c    2025-12-30 
00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/tests/test_response_stream.c    2026-03-13 
21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_str.c 
new/birb-0.7.1/birb/tests/test_str.c
--- old/birb-0.6.1/birb/tests/test_str.c        2025-12-30 00:40:06.000000000 
+0100
+++ new/birb-0.7.1/birb/tests/test_str.c        2026-03-13 21:47:39.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
@@ -90,6 +90,24 @@
 }
 
 /******************************************************************************
+ * Wipe tests
+ *****************************************************************************/
+static void
+test_birb_str_wipe_null(void) {
+       birb_str_wipe(NULL);
+}
+
+static void
+test_birb_str_wipe_empty(void) {
+       birb_str_wipe(g_strdup(""));
+}
+
+static void
+test_birb_str_wipe_normal(void) {
+       birb_str_wipe(g_strdup("hunter2"));
+}
+
+/******************************************************************************
  * Main
  *****************************************************************************/
 int
@@ -108,5 +126,9 @@
        g_test_add_func("/birb/str/matches/unicode",
                        test_birb_str_matches_unicode);
 
+       g_test_add_func("/birb/str/wipe/null", test_birb_str_wipe_null);
+       g_test_add_func("/birb/str/wipe/empty", test_birb_str_wipe_empty);
+       g_test_add_func("/birb/str/wipe/normal", test_birb_str_wipe_normal);
+
        return g_test_run();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_string_object.c 
new/birb-0.7.1/birb/tests/test_string_object.c
--- old/birb-0.6.1/birb/tests/test_string_object.c      2025-12-30 
00:40:06.000000000 +0100
+++ new/birb-0.7.1/birb/tests/test_string_object.c      2026-03-13 
21:47:39.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023-2025 Birb Developers
+ * Copyright (C) Birb Developers
  *
  * Birb is the legal property of its developers, whose names are too numerous
  * to list here. Please refer to the AUTHORS file distributed with this source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/birb/tests/test_time_zone.c 
new/birb-0.7.1/birb/tests/test_time_zone.c
--- old/birb-0.6.1/birb/tests/test_time_zone.c  1970-01-01 01:00:00.000000000 
+0100
+++ new/birb-0.7.1/birb/tests/test_time_zone.c  2026-03-13 21:47:39.000000000 
+0100
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) Birb Developers
+ *
+ * Birb is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the AUTHORS file distributed with this source
+ * distribution
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation; either version 2.1 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <birb.h>
+
+/******************************************************************************
+ * clear tests
+ *****************************************************************************/
+static void
+test_birb_time_zone_clear_null(void) {
+       GTimeZone *tz = NULL;
+
+       birb_time_zone_clear(NULL);
+       birb_time_zone_clear(&tz);
+
+       g_assert_null(tz);
+}
+
+static void
+test_birb_time_zone_clear_nonnull(void) {
+       GTimeZone *tz = g_time_zone_new_utc();
+
+       birb_time_zone_clear(&tz);
+
+       g_assert_null(tz);
+}
+
+/******************************************************************************
+ * compare tests
+ *****************************************************************************/
+static void
+test_birb_time_zone_compare_null(void) {
+       GTimeZone *tz = g_time_zone_new_utc();
+       int result;
+
+       result = birb_time_zone_compare(tz, NULL);
+       g_assert_cmpint(result, ==, 1);
+
+       result = birb_time_zone_compare(NULL, tz);
+       g_assert_cmpint(result, ==, -1);
+
+       result = birb_time_zone_compare(NULL, NULL);
+       g_assert_cmpint(result, ==, 0);
+
+       g_time_zone_unref(tz);
+}
+
+static void
+test_birb_time_zone_compare_nonnull(void) {
+       GTimeZone *cet = g_time_zone_new_identifier("+01:00");
+       GTimeZone *utc1 = g_time_zone_new_identifier("00:00");
+       GTimeZone *utc2 = g_time_zone_new_utc();
+       int result;
+
+       result = birb_time_zone_compare(utc1, cet);
+       g_assert_cmpint(result, ==, -1);
+
+       result = birb_time_zone_compare(cet, utc1);
+       g_assert_cmpint(result, ==, 1);
+
+       result = birb_time_zone_compare(utc1, utc2);
+       g_assert_cmpint(result, ==, 0);
+
+       g_time_zone_unref(utc1);
+       g_time_zone_unref(utc2);
+       g_time_zone_unref(cet);
+}
+
+/******************************************************************************
+ * equal tests
+ *****************************************************************************/
+static void
+test_birb_time_zone_equal_null(void) {
+       GTimeZone *tz = g_time_zone_new_utc();
+
+       g_assert_false(birb_time_zone_equal(tz, NULL));
+       g_assert_false(birb_time_zone_equal(NULL, tz));
+       g_assert_true(birb_time_zone_equal(NULL, NULL));
+
+       g_time_zone_unref(tz);
+}
+
+static void
+test_birb_time_zone_equal_nonnull(void) {
+       GTimeZone *utc1 = g_time_zone_new_utc();
+       GTimeZone *utc2 = g_time_zone_new_utc();
+       GTimeZone *cet = g_time_zone_new_identifier("+01:00");
+
+       g_assert_true(birb_time_zone_equal(utc1, utc2));
+       g_assert_false(birb_time_zone_equal(utc1, cet));
+
+       g_time_zone_unref(utc1);
+       g_time_zone_unref(utc2);
+       g_time_zone_unref(cet);
+}
+
+/******************************************************************************
+ * set tests
+ *****************************************************************************/
+static void
+test_birb_time_zone_set_null_null(void) {
+       GTimeZone *tz = NULL;
+       g_assert_false(birb_time_zone_set(&tz, NULL));
+}
+
+static void
+test_birb_time_zone_set_null_nonnull(void) {
+       GTimeZone *tz = NULL;
+       GTimeZone *tz1 = NULL;
+       gboolean ret = FALSE;
+
+       tz1 = g_time_zone_new_utc();
+       ret = birb_time_zone_set(&tz, tz1);
+       g_assert_true(ret);
+
+       g_assert_true(tz == tz1);
+
+       g_clear_pointer(&tz, g_time_zone_unref);
+       g_clear_pointer(&tz1, g_time_zone_unref);
+}
+
+static void
+test_birb_time_zone_set_nonnull_null(void) {
+       GTimeZone *tz = NULL;
+       gboolean ret = FALSE;
+
+       tz = g_time_zone_new_utc();
+       ret = birb_time_zone_set(&tz, NULL);
+       g_assert_true(ret);
+
+       g_assert_null(tz);
+}
+
+static void
+test_birb_time_zone_set_nonnull_nonnull(void) {
+       GTimeZone *tz = NULL;
+       GTimeZone *tz1 = NULL;
+       gboolean ret = FALSE;
+
+       tz = g_time_zone_new_identifier("+02:00");
+       tz1 = g_time_zone_new_identifier("-08:00");
+
+       ret = birb_time_zone_set(&tz, tz1);
+       g_assert_true(ret);
+
+       g_assert_true(tz == tz1);
+
+       g_clear_pointer(&tz, g_time_zone_unref);
+       g_clear_pointer(&tz1, g_time_zone_unref);
+}
+
+
+/******************************************************************************
+ * Main
+ *****************************************************************************/
+int
+main(int argc, char *argv[]) {
+       g_test_init(&argc, &argv, NULL);
+
+       g_test_add_func("/time-zone/clear/null", 
test_birb_time_zone_clear_null);
+       g_test_add_func("/time-zone/clear/nonnull", 
test_birb_time_zone_clear_nonnull);
+
+       g_test_add_func("/time-zone/compare/null", 
test_birb_time_zone_compare_null);
+       g_test_add_func("/time-zone/compare/nonnull",
+                       test_birb_time_zone_compare_nonnull);
+
+       g_test_add_func("/time-zone/equal/null", 
test_birb_time_zone_equal_null);
+       g_test_add_func("/time-zone/equal/nonnull", 
test_birb_time_zone_equal_nonnull);
+
+       g_test_add_func("/time-zone/set/null-null",
+                       test_birb_time_zone_set_null_null);
+       g_test_add_func("/time-zone/set/null-nonnull",
+                       test_birb_time_zone_set_null_nonnull);
+       g_test_add_func("/time-zone/set/nonnull-null",
+                       test_birb_time_zone_set_nonnull_null);
+       g_test_add_func("/time-zone/set/nonnull-nonnull",
+                       test_birb_time_zone_set_nonnull_nonnull);
+
+       return g_test_run();
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/birb-0.6.1/meson.build new/birb-0.7.1/meson.build
--- old/birb-0.6.1/meson.build  2025-12-30 00:40:06.000000000 +0100
+++ new/birb-0.7.1/meson.build  2026-03-13 21:47:39.000000000 +0100
@@ -1,7 +1,7 @@
 project('birb', 'c',
-  version : '0.6.1',
+  version : '0.7.1',
   meson_version : '>=1.1.0',
-  default_options : ['c_std=c17', 'warning_level=2'],
+  default_options : ['c_std=c17', 'warning_level=3'],
   license: 'LGPL-2.1-or-later',
   license_files: ['LICENSE'])
 
@@ -34,6 +34,17 @@
 version_config.set('BIRB_VERSION', meson.project_version())
 
 ###############################################################################
+# Compiler flags
+###############################################################################
+compiler = meson.get_compiler('c')
+
+if compiler.get_id() == 'gcc'
+  if compiler.has_argument('-Wno-pedantic')
+    add_project_arguments('-Wno-pedantic', language : 'c')
+  endif
+endif
+
+###############################################################################
 # Documentation
 ###############################################################################
 if get_option('doc') and not get_option('introspection')

Reply via email to