openSUSE Commits
Threads by month
- ----- 2025 -----
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
March 2025
- 1 participants
- 1291 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package atop for openSUSE:Factory checked in at 2025-03-31 11:44:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/atop (Old)
and /work/SRC/openSUSE:Factory/.atop.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "atop"
Mon Mar 31 11:44:25 2025 rev:15 rq:1265695 version:2.11.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/atop/atop.changes 2024-07-29 21:54:01.620702357 +0200
+++ /work/SRC/openSUSE:Factory/.atop.new.2696/atop.changes 2025-03-31 11:45:28.401868823 +0200
@@ -1,0 +2,11 @@
+Mon Mar 31 07:46:12 UTC 2025 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 2.11.1:
+ * Atop will not connect to the TCP port of 'atopgpud' daemon any more
+ by default. The flag -k can be used explicitly when 'atopgpud' is
+ active. Also the code to parse the received strings is improved to
+ avoid future issues with heap corruption.
+ * The flag -K has been implemented to connect to netatop/netatop-bpf.
+ * Fix CVE-2025-31160
+
+-------------------------------------------------------------------
Old:
----
atop-2.11.0.tar.gz
New:
----
atop-2.11.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ atop.spec ++++++
--- /var/tmp/diff_new_pack.HJ3Nln/_old 2025-03-31 11:45:29.053895879 +0200
+++ /var/tmp/diff_new_pack.HJ3Nln/_new 2025-03-31 11:45:29.053895879 +0200
@@ -2,7 +2,7 @@
#
# spec file for package atop
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2012 Pascal Bleser <pascal.bleser(a)opensuse.org>
#
# All modifications and additions to the file contributed by third parties
@@ -19,7 +19,7 @@
Name: atop
-Version: 2.11.0
+Version: 2.11.1
Release: 0
Summary: Monitor for System Resources and Process Activity
License: GPL-2.0-only
++++++ atop-2.11.0.tar.gz -> atop-2.11.1.tar.gz ++++++
++++ 9363 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package kid3 for openSUSE:Factory checked in at 2025-03-31 11:44:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kid3 (Old)
and /work/SRC/openSUSE:Factory/.kid3.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kid3"
Mon Mar 31 11:44:23 2025 rev:44 rq:1265696 version:3.9.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/kid3/kid3.changes 2025-01-25 19:13:29.747156688 +0100
+++ /work/SRC/openSUSE:Factory/.kid3.new.2696/kid3.changes 2025-03-31 11:45:27.581834795 +0200
@@ -1,0 +2,5 @@
+Mon Mar 31 07:39:15 UTC 2025 - Dominique Leuenberger <dimstar(a)opensuse.org>
+
+- Use pkgconfig(libavcodec) to allow building with ffmpeg-*-mini.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kid3.spec ++++++
--- /var/tmp/diff_new_pack.ym0BeF/_old 2025-03-31 11:45:28.249862515 +0200
+++ /var/tmp/diff_new_pack.ym0BeF/_new 2025-03-31 11:45:28.249862515 +0200
@@ -34,7 +34,6 @@
Source0: https://download.kde.org/stable/%{name}/%{version}/%{name}-%{version}.tar.xz
Source1: https://download.kde.org/stable/%{name}/%{version}/%{name}-%{version}.tar.x…
BuildRequires: extra-cmake-modules
-BuildRequires: ffmpeg-7-libavcodec-devel
BuildRequires: hicolor-icon-theme
BuildRequires: id3lib-devel
BuildRequires: kf%{qt_version}-filesystem
@@ -59,6 +58,7 @@
BuildRequires: config(docbook-xsl-stylesheets)
BuildRequires: pkgconfig(flac)
BuildRequires: pkgconfig(gstreamer-1.0)
+BuildRequires: pkgconfig(libavcodec) >= 61
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
BuildRequires: pkgconfig(libchromaprint)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package zim for openSUSE:Factory checked in at 2025-03-31 11:44:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/zim (Old)
and /work/SRC/openSUSE:Factory/.zim.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "zim"
Mon Mar 31 11:44:16 2025 rev:19 rq:1265664 version:0.76.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/zim/zim.changes 2025-02-04 18:14:40.820853426 +0100
+++ /work/SRC/openSUSE:Factory/.zim.new.2696/zim.changes 2025-03-31 11:45:24.209694866 +0200
@@ -1,0 +2,15 @@
+Sat Mar 29 22:26:10 UTC 2025 - Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz(a)fastmail.net>
+
+- Update to 0.76.3:
+ * Add seperator to template for new files
+ * Fix spellcheck state at startup
+ * Fix cursor position after undo indent
+ * Fix test suite release 0.76.2
+- Update to 0.76.2:
+ * Let new page and quicknote templates place cursor
+ * Let find match within sourceview blocks
+ * Add property with template for filename of pasted images
+ * In InsertLinkDialog translate file to page link
+ * Fix issue with GSPell support
+
+-------------------------------------------------------------------
Old:
----
zim-0.76.1.tar.gz
New:
----
zim-0.76.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ zim.spec ++++++
--- /var/tmp/diff_new_pack.TCfB1J/_old 2025-03-31 11:45:24.681714453 +0200
+++ /var/tmp/diff_new_pack.TCfB1J/_new 2025-03-31 11:45:24.685714619 +0200
@@ -21,7 +21,7 @@
%define hierarchical_name org.zim_wiki.Zim
Name: zim
-Version: 0.76.1
+Version: 0.76.3
Release: 0
Summary: A Desktop Wiki
License: GPL-2.0-or-later
++++++ zim-0.76.1.tar.gz -> zim-0.76.3.tar.gz ++++++
++++ 24947 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ibis for openSUSE:Factory checked in at 2025-03-31 11:44:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ibis (Old)
and /work/SRC/openSUSE:Factory/.ibis.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ibis"
Mon Mar 31 11:44:03 2025 rev:4 rq:1265608 version:0.13.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ibis/ibis.changes 2025-03-17 22:21:44.904893392 +0100
+++ /work/SRC/openSUSE:Factory/.ibis.new.2696/ibis.changes 2025-03-31 11:45:07.268991900 +0200
@@ -1,0 +2,7 @@
+Sun Mar 30 20:39:11 UTC 2025 - Richard Rahl <rrahl0(a)opensuse.org>
+
+- update to 0.13.0:
+ * Fix the parameter order of an error in Ibis.Client.parse_mode_string
+ * Implement Ibis.formatting_parse
+
+-------------------------------------------------------------------
Old:
----
ibis-0.12.0.tar.xz
ibis-0.12.0.tar.xz.asc
New:
----
ibis-0.13.0.tar.xz
ibis-0.13.0.tar.xz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ibis.spec ++++++
--- /var/tmp/diff_new_pack.IC7LdW/_old 2025-03-31 11:45:09.097067757 +0200
+++ /var/tmp/diff_new_pack.IC7LdW/_new 2025-03-31 11:45:09.117068587 +0200
@@ -18,7 +18,7 @@
%define sover 0
Name: ibis
-Version: 0.12.0
+Version: 0.13.0
Release: 0
Summary: Gobject based library
License: GPL-2.0-or-later
@@ -35,6 +35,7 @@
BuildRequires: pkgconfig(gobject-2.0) >= 2.76
BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: pkgconfig(hasl) >= 0.4.0
+BuildRequires: pkgconfig(pango) >= 1.54.0
%description
This parser originated out of an early version of purple-spasm. The library was
++++++ ibis-0.12.0.tar.xz -> ibis-0.13.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/.hg_archival.txt new/ibis-0.13.0/.hg_archival.txt
--- old/ibis-0.12.0/.hg_archival.txt 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/.hg_archival.txt 2025-03-30 21:42:39.000000000 +0200
@@ -1,4 +1,4 @@
repo: ee571f6e8e7556786ca8029199b9a669e850c8cb
-node: ecd0828aeada054828934156fc0ecca0826bc8ff
+node: 9be6cce745b3a29f47749ca8511cfe64c0c2919e
branch: default
-tag: v0.12.0
+tag: v0.13.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/ChangeLog new/ibis-0.13.0/ChangeLog
--- old/ibis-0.12.0/ChangeLog 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/ChangeLog 2025-03-30 21:42:39.000000000 +0200
@@ -1,3 +1,8 @@
+0.13.0: 2025-03-30
+ * Fix the parameter order of an error in Ibis.Client.parse_mode_string
+ (RR 3906) (Gary Kramlich)
+ * Implement Ibis.formatting_parse (IBIR-53) (RR 3940) (Gary Kramlich)
+
0.12.0: 2025-03-14
* Add Ibis.ModeChange to represent mode changes (IBIS-44) (RR 3874) (Gary
Kramlich)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/ibis/ibisclient.c new/ibis-0.13.0/ibis/ibisclient.c
--- old/ibis-0.12.0/ibis/ibisclient.c 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/ibis/ibisclient.c 2025-03-30 21:42:39.000000000 +0200
@@ -1563,8 +1563,8 @@
IBIS_CLIENT_ERROR,
IBIS_CLIENT_ERROR_PARSE_MODE_STRING_TOO_MANY_PARAMETERS,
"got %u parameters, expected %u",
- param_index,
- n_params);
+ n_params,
+ param_index);
g_array_remove_range(mode_changes, 0, mode_changes->len);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/ibis/ibisformatting.c new/ibis-0.13.0/ibis/ibisformatting.c
--- old/ibis-0.12.0/ibis/ibisformatting.c 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/ibis/ibisformatting.c 2025-03-30 21:42:39.000000000 +0200
@@ -32,11 +32,206 @@
#define IBIS_FORMAT_STRIKETHROUGH (0x1e)
#define IBIS_FORMAT_UNDERLINE (0x1f)
+#define IBIS_FORMATTING_DEFAULT_COLORS (99)
+
+/* These colors are copied from https://modern.ircdocs.horse/formatting#colors
+ * and https://modern.ircdocs.horse/formatting#colors-16-98.
+ */
+static PangoColor ibis_formatting_palette[] = {
+ { 0xffff, 0xffff, 0xffff }, /* 00 white */
+ { 0x0000, 0x0000, 0x0000 }, /* 01 black */
+ { 0x0000, 0x0000, 0x7f7f }, /* 02 blue */
+ { 0x0000, 0x9393, 0x0000 }, /* 03 green */
+ { 0xffff, 0x0000, 0x0000 }, /* 04 red */
+ { 0x7f7f, 0x0000, 0x0000 }, /* 05 brown? */
+ { 0x9c9c, 0x0000, 0x9c9c }, /* 06 magenta */
+ { 0xfcfc, 0x7f7f, 0x0000 }, /* 07 orange */
+ { 0xffff, 0xffff, 0x0000 }, /* 08 yellow */
+ { 0x0000, 0xfcfc, 0x0000 }, /* 09 light green */
+ { 0x0000, 0x9393, 0x9393 }, /* 10 cyan */
+ { 0x0000, 0xffff, 0xffff }, /* 11 light cyan */
+ { 0x0000, 0x0000, 0xfcfc }, /* 12 light blue */
+ { 0xffff, 0x0000, 0xffff }, /* 13 pink */
+ { 0x7f7f, 0x7f7f, 0x7f7f }, /* 14 grey */
+ { 0xd2d2, 0xd2d2, 0xd2d2 }, /* 15 light grey */
+ { 0x4747, 0x0000, 0x0000 }, /* 16 */
+ { 0x4747, 0x2121, 0x0000 }, /* 17 */
+ { 0x4747, 0x4747, 0x0000 }, /* 18 */
+ { 0x3232, 0x4747, 0x0000 }, /* 19 */
+ { 0x0000, 0x4747, 0x0000 }, /* 20 */
+ { 0x0000, 0x4747, 0x2c2c }, /* 21 */
+ { 0x0000, 0x4747, 0x4747 }, /* 22 */
+ { 0x0000, 0x2727, 0x4747 }, /* 23 */
+ { 0x0000, 0x0000, 0x4747 }, /* 24 */
+ { 0x2e2e, 0x0000, 0x4747 }, /* 25 */
+ { 0x4747, 0x0000, 0x4747 }, /* 26 */
+ { 0x4747, 0x0000, 0x2a2a }, /* 27 */
+ { 0x7474, 0x0000, 0x0000 }, /* 28 */
+ { 0x7474, 0x3a3a, 0x0000 }, /* 29 */
+ { 0x7474, 0x7474, 0x0000 }, /* 30 */
+ { 0x5151, 0x7474, 0x0000 }, /* 31 */
+ { 0x0000, 0x7474, 0x0000 }, /* 32 */
+ { 0x0000, 0x7474, 0x4949 }, /* 33 */
+ { 0x0000, 0x7474, 0x7474 }, /* 34 */
+ { 0x0000, 0x4040, 0x7474 }, /* 35 */
+ { 0x0000, 0x0000, 0x7474 }, /* 36 */
+ { 0x4b4b, 0x0000, 0x7474 }, /* 37 */
+ { 0x7474, 0x0000, 0x7474 }, /* 38 */
+ { 0x7474, 0x0000, 0x4545 }, /* 39 */
+ { 0xb5b5, 0x0000, 0x0000 }, /* 40 */
+ { 0xb5b5, 0x6363, 0x0000 }, /* 41 */
+ { 0xb5b5, 0xb5b5, 0x0000 }, /* 42 */
+ { 0x7d7d, 0xb5b5, 0x0000 }, /* 43 */
+ { 0x0000, 0xb5b5, 0x0000 }, /* 44 */
+ { 0x0000, 0xb5b5, 0x7171 }, /* 45 */
+ { 0x0000, 0xb5b5, 0xb5b5 }, /* 46 */
+ { 0x0000, 0x6363, 0xb5b5 }, /* 47 */
+ { 0x0000, 0x0000, 0xb5b5 }, /* 48 */
+ { 0x7575, 0x0000, 0xb5b5 }, /* 49 */
+ { 0xb5b5, 0x0000, 0xb5b5 }, /* 50 */
+ { 0xb5b5, 0x0000, 0x6b6b }, /* 51 */
+ { 0xffff, 0x0000, 0x0000 }, /* 52 */
+ { 0xffff, 0x8c8c, 0x0000 }, /* 53 */
+ { 0xffff, 0xffff, 0x0000 }, /* 54 */
+ { 0xb2b2, 0xffff, 0x0000 }, /* 55 */
+ { 0x0000, 0xffff, 0x0000 }, /* 56 */
+ { 0x0000, 0xffff, 0xa0a0 }, /* 57 */
+ { 0x0000, 0xffff, 0xffff }, /* 58 */
+ { 0x0000, 0x8c8c, 0xffff }, /* 59 */
+ { 0x0000, 0x0000, 0xffff }, /* 60 */
+ { 0xa5a5, 0x0000, 0xffff }, /* 61 */
+ { 0xffff, 0x0000, 0xffff }, /* 62 */
+ { 0xffff, 0x0000, 0x9898 }, /* 63 */
+ { 0xffff, 0x5959, 0x5959 }, /* 64 */
+ { 0xffff, 0xb4b4, 0x5959 }, /* 65 */
+ { 0xffff, 0xffff, 0x7171 }, /* 66 */
+ { 0xcfcf, 0xffff, 0x6060 }, /* 67 */
+ { 0x6f6f, 0xffff, 0x6f6f }, /* 68 */
+ { 0x6565, 0xffff, 0xc9c9 }, /* 69 */
+ { 0x6d6d, 0xffff, 0xffff }, /* 70 */
+ { 0x5959, 0xb4b4, 0xffff }, /* 71 */
+ { 0x5959, 0x5959, 0xffff }, /* 72 */
+ { 0xc4c4, 0x5959, 0xffff }, /* 73 */
+ { 0xffff, 0x6666, 0xffff }, /* 74 */
+ { 0xffff, 0x5959, 0xbcbc }, /* 75 */
+ { 0xffff, 0x9c9c, 0x9c9c }, /* 76 */
+ { 0xffff, 0xd3d3, 0x9c9c }, /* 77 */
+ { 0xffff, 0xffff, 0x9c9c }, /* 78 */
+ { 0xe2e2, 0xffff, 0x9c9c }, /* 79 */
+ { 0x9c9c, 0xffff, 0x9c9c }, /* 80 */
+ { 0x9c9c, 0xffff, 0xdbdb }, /* 81 */
+ { 0x9c9c, 0xffff, 0xffff }, /* 82 */
+ { 0x9c9c, 0xd3d3, 0xffff }, /* 83 */
+ { 0x9c9c, 0x9c9c, 0xffff }, /* 84 */
+ { 0xdcdc, 0x9c9c, 0xffff }, /* 85 */
+ { 0xffff, 0x9c9c, 0xffff }, /* 86 */
+ { 0xffff, 0x9494, 0xd3d3 }, /* 87 */
+ { 0x0000, 0x0000, 0x0000 }, /* 88 */
+ { 0x1313, 0x1313, 0x1313 }, /* 89 */
+ { 0x2828, 0x2828, 0x2828 }, /* 90 */
+ { 0x3636, 0x3636, 0x3636 }, /* 91 */
+ { 0x4d4d, 0x4d4d, 0x4d4d }, /* 92 */
+ { 0x6565, 0x6565, 0x6565 }, /* 93 */
+ { 0x8181, 0x8181, 0x8181 }, /* 94 */
+ { 0x9f9f, 0x9f9f, 0x9f9f }, /* 95 */
+ { 0xbcbc, 0xbcbc, 0xbcbc }, /* 96 */
+ { 0xe2e2, 0xe2e2, 0xe2e2 }, /* 97 */
+ { 0xffff, 0xffff, 0xffff }, /* 98 */
+};
+
/******************************************************************************
* Helpers
*****************************************************************************/
static inline gboolean
-ibis_formatting_is_hex_color(const char *text) {
+ibis_formatting_get_color(PangoColor *color, guint index) {
+ if(index > G_N_ELEMENTS(ibis_formatting_palette)) {
+ return FALSE;
+ }
+
+ *color = ibis_formatting_palette[index];
+
+ return TRUE;
+}
+
+static inline gboolean
+ibis_formatting_is_color(const char *text, guint *bytes, PangoColor *color) {
+ char buffer[3];
+ guint length = 0;
+
+ if(text == NULL || text[0] == '\0') {
+ return FALSE;
+ }
+
+ /* If the first byte is not a digit we can exit early. */
+ if(!g_ascii_isdigit(text[0])) {
+ return FALSE;
+ }
+
+ /* Check if the second byte is a digit as well. */
+ if(g_ascii_isdigit(text[1])) {
+ length = 2;
+ } else {
+ length = 1;
+ }
+
+ /* If the user gave us a place to put the value, do it. */
+ if(color != NULL) {
+ int index = 0;
+
+ memset(buffer, 0, sizeof(buffer));
+ strncpy(buffer, text, length);
+ index = atoi(buffer);
+ *color = ibis_formatting_palette[index];
+ }
+
+ /* Set bytes to the length of the color. */
+ if(bytes != NULL) {
+ *bytes = length;
+ }
+
+ return TRUE;
+}
+
+static inline void
+ibis_formatting_parse_color(const char *text, guint *offset,
+ gboolean *fg_set, PangoColor *fg,
+ gboolean *bg_set, PangoColor *bg)
+{
+ guint bytes = 0;
+
+ /* If we're at the end of the string then we are ending a previous color
+ * format.
+ */
+ if(text == NULL || text[0] == '\0') {
+ return;
+ }
+
+ if(ibis_formatting_is_color(text, &bytes, fg)) {
+ if(fg_set != NULL) {
+ *fg_set = TRUE;
+ }
+
+ if(text[bytes] == ',') {
+ guint bg_bytes = 0;
+
+ if(ibis_formatting_is_color(&text[bytes + 1], &bg_bytes, bg)) {
+ if(bg_set != NULL) {
+ *bg_set = TRUE;
+ }
+
+ /* Increment bytes for the length of bg_bytes and the comma. */
+ bytes += bg_bytes + 1;
+ }
+ }
+ }
+
+ if(offset != NULL) {
+ *offset = bytes;
+ }
+}
+
+static inline gboolean
+ibis_formatting_is_hex_color(const char *text, PangoColor *color) {
for(int i = 0; i < 6; i++) {
if(text[i] == '\0') {
return FALSE;
@@ -47,15 +242,97 @@
}
}
+ if(color != NULL) {
+ char buffer[8];
+
+ memset(buffer, 0, sizeof(buffer));
+ buffer[0] = '#';
+ strncpy(buffer + 1, text, 6);
+ if(!pango_color_parse(color, buffer)) {
+ return FALSE;
+ }
+ }
+
return TRUE;
}
+static inline gboolean
+ibis_formatting_parse_hex_color(const char *text, guint *offset,
+ gboolean *fg_set, PangoColor *fg,
+ gboolean *bg_set, PangoColor *bg)
+{
+ guint bytes = 0;
+
+ if(text == NULL || text[0] == '\0') {
+ return FALSE;
+ }
+
+ if(ibis_formatting_is_hex_color(text, fg)) {
+ if(fg_set != NULL) {
+ *fg_set = TRUE;
+ }
+
+ bytes = 6;
+
+ if(text[bytes] == ',' &&
+ ibis_formatting_is_hex_color(&text[bytes + 1], bg))
+ {
+ if(bg_set != NULL) {
+ *bg_set = TRUE;
+ }
+
+ bytes += 7;
+ }
+ }
+
+ if(offset != NULL) {
+ *offset = bytes;
+ }
+
+ return TRUE;
+}
+
+/* The following macros have been created to make the format parser easier to
+ * read. There's not much to them, but they help avoid a lot of duplicated
+ * code in the parsing function.
+ */
+#define IBIS_FORMATTING_START_ATTRIBUTE(tag, ctor) G_STMT_START { \
+ tag = ctor; \
+ tag->start_index = position; \
+ pango_attr_list_insert(real_attrs, tag); \
+} G_STMT_END
+
+#define IBIS_FORMATTING_END_ATTRIBUTE(tag) G_STMT_START { \
+ if(tag != NULL) { \
+ tag->end_index = position; \
+ tag = NULL; \
+ } \
+} G_STMT_END
+
+#define IBIS_FORMATTING_TOGGLE_ATTRIBUTE(tag, ctor) G_STMT_START { \
+ if(tag == NULL) { \
+ IBIS_FORMATTING_START_ATTRIBUTE(tag, ctor); \
+ } else { \
+ IBIS_FORMATTING_END_ATTRIBUTE(tag); \
+ } \
+} G_STMT_END
+
/******************************************************************************
* Public API
*****************************************************************************/
char *
-ibis_formatting_strip(const char *text) {
+ibis_formatting_parse(const char *text, PangoAttrList **attrs) {
GString *str = NULL;
+ PangoAttrList *real_attrs = NULL;
+ PangoAttribute *background = NULL;
+ PangoAttribute *bold = NULL;
+ PangoAttribute *foreground = NULL;
+ PangoAttribute *italic = NULL;
+ PangoAttribute *monospace = NULL;
+ PangoAttribute *strikethrough = NULL;
+ PangoAttribute *underline = NULL;
+ guint offset = 0;
+ guint position = 0;
/* We don't use ibis_str_is_empty here because if we're passed an empty
* string, we should return a newly allocated empty string.
@@ -65,54 +342,142 @@
}
str = g_string_new("");
+ real_attrs = pango_attr_list_new();
- for(int i = 0; text[i] != '\0'; i++) {
+ for(guint i = 0; text[i] != '\0'; i++) {
switch(text[i]) {
case IBIS_FORMAT_BOLD:
+ IBIS_FORMATTING_TOGGLE_ATTRIBUTE(bold, pango_attr_weight_new(PANGO_WEIGHT_BOLD));
+ break;
case IBIS_FORMAT_ITALIC:
+ IBIS_FORMATTING_TOGGLE_ATTRIBUTE(italic, pango_attr_style_new(PANGO_STYLE_ITALIC));
+ break;
case IBIS_FORMAT_MONOSPACE:
+ IBIS_FORMATTING_TOGGLE_ATTRIBUTE(monospace, pango_attr_family_new("monospace"));
+ break;
case IBIS_FORMAT_RESET:
+ IBIS_FORMATTING_END_ATTRIBUTE(background);
+ IBIS_FORMATTING_END_ATTRIBUTE(bold);
+ IBIS_FORMATTING_END_ATTRIBUTE(foreground);
+ IBIS_FORMATTING_END_ATTRIBUTE(italic);
+ IBIS_FORMATTING_END_ATTRIBUTE(monospace);
+ IBIS_FORMATTING_END_ATTRIBUTE(strikethrough);
+ IBIS_FORMATTING_END_ATTRIBUTE(underline);
+ break;
case IBIS_FORMAT_REVERSE:
+ break;
case IBIS_FORMAT_STRIKETHROUGH:
+ IBIS_FORMATTING_TOGGLE_ATTRIBUTE(strikethrough, pango_attr_strikethrough_new(TRUE));
+ break;
case IBIS_FORMAT_UNDERLINE:
- continue;
+ IBIS_FORMATTING_TOGGLE_ATTRIBUTE(underline,
+ pango_attr_underline_new(PANGO_UNDERLINE_SINGLE));
break;
- case IBIS_FORMAT_COLOR:
- if(g_ascii_isdigit(text[i + 1])) {
- i += 1;
-
- if(g_ascii_isdigit(text[i + 1])) {
- i += 1;
- }
+ case IBIS_FORMAT_COLOR: {
+ PangoColor bg;
+ PangoColor fg;
+ gboolean bg_set = FALSE;
+ gboolean fg_set = FALSE;
+
+ ibis_formatting_parse_color(&text[i + 1], &offset,
+ &fg_set, &fg,
+ &bg_set, &bg);
+
+ if(fg_set) {
+ /* If we had an existing foreground, we need to end it. */
+ IBIS_FORMATTING_END_ATTRIBUTE(foreground);
+
+ IBIS_FORMATTING_START_ATTRIBUTE(foreground,
+ pango_attr_foreground_new(fg.red,
+ fg.green,
+ fg.blue));
+ } else {
+ IBIS_FORMATTING_END_ATTRIBUTE(foreground);
+ }
- if(text[i + 1] == ',' && g_ascii_isdigit(text[i + 2])) {
- i += 2;
+ if(bg_set) {
+ IBIS_FORMATTING_END_ATTRIBUTE(background);
- if(g_ascii_isdigit(text[i + 1])) {
- i += 1;
- }
- }
+ IBIS_FORMATTING_START_ATTRIBUTE(background,
+ pango_attr_background_new(bg.red,
+ bg.green,
+ bg.blue));
+ } else {
+ IBIS_FORMATTING_END_ATTRIBUTE(background);
}
+ i += offset;
+
break;
+ }
case IBIS_FORMAT_HEX_COLOR:
- if(ibis_formatting_is_hex_color(&text[i + 1])) {
- i += 6;
+ PangoColor bg;
+ PangoColor fg;
+ gboolean bg_set = FALSE;
+ gboolean fg_set = FALSE;
+
+ ibis_formatting_parse_hex_color(&text[i + 1], &offset,
+ &fg_set, &fg,
+ &bg_set, &bg);
+
+ if(fg_set) {
+ /* If we had an existing foreground, we need to end it. */
+ IBIS_FORMATTING_END_ATTRIBUTE(foreground);
+
+ IBIS_FORMATTING_START_ATTRIBUTE(foreground,
+ pango_attr_foreground_new(fg.red,
+ fg.green,
+ fg.blue));
+ } else {
+ IBIS_FORMATTING_END_ATTRIBUTE(foreground);
}
- if(text[i + 1] == ',' &&
- ibis_formatting_is_hex_color(&text[i + 2]))
- {
- i += 7;
+ if(bg_set) {
+ IBIS_FORMATTING_END_ATTRIBUTE(background);
+
+ IBIS_FORMATTING_START_ATTRIBUTE(background,
+ pango_attr_background_new(bg.red,
+ bg.green,
+ bg.blue));
+ } else {
+ IBIS_FORMATTING_END_ATTRIBUTE(background);
}
+ i += offset;
+
break;
default:
g_string_append_c(str, text[i]);
+ position += 1;
break;
}
+ }
+ IBIS_FORMATTING_END_ATTRIBUTE(background);
+ IBIS_FORMATTING_END_ATTRIBUTE(bold);
+ IBIS_FORMATTING_END_ATTRIBUTE(foreground);
+ IBIS_FORMATTING_END_ATTRIBUTE(italic);
+ IBIS_FORMATTING_END_ATTRIBUTE(monospace);
+ IBIS_FORMATTING_END_ATTRIBUTE(strikethrough);
+ IBIS_FORMATTING_END_ATTRIBUTE(underline);
+
+ if(attrs != NULL) {
+ *attrs = real_attrs;
+ } else {
+ pango_attr_list_unref(real_attrs);
}
return g_string_free_and_steal(str);
}
+
+char *
+ibis_formatting_strip(const char *text) {
+ /* We don't use ibis_str_is_empty here because if we're passed an empty
+ * string, we should return a newly allocated empty string.
+ */
+ if(text == NULL) {
+ return NULL;
+ }
+
+ return ibis_formatting_parse(text, NULL);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/ibis/ibisformatting.h new/ibis-0.13.0/ibis/ibisformatting.h
--- old/ibis-0.12.0/ibis/ibisformatting.h 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/ibis/ibisformatting.h 2025-03-30 21:42:39.000000000 +0200
@@ -29,11 +29,27 @@
#include <glib.h>
+#include <pango/pango.h>
+
#include "ibisversion.h"
G_BEGIN_DECLS
/**
+ * ibis_formatting_parse:
+ * @text: (nullable): the text to parse
+ * @attrs: (out) (optional): a return address for the formatting attributes
+ *
+ * Separates the raw text and its formatting.
+ *
+ * Returns: (nullable): The raw text.
+ *
+ * Since: 0.13
+ */
+IBIS_AVAILABLE_IN_0_13
+char *ibis_formatting_parse(const char *text, PangoAttrList **attrs);
+
+/**
* ibis_formatting_strip:
* @text: (nullable): the text to strip
*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/ibis/ibisversion.h new/ibis-0.13.0/ibis/ibisversion.h
--- old/ibis-0.12.0/ibis/ibisversion.h 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/ibis/ibisversion.h 2025-03-30 21:42:39.000000000 +0200
@@ -413,6 +413,30 @@
#define IBIS_AVAILABLE_TYPE_IN_0_12
#endif
+/**
+ * IBIS_VERSION_0_13:
+ *
+ * A macro that evaluates to the 0.13 version of ibis, in a format that can be
+ * used by the C pre-processor.
+ *
+ * Since: 0.13
+ */
+#define IBIS_VERSION_0_13 (G_ENCODE_VERSION(0, 13))
+
+#if IBIS_VERSION_MAX_ALLOWED < IBIS_VERSION_0_13
+#define IBIS_AVAILABLE_IN_0_13 IBIS_UNAVAILABLE(0, 13)
+#define IBIS_AVAILABLE_STATIC_INLINE_IN_0_13 IBIS_UNAVAILABLE_STATIC_INLINE(0, 13)
+#define IBIS_AVAILABLE_MACRO_IN_0_13 IBIS_UNAVAILABLE_MACRO(0, 13)
+#define IBIS_AVAILABLE_ENUMERATOR_IN_0_13 IBIS_UNAVAILABLE_ENUMERATOR(0, 13)
+#define IBIS_AVAILABLE_TYPE_IN_0_13 IBIS_UNAVAILABLE_TYPE(0, 13)
+#else
+#define IBIS_AVAILABLE_IN_0_13 _IBIS_EXTERN
+#define IBIS_AVAILABLE_STATIC_INLINE_IN_0_13
+#define IBIS_AVAILABLE_MACRO_IN_0_13
+#define IBIS_AVAILABLE_ENUMERATOR_IN_0_13
+#define IBIS_AVAILABLE_TYPE_IN_0_13
+#endif
+
G_BEGIN_DECLS
/**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/ibis/meson.build new/ibis-0.13.0/ibis/meson.build
--- old/ibis-0.12.0/ibis/meson.build 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/ibis/meson.build 2025-03-30 21:42:39.000000000 +0200
@@ -97,12 +97,13 @@
# Library Target
###############################################################################
ibis_inc = include_directories('.')
+ibis_dependencies = [birb_dep, gio_dep, glib_dep, gobject_dep, hasl_dep, pango_dep]
ibis_lib = library('ibis',
IBIS_SOURCES + IBIS_HEADERS + IBIS_BUILT_SOURCES + IBIS_BUILT_HEADERS,
c_args : ['-DIBIS_COMPILATION', '-DG_LOG_USE_STRUCTURED', '-DG_LOG_DOMAIN="Ibis"'],
gnu_symbol_visibility : 'hidden',
- dependencies : [birb_dep, gio_dep, glib_dep, gobject_dep, hasl_dep],
+ dependencies : ibis_dependencies,
include_directories : [toplevel_inc, ibis_inc],
version : IBIS_LIB_VERSION,
install : true)
@@ -117,7 +118,7 @@
description : 'Ibis IRCv3 Parsing Library',
filebase : 'ibis',
subdirs : 'ibis-1.0',
- libraries : [birb_dep, gio_dep, glib_dep, gobject_dep, hasl_dep],
+ libraries : ibis_dependencies,
)
###############################################################################
@@ -126,7 +127,7 @@
if get_option('introspection')
ibis_gir = gnome.generate_gir(ibis_lib,
sources : IBIS_SOURCES + IBIS_HEADERS + IBIS_BUILT_HEADERS,
- includes : ['Gio-2.0', 'GObject-2.0', 'Hasl-1.0'],
+ includes : ['Gio-2.0', 'GObject-2.0', 'Hasl-1.0', 'Pango-1.0'],
header : 'ibis.h',
namespace : 'Ibis',
symbol_prefix : 'ibis',
@@ -142,7 +143,7 @@
# Library Dependency Object
###############################################################################
ibis_dep = declare_dependency(
- dependencies : [birb_dep, gio_dep, glib_dep, gobject_dep, hasl_dep],
+ dependencies : ibis_dependencies,
include_directories : [toplevel_inc, ibis_inc],
link_with : ibis_lib,
sources : IBIS_BUILT_HEADERS + IBIS_GENERATED_TARGETS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/ibis/reference/ibis.toml.in new/ibis-0.13.0/ibis/reference/ibis.toml.in
--- old/ibis-0.12.0/ibis/reference/ibis.toml.in 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/ibis/reference/ibis.toml.in 2025-03-30 21:42:39.000000000 +0200
@@ -36,6 +36,11 @@
description = "Hassle-free Authentication and Security Layer client library."
docs_url = "https://docs.imfreedom.org/hasl/"
+ [dependencies."Pango-1.0"]
+ name = "Pango"
+ description = "Internationalized text layout and rendering"
+ docs_url = "https://docs.gtk.org/Pango/"
+
[theme]
name = "basic"
show_index_summary = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/ibis/tests/test_formatting.c new/ibis-0.13.0/ibis/tests/test_formatting.c
--- old/ibis-0.12.0/ibis/tests/test_formatting.c 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/ibis/tests/test_formatting.c 2025-03-30 21:42:39.000000000 +0200
@@ -27,14 +27,12 @@
/******************************************************************************
* Strip Tests
*****************************************************************************/
-static void
-test_ibis_formatting_strip(const char *input, const char *expected) {
- char *actual = NULL;
-
- actual = ibis_formatting_strip(input);
- g_assert_cmpstr(actual, ==, expected);
- g_clear_pointer(&actual, g_free);
-}
+#define test_ibis_formatting_strip(input, expected) G_STMT_START { \
+ char *actual = NULL; \
+ actual = ibis_formatting_strip(input); \
+ g_assert_cmpstr(actual, ==, expected); \
+ g_clear_pointer(&actual, g_free); \
+} G_STMT_END
static void
test_ibis_formatting_strip_null(void) {
@@ -109,7 +107,7 @@
static void
test_ibis_formatting_strip_italic(void) {
test_ibis_formatting_strip("what do you \035mean\035?!",
- "what do you mean?!");
+ "what do you mean?!");
}
static void
@@ -130,13 +128,13 @@
static void
test_ibis_formatting_strip_strikethrough(void) {
test_ibis_formatting_strip("\036I could be wrong\036",
- "I could be wrong");
+ "I could be wrong");
}
static void
test_ibis_formatting_strip_underline(void) {
test_ibis_formatting_strip("You can't handle the \037truth\037!",
- "You can't handle the truth!");
+ "You can't handle the truth!");
}
static void
@@ -168,12 +166,384 @@
}
/******************************************************************************
+ * Parse Tests
+ *****************************************************************************/
+#define test_ibis_formatting_parse(raw, expected, expected_attrs) G_STMT_START { \
+ PangoAttrList *actual_attrs = NULL; \
+ char *actual_text = NULL; \
+ actual_text = ibis_formatting_parse(raw, &actual_attrs); \
+ g_assert_cmpstr(actual_text, ==, expected); \
+ g_clear_pointer(&actual_text, g_free); \
+ if(expected_attrs != NULL) { \
+ g_assert_true(pango_attr_list_equal(actual_attrs, expected_attrs)); \
+ pango_attr_list_unref(expected_attrs); \
+ pango_attr_list_unref(actual_attrs); \
+ } else { \
+ g_assert_null(actual_attrs); \
+ } \
+} G_STMT_END
+
+static void
+test_ibis_formatting_parse_null(void) {
+ test_ibis_formatting_parse(NULL, NULL, NULL);
+}
+
+static void
+test_ibis_formatting_parse_empty(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+
+ test_ibis_formatting_parse("", "", attrs);
+}
+
+static void
+test_ibis_formatting_parse_color_comma(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+
+ test_ibis_formatting_parse("\003,", ",", attrs);
+}
+
+static void
+test_ibis_formatting_parse_color_foreground_comma(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0x0000, 0x9393, 0x0000);
+ attr->start_index = 0;
+ attr->end_index = 1;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\0033,", ",", attrs);
+}
+
+static void
+test_ibis_formatting_parse_color_full(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0x0000, 0x9393, 0x0000);
+ attr->start_index = 0;
+ attr->end_index = 3;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_background_new(0x0000, 0xfcfc, 0x0000);
+ attr->start_index = 0;
+ attr->end_index = 3;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\0033,9wee", "wee", attrs);
+}
+
+static void
+test_ibis_formatting_parse_color_foreground_3_digit(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0x5151, 0x7474, 0x0000);
+ attr->start_index = 0;
+ attr->end_index = 1;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\003314", "4", attrs);
+}
+
+static void
+test_ibis_formatting_parse_color_background_3_digit(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0x0000, 0x0000, 0x0000);
+ attr->start_index = 0;
+ attr->end_index = 1;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_background_new(0x0000, 0x2727, 0x4747);
+ attr->start_index = 0;
+ attr->end_index = 1;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\0031,234", "4", attrs);
+}
+
+static void
+test_ibis_formatting_parse_hex_color(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0xffff, 0x0000, 0xffff);
+ attr->start_index = 0;
+ attr->end_index = 4;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\004FF00FFwoo!", "woo!", attrs);
+}
+
+static void
+test_ibis_formatting_parse_hex_color_full(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0xffff, 0x0000, 0xffff);
+ attr->start_index = 0;
+ attr->end_index = 4;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_background_new(0x0000, 0xffff, 0x0000);
+ attr->start_index = 0;
+ attr->end_index = 4;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\004FF00FF,00FF00woo!", "woo!", attrs);
+}
+
+static void
+test_ibis_formatting_parse_hex_color_comma(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+
+ test_ibis_formatting_parse("\004,", ",", attrs);
+}
+
+static void
+test_ibis_formatting_parse_hex_color_foreground_comma(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0xfefe, 0xfefe, 0xfefe);
+ attr->start_index = 0;
+ attr->end_index = 1;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\004FEFEFE,", ",", attrs);
+}
+
+static void
+test_ibis_formatting_parse_hex_color_foreground_7_characters(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0xfefe, 0xfefe, 0xfefe);
+ attr->start_index = 0;
+ attr->end_index = 1;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\004FEFEFEF", "F", attrs);
+}
+
+static void
+test_ibis_formatting_parse_hex_color_background_7_characters(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0xfefe, 0xfefe, 0xfefe);
+ attr->start_index = 0;
+ attr->end_index = 1;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_background_new(0x2222, 0x2222, 0x2222);
+ attr->start_index = 0;
+ attr->end_index = 1;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\004FEFEFE,2222223", "3", attrs);
+}
+
+static void
+test_ibis_formatting_parse_bold(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
+ attr->start_index = 8;
+ attr->end_index = 12;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("this is \002bold\002!",
+ "this is bold!",
+ attrs);
+}
+
+static void
+test_ibis_formatting_parse_italic(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_style_new(PANGO_STYLE_ITALIC);
+ attr->start_index = 12;
+ attr->end_index = 16;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("what do you \035mean\035?!",
+ "what do you mean?!",
+ attrs);
+}
+
+static void
+test_ibis_formatting_parse_monospace(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_family_new("monospace");
+ attr->start_index = 0;
+ attr->end_index = 4;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\021i++;\021", "i++;", attrs);
+}
+
+static void
+test_ibis_formatting_parse_reset(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+
+ test_ibis_formatting_parse("end of formatting\017",
+ "end of formatting",
+ attrs);
+}
+
+static void
+test_ibis_formatting_parse_reverse(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+
+ /* reverse is ignored right now as we don't know how to handle it. */
+ test_ibis_formatting_parse("re\026ver\026se", "reverse", attrs);
+}
+
+static void
+test_ibis_formatting_parse_strikethrough(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_strikethrough_new(TRUE);
+ attr->start_index = 0;
+ attr->end_index = 16;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("\036I could be wrong\036",
+ "I could be wrong",
+ attrs);
+}
+
+static void
+test_ibis_formatting_parse_underline(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_underline_new(PANGO_UNDERLINE_SINGLE);
+ attr->start_index = 21;
+ attr->end_index = 26;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("You can't handle the \037truth\037!",
+ "You can't handle the truth!",
+ attrs);
+}
+
+static void
+test_ibis_formatting_parse_spec_example1(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0x0, 0x9393, 0x0);
+ attr->start_index = 7;
+ attr->end_index = 12;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_foreground_new(0xfcfc, 0x7f7f, 0x0);
+ attr->start_index = 22;
+ attr->end_index = 41;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("I love \0033IRC! \003It is the \0037best protocol ever!",
+ "I love IRC! It is the best protocol ever!",
+ attrs);
+}
+
+static void
+test_ibis_formatting_parse_spec_example2(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_style_new(PANGO_STYLE_ITALIC);
+ attr->start_index = 10;
+ attr->end_index = 22;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_foreground_new(0xffff, 0x0, 0xffff);
+ attr->start_index = 10;
+ attr->end_index = 15;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_background_new(0x0, 0xfcfc, 0x0);
+ attr->start_index = 10;
+ attr->end_index = 15;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("This is a \035\00313,9cool \003message",
+ "This is a cool message",
+ attrs);
+}
+
+static void
+test_ibis_formatting_parse_spec_example3(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
+ attr->start_index = 4;
+ attr->end_index = 15;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_foreground_new(0xffff, 0x0, 0x0);
+ attr->start_index = 7;
+ attr->end_index = 10;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_background_new(0x0, 0x0, 0xfcfc);
+ attr->start_index = 7;
+ attr->end_index = 10;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("IRC \002is \0034,12so \003great\017!",
+ "IRC is so great!",
+ attrs);
+}
+
+static void
+test_ibis_formatting_parse_spec_example4(void) {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = NULL;
+
+ attr = pango_attr_foreground_new(0xffff, 0x0000, 0xffff);
+ attr->start_index = 19;
+ attr->end_index = 21;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_background_new(0xffff, 0xffff, 0x0000);
+ attr->start_index = 19;
+ attr->end_index = 21;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
+ attr->start_index = 46;
+ attr->end_index = 47;
+ pango_attr_list_insert(attrs, attr);
+
+ attr = pango_attr_style_new(PANGO_STYLE_ITALIC);
+ attr->start_index = 47;
+ attr->end_index = 48;
+ pango_attr_list_insert(attrs, attr);
+
+ test_ibis_formatting_parse("Rules: Don't spam 5\00313,8,6\003,7,8, and especially not \0029\002\035!",
+ "Rules: Don't spam 5,6,7,8, and especially not 9!",
+ attrs);
+}
+
+/******************************************************************************
* Main
*****************************************************************************/
int
main(int argc, char *argv[]) {
g_test_init(&argc, &argv, NULL);
+ /* Strip tests */
g_test_add_func("/ibis/formatting/strip/null",
test_ibis_formatting_strip_null);
g_test_add_func("/ibis/formatting/strip/empty",
@@ -230,5 +600,59 @@
g_test_add_func("/ibis/formatting/strip/spec-example4",
test_ibis_formatting_strip_spec_example4);
+ /* Parsing tests */
+ g_test_add_func("/ibis/formatting/parse/null",
+ test_ibis_formatting_parse_null);
+ g_test_add_func("/ibis/formatting/parse/empty",
+ test_ibis_formatting_parse_empty);
+
+ g_test_add_func("/ibis/formatting/parse/color-comma",
+ test_ibis_formatting_parse_color_comma);
+ g_test_add_func("/ibis/formatting/parse/color-full",
+ test_ibis_formatting_parse_color_full);
+ g_test_add_func("/ibis/formatting/parse/color-foreground-comma",
+ test_ibis_formatting_parse_color_foreground_comma);
+ g_test_add_func("/ibis/formatting/parse/color-foreground-3-digit",
+ test_ibis_formatting_parse_color_foreground_3_digit);
+ g_test_add_func("/ibis/formatting/parse/color-background-3-digit",
+ test_ibis_formatting_parse_color_background_3_digit);
+
+ g_test_add_func("/ibis/formatting/parse/hex-color",
+ test_ibis_formatting_parse_hex_color);
+ g_test_add_func("/ibis/formatting/parse/hex-color-full",
+ test_ibis_formatting_parse_hex_color_full);
+ g_test_add_func("/ibis/formatting/parse/hex-color-comma",
+ test_ibis_formatting_parse_hex_color_comma);
+ g_test_add_func("/ibis/formatting/parse/hex-color-foreground-comma",
+ test_ibis_formatting_parse_hex_color_foreground_comma);
+ g_test_add_func("/ibis/formatting/parse/hex-color-foreground-7-characters",
+ test_ibis_formatting_parse_hex_color_foreground_7_characters);
+ g_test_add_func("/ibis/formatting/parse/hex-color-background-7-characters",
+ test_ibis_formatting_parse_hex_color_background_7_characters);
+
+ g_test_add_func("/ibis/formatting/parse/bold",
+ test_ibis_formatting_parse_bold);
+ g_test_add_func("/ibis/formatting/parse/italic",
+ test_ibis_formatting_parse_italic);
+ g_test_add_func("/ibis/formatting/parse/monospace",
+ test_ibis_formatting_parse_monospace);
+ g_test_add_func("/ibis/formatting/parse/reset",
+ test_ibis_formatting_parse_reset);
+ g_test_add_func("/ibis/formatting/parse/reverse",
+ test_ibis_formatting_parse_reverse);
+ g_test_add_func("/ibis/formatting/parse/strikethrough",
+ test_ibis_formatting_parse_strikethrough);
+ g_test_add_func("/ibis/formatting/parse/underline",
+ test_ibis_formatting_parse_underline);
+
+ g_test_add_func("/ibis/formatting/parse/spec-example1",
+ test_ibis_formatting_parse_spec_example1);
+ g_test_add_func("/ibis/formatting/parse/spec-example2",
+ test_ibis_formatting_parse_spec_example2);
+ g_test_add_func("/ibis/formatting/parse/spec-example3",
+ test_ibis_formatting_parse_spec_example3);
+ g_test_add_func("/ibis/formatting/parse/spec-example4",
+ test_ibis_formatting_parse_spec_example4);
+
return g_test_run();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ibis-0.12.0/meson.build new/ibis-0.13.0/meson.build
--- old/ibis-0.12.0/meson.build 2025-03-14 07:02:09.000000000 +0100
+++ new/ibis-0.13.0/meson.build 2025-03-30 21:42:39.000000000 +0200
@@ -2,7 +2,7 @@
default_options : ['c_std=c17', 'warning_level=2'],
license : 'LGPL-2.1-or-later',
meson_version : '>=1.0.0',
- version : '0.12.0')
+ version : '0.13.0')
toplevel_inc = include_directories('.')
@@ -53,16 +53,18 @@
# Dependencies
###############################################################################
glib_dep = dependency('glib-2.0', version : '>=2.76.0')
-gio_dep = dependency('gio-2.0')
-gobject_dep = dependency('gobject-2.0')
-birb_dep = dependency('birb', version: '>=0.3.1')
-hasl_dep = dependency('hasl', version : '>=0.4.0')
-
add_project_arguments(
'-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_76',
'-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_76',
language : 'c')
+gio_dep = dependency('gio-2.0')
+gobject_dep = dependency('gobject-2.0')
+
+birb_dep = dependency('birb', version: '>=0.3.1')
+hasl_dep = dependency('hasl', version : '>=0.4.0')
+pango_dep = dependency('pango', version : '>=1.54.0')
+
###############################################################################
# Internationalization
###############################################################################
++++++ ibis.keyring ++++++
--- /var/tmp/diff_new_pack.IC7LdW/_old 2025-03-31 11:45:10.117110085 +0200
+++ /var/tmp/diff_new_pack.IC7LdW/_new 2025-03-31 11:45:10.153111579 +0200
@@ -1,6 +1,6 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Comment: Hostname:
Version: Hockeypuck 2.2
+Comment: Hostname:
xsFNBF05DzkBEADFEFM1ZALjngGoeIalaW9aXCA5Gr505LDK8WIVVeQD/Izggx9z
Y0wi2UJR97eIXllL8FPZIe8DywJqXKhuafL+E/TI9UqRH/WtmNxZTFW6ZAvYlaHu
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package godot for openSUSE:Factory checked in at 2025-03-31 11:44:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/godot (Old)
and /work/SRC/openSUSE:Factory/.godot.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "godot"
Mon Mar 31 11:44:00 2025 rev:40 rq:1265602 version:4.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/godot/godot.changes 2025-03-06 14:50:44.658511181 +0100
+++ /work/SRC/openSUSE:Factory/.godot.new.2696/godot.changes 2025-03-31 11:45:06.236949075 +0200
@@ -0,0 +1,16 @@
+Wed Mar 26 12:00:00 UTC 2025 - cunix(a)mail.de
+
+- Update to 4.4.1
+ * Fix TextEdit scrolls wrong on text selection
+ * Restore "Show in File Manager" button functionality
+ in ProjectManager
+ * Update script modified times when saved in EditorNode
+ * Create .uid files for detected new files
+ * Set window position when running project in maximized
+ or full-screen mode to ensure it is opened on the correct screen
+ * Add "Go Online" button on Export Template Manager
+ * Fix check for "is_maximized" to require both horizontal and vertical
+ and more:
+ https://godotengine.github.io/godot-interactive-changelog/#4.4.1
+
+-------------------------------------------------------------------
Old:
----
godot-4.4-stable.tar.xz
godot-4.4-stable.tar.xz.sha256
New:
----
godot-4.4.1-stable.tar.xz
godot-4.4.1-stable.tar.xz.sha256
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ godot.spec ++++++
--- /var/tmp/diff_new_pack.2MaumY/_old 2025-03-31 11:45:06.936978123 +0200
+++ /var/tmp/diff_new_pack.2MaumY/_new 2025-03-31 11:45:06.936978123 +0200
@@ -29,7 +29,7 @@
%define compiler_version_leap 10
Name: godot
-Version: 4.4
+Version: 4.4.1
Release: 0
Summary: Cross-Platform Game Engine with an Integrated Editor
License: MIT
@@ -207,7 +207,7 @@
Provides: bundled(libzstd) = 1.5.6
Provides: bundled(zlib) = 1.3.1
%if 0%{?sle_version} < 150200
-Provides: bundled(mbedtls) = 3.6.2
+Provides: bundled(mbedtls) = 3.6.3
%endif
%if !0%{?is_opensuse}
# SLES seems not to have miniupnpc and wslay
++++++ godot-4.4-stable.tar.xz -> godot-4.4.1-stable.tar.xz ++++++
/work/SRC/openSUSE:Factory/godot/godot-4.4-stable.tar.xz /work/SRC/openSUSE:Factory/.godot.new.2696/godot-4.4.1-stable.tar.xz differ: char 15, line 1
++++++ godot-4.4-stable.tar.xz.sha256 -> godot-4.4.1-stable.tar.xz.sha256 ++++++
--- /work/SRC/openSUSE:Factory/godot/godot-4.4-stable.tar.xz.sha256 2025-03-06 14:50:44.650510845 +0100
+++ /work/SRC/openSUSE:Factory/.godot.new.2696/godot-4.4.1-stable.tar.xz.sha256 2025-03-31 11:45:06.232948909 +0200
@@ -1 +1 @@
-74053aa6a19b8751fec89a527c722e32de4d94442ec2525970c108aea89dd3e8 godot-4.4-stable.tar.xz
+ddbd6527cdb3ddb02910b383301a5c9117b1c33c777ef1c86d1b1eea43dcb651 godot-4.4.1-stable.tar.xz
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package identity for openSUSE:Factory checked in at 2025-03-31 11:43:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/identity (Old)
and /work/SRC/openSUSE:Factory/.identity.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "identity"
Mon Mar 31 11:43:53 2025 rev:4 rq:1265598 version:25.03
Changes:
--------
--- /work/SRC/openSUSE:Factory/identity/identity.changes 2024-10-24 15:43:50.838844082 +0200
+++ /work/SRC/openSUSE:Factory/.identity.new.2696/identity.changes 2025-03-31 11:45:02.528795202 +0200
@@ -1,0 +2,8 @@
+Sun Mar 30 19:29:39 UTC 2025 - Muhammad Akbar Yanuar Mantari <mantarimay(a)pm.me>
+
+- Update to Version 25.03
+ * Changed the versioning scheme to year.month.
+ * Updated to the GNOME 48 platform.
+ * Updated translations.
+
+-------------------------------------------------------------------
Old:
----
identity-0.7.0.tar.xz
New:
----
identity-25.03.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ identity.spec ++++++
--- /var/tmp/diff_new_pack.g3TKH0/_old 2025-03-31 11:45:03.284826574 +0200
+++ /var/tmp/diff_new_pack.g3TKH0/_new 2025-03-31 11:45:03.288826740 +0200
@@ -1,7 +1,7 @@
#
# spec file for package identity
#
-# Copyright (c) 2024 mantarimay
+# Copyright (c) 2025 mantarimay
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
@@ -19,9 +19,9 @@
%define _lto_cflags %{nil}
%define appid org.gnome.gitlab.YaLTeR.Identity
-%define rurl abddc256d6b3b7fce433a40eae4588fe
+%define rurl eccd1611a3158fcaa7c0105a6ea85eca
Name: identity
-Version: 0.7.0
+Version: 25.03
Release: 0
Summary: Compare images and videos
License: GPL-3.0-or-later
++++++ identity-0.7.0.tar.xz -> identity-25.03.tar.xz ++++++
/work/SRC/openSUSE:Factory/identity/identity-0.7.0.tar.xz /work/SRC/openSUSE:Factory/.identity.new.2696/identity-25.03.tar.xz differ: char 26, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package dnscrypt-proxy for openSUSE:Factory checked in at 2025-03-31 11:43:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dnscrypt-proxy (Old)
and /work/SRC/openSUSE:Factory/.dnscrypt-proxy.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dnscrypt-proxy"
Mon Mar 31 11:43:51 2025 rev:21 rq:1265586 version:2.1.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/dnscrypt-proxy/dnscrypt-proxy.changes 2025-01-12 11:29:35.912547101 +0100
+++ /work/SRC/openSUSE:Factory/.dnscrypt-proxy.new.2696/dnscrypt-proxy.changes 2025-03-31 11:45:00.704719511 +0200
@@ -1,0 +2,21 @@
+Fri Mar 28 03:02:02 UTC 2025 - Gerald Chen <gerald_chen(a)foxmail.com>
+
+- Updated to version 2.1.8
+ * Dependencies have been updated, notably the QUIC implementation, which could
+ be vulnerable to denial-of-service attacks.
+ * In forwarding rules, the target can now optionally include a non-standard
+ DNS port number. The port number is also now optional when using IPv6.
+ * An annoying log message related to permissions on Windows has been
+ suppressed.
+ * Resolver IP addresses can now be refreshed more frequently. Additionally,
+ jitter has been introduced to prevent all resolvers from being refreshed
+ simultaneously. Further changes have been implemented to mitigate issues
+ arising from multiple concurrent attempts to resolve a resolver's IP
+ address.
+ * An empty value for "tls_cipher_suite" is now equivalent to leaving the
+ property undefined. Previously, it disabled all TLS cipher suites, which had
+ little practical justification.
+ * In forwarding rules, an optional `*.` prefix is now accepted.
+
+
+-------------------------------------------------------------------
Old:
----
dnscrypt-proxy-2.1.7.tar.gz
New:
----
dnscrypt-proxy-2.1.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dnscrypt-proxy.spec ++++++
--- /var/tmp/diff_new_pack.tYSo18/_old 2025-03-31 11:45:01.384747729 +0200
+++ /var/tmp/diff_new_pack.tYSo18/_new 2025-03-31 11:45:01.384747729 +0200
@@ -25,7 +25,7 @@
%define services %{name}.socket %{name}.service %{name}-resolvconf.service
Name: dnscrypt-proxy
-Version: 2.1.7
+Version: 2.1.8
Release: 0
Summary: A tool for securing communications between a client and a DNS resolver
License: ISC
++++++ dnscrypt-proxy-2.1.7.tar.gz -> dnscrypt-proxy-2.1.8.tar.gz ++++++
++++ 31627 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package imb for openSUSE:Factory checked in at 2025-03-31 11:43:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/imb (Old)
and /work/SRC/openSUSE:Factory/.imb.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "imb"
Mon Mar 31 11:43:48 2025 rev:20 rq:1265550 version:2021.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/imb/imb.changes 2025-03-25 22:20:31.362776073 +0100
+++ /work/SRC/openSUSE:Factory/.imb.new.2696/imb.changes 2025-03-31 11:44:59.788681500 +0200
@@ -1,0 +2,5 @@
+Sat Mar 29 14:51:40 UTC 2025 - Nicolas Morey <nicolas.morey(a)suse.com>
+
+- Remove support for gnu-hpc build flavours.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ imb.spec ++++++
--- /var/tmp/diff_new_pack.jGTqv0/_old 2025-03-31 11:45:00.252700754 +0200
+++ /var/tmp/diff_new_pack.jGTqv0/_new 2025-03-31 11:45:00.256700921 +0200
@@ -21,15 +21,6 @@
# Base package name
%define pname imb
%define PNAME IMB
-%define ver 2021.8
-%define _ver 2021_8
-
-%if 0%{?sle_version} >= 150200
-%define DisOMPI1 ExclusiveArch: do_not_build
-%endif
-%if !0%{?is_opensuse} && 0%{?sle_version:1} && 0%{?sle_version} < 150200
-%define DisOMPI3 ExclusiveArch: do_not_build
-%endif
%if "%flavor" == ""
%define package_name %{pname}
@@ -37,327 +28,37 @@
%endif
%if "%{flavor}" == "mvapich2"
-%{bcond_with hpc}
-%undefine c_f_ver
%global mpi_flavor mvapich2
%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
%endif
%if "%{flavor}" == "mpich"
-%{bcond_with hpc}
-%undefine c_f_ver
%global mpi_flavor mpich
%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
%endif
%if "%{flavor}" == "openmpi4"
-%{bcond_with hpc}
-%undefine c_f_ver
%global mpi_flavor openmpi
%define mpi_vers 4
%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI4}
%endif
%if "%{flavor}" == "openmpi5"
-%{bcond_with hpc}
-%undefine c_f_ver
%global mpi_flavor openmpi
%define mpi_vers 5
%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
ExcludeArch: %{ix86} %{arm}
-%{?DisOMPI5}
-%endif
-
-%if "%{flavor}" == "gnu-mvapich2-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%undefine c_f_ver
-%global mpi_flavor mvapich2
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu-mpich-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%undefine c_f_ver
-# macro mpi is used by macros for master package
-%global mpi_flavor mpich
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu-openmpi4-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%undefine c_f_ver
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 4
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI4}
-%endif
-
-%if "%{flavor}" == "gnu-openmpi5-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%undefine c_f_ver
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 5
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI5}
-%endif
-
-%if "%{flavor}" == "gnu7-mvapich2-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 7
-%global mpi_flavor mvapich2
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu7-mpich-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 7
-# macro mpi is used by macros for master package
-%global mpi_flavor mpich
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu7-openmpi4-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 7
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 4
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI4}
-%endif
-
-%if "%{flavor}" == "gnu7-openmpi5-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 7
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 5
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI5}
-%endif
-
-%if "%{flavor}" == "gnu8-mvapich2-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 8
-%global mpi_flavor mvapich2
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu8-mpich-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 8
-# macro mpi is used by macros for master package
-%global mpi_flavor mpich
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu8-openmpi4-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 8
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 4
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI4}
-%endif
-
-%if "%{flavor}" == "gnu8-openmpi5-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 8
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 5
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI4}
-%endif
-
-%if "%{flavor}" == "gnu9-mvapich2-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 9
-%global mpi_flavor mvapich2
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu9-mpich-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 9
-# macro mpi is used by macros for master package
-%global mpi_flavor mpich
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu9-openmpi4-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 9
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 4
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI4}
-%endif
-
-%if "%{flavor}" == "gnu9-openmpi5-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 9
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 5
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI5}
-%endif
-
-%if "%{flavor}" == "gnu10-mvapich2-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 10
-%global mpi_flavor mvapich2
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu10-mpich-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 10
-# macro mpi is used by macros for master package
-%global mpi_flavor mpich
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu10-openmpi4-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 10
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 4
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI4}
-%endif
-
-%if "%{flavor}" == "gnu10-openmpi5-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 10
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 5
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI5}
-%endif
-
-%if "%{flavor}" == "gnu11-mvapich2-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 11
-%global mpi_flavor mvapich2
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu11-mpich-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 11
-# macro mpi is used by macros for master package
-%global mpi_flavor mpich
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu11-openmpi3-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 11
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 3
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI3}
-%endif
-
-%if "%{flavor}" == "gnu11-openmpi4-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 11
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 4
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI4}
-%endif
-
-%if "%{flavor}" == "gnu12-mvapich2-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 12
-%global mpi_flavor mvapich2
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
-%endif
-
-%if "%{flavor}" == "gnu12-mpich-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 12
-# macro mpi is used by macros for master package
-%global mpi_flavor mpich
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-IO IMB-P2P"
%endif
-%if "%{flavor}" == "gnu12-openmpi3-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 12
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 3
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI3}
-%endif
-
-%if "%{flavor}" == "gnu12-openmpi4-hpc"
-%{bcond_without hpc}
-%define compiler_family gnu
-%define c_f_ver 12
-# macro mpi is used by macros for master package
-%global mpi_flavor openmpi
-%define mpi_vers 4
-%define buildtarget "IMB-MPI1 IMB-EXT IMB-P2P"
-%{?DisOMPI4}
-%endif
-
-%if %{without hpc}
%define p_bindir /usr/%_lib/mpi/gcc/%{flavor}/bin
%if "%{flavor}" == ""
%define package_name %{pname}
%else
%define package_name %{pname}-%{flavor}
%endif
-%else
-%{hpc_init -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} -m {%mpi_flavor} %{?mpi_vers:-V %{mpi_vers}} %{?ext:-e %{ext}}}
-%define package_name %{hpc_package_name %_ver}
-%define p_bindir %hpc_bindir
-ExcludeArch: i586 %arm s390
-%endif
Name: %{package_name}
-Version: %ver
+Version: 2021.8
Release: 0
Summary: Intel MPI Benchmarks (IMB)
License: BSD-3-Clause
@@ -366,41 +67,23 @@
Source0: https://github.com/intel/mpi-benchmarks/archive/IMB-v%{version}.tar.gz#/%{p…
Patch0: imb-remove-Werror-flag.patch
Patch1: src_c-Fix-multiple-size_t-issues-on-32b-systems.patch
-%if %{without hpc}
BuildRequires: %{flavor}-devel
BuildRequires: gcc
BuildRequires: gcc-c++
Obsoletes: imb < %{version}
-%else
-BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel
-BuildRequires: %{mpi_flavor}%{?mpi_vers}-%{compiler_family}%{?c_f_ver}-hpc-macros-devel
-BuildRequires: suse-hpc
-%hpc_requires
-%endif
%description
The Intel MPI Benchmarks (IMB) perform a set of MPI performance
measurements for point-to-point and global communication operations for
a range of message sizes.
-%{?with_hpc:%{hpc_master_package -L}}
-
-%if "%(echo %version | tr '.' '_')" != "%_ver"
-%{error: Fix _ver variable to match package version!}
-%endif
-
%prep
%autosetup -p1 -n mpi-benchmarks-IMB-v%{version}
%build
-%if %{without hpc}
%define makeargs CC=/usr/%_lib/mpi/gcc/%{flavor}/bin/mpicc CXX=/usr/%_lib/mpi/gcc/%{flavor}/bin/mpic++
. /usr/%_lib/mpi/gcc/%{flavor}/bin/mpivars.sh
-%else
-%{hpc_setup}
-%define makeargs CC=mpicc CXX=mpic++
-%endif
for target in $(echo %{?buildtarget}) ; do
echo "building $target"
make $target %{?makeargs} %{?_smp_mflags}
@@ -416,42 +99,8 @@
EOF
cd -
-%if %{with hpc}
-%hpc_write_modules_files
-#%%Module1.0#####################################################################
-
-proc ModulesHelp { } {
-
-puts stderr " "
-puts stderr "This module loads the %{pname} library built with the %{compiler_family} toolchain and %{mpi_flavor}%{?mpi_vers}."
-puts stderr "\nVersion %{version}\n"
-
-}
-module-whatis "Name: %{pname} built with %{compiler_family} toolchain and %{mpi_flavor}%{?mpi_vers}"
-module-whatis "Version: %{version}"
-module-whatis "Category: application / benchmark"
-module-whatis "Description: %{SUMMARY}"
-module-whatis "URL: %{url}"
-
-set version %{version}
-
-prepend-path PATH %{hpc_bindir}
-
-setenv %{PNAME}_DIR %{hpc_prefix}
-
-EOF
-%endif
-
-%postun
-%{?with_hpc:%hpc_module_delete_if_default}
-
%files
%doc ReadMe_IMB.txt
%license license/license.txt license/use-of-trademark-license.txt
-%if %{with hpc}
-%hpc_modules_files
-%dir %{hpc_install_path_base}
-%dir %{hpc_prefix}
-%endif
%{p_bindir}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package xfce4-session for openSUSE:Factory checked in at 2025-03-31 11:43:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xfce4-session (Old)
and /work/SRC/openSUSE:Factory/.xfce4-session.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xfce4-session"
Mon Mar 31 11:43:46 2025 rev:94 rq:1265579 version:4.20.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/xfce4-session/xfce4-session.changes 2025-03-27 22:32:19.268655487 +0100
+++ /work/SRC/openSUSE:Factory/.xfce4-session.new.2696/xfce4-session.changes 2025-03-31 11:44:58.996648634 +0200
@@ -1,0 +2,6 @@
+Sun Mar 30 15:29:35 UTC 2025 - Manfred Hollstein <manfred.h(a)gmx.net>
+
+- Build sub-package wayland-experimental only on Tumbleweed or
+ Slowroll; Leap does not provide labwc (yet).
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xfce4-session.spec ++++++
--- /var/tmp/diff_new_pack.sVUkJS/_old 2025-03-31 11:44:59.612674196 +0200
+++ /var/tmp/diff_new_pack.sVUkJS/_new 2025-03-31 11:44:59.612674196 +0200
@@ -101,6 +101,7 @@
%description branding-upstream
This package provides the upstream look and feel for the Xfce Session Manager.
+%if 0%{is_opensuse} && 0%{suse_version} >= 1550
%package wayland-experimental
Summary: Xfce Session Manager for Wayland
Group: System/GUI/XFCE
@@ -111,6 +112,7 @@
%description wayland-experimental
xfce4-wayland-experimental-session is the Wayland session manager
for the Xfce desktop environment.
+%endif
%lang_package
@@ -166,6 +168,15 @@
touch %{buildroot}%{_sysconfdir}/alternatives/default-xsession.desktop
ln -s %{_sysconfdir}/alternatives/default-xsession.desktop %{buildroot}%{_datadir}/xsessions/default.desktop
+# Remove all wayland/labwc related stuff on Leap; sub-package wayland-experimental
+# won't be generated at all
+%if 0%{suse_version} < 1550
+rm -f %{buildroot}%{_datadir}/xfce4/labwc/labwc*
+rmdir %{buildroot}%{_datadir}/xfce4/labwc
+rm -f %{buildroot}%{_datadir}/wayland-sessions/xfce-wayland.desktop
+rmdir %{buildroot}%{_datadir}/wayland-sessions
+%endif
+
%post
%{_sbindir}/update-alternatives --install %{_datadir}/xsessions/default.desktop \
default-xsession.desktop %{_datadir}/xsessions/xfce.desktop 20
@@ -200,9 +211,11 @@
%files branding-upstream
%config %{_sysconfdir}/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml
+%if 0%{is_opensuse} && 0%{suse_version} >= 1550
%files wayland-experimental
%dir %{_datadir}/wayland-sessions
%{_datadir}/wayland-sessions/xfce-wayland.desktop
%dir %{_datadir}/xfce4/labwc
%{_datadir}/xfce4/labwc/labwc*
+%endif
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package openresolv for openSUSE:Factory checked in at 2025-03-31 11:43:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openresolv (Old)
and /work/SRC/openSUSE:Factory/.openresolv.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openresolv"
Mon Mar 31 11:43:35 2025 rev:6 rq:1265519 version:3.14.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/openresolv/openresolv.changes 2023-12-06 23:49:26.909933458 +0100
+++ /work/SRC/openSUSE:Factory/.openresolv.new.2696/openresolv.changes 2025-03-31 11:44:54.148447455 +0200
@@ -1,0 +2,10 @@
+Sat Mar 29 09:52:48 UTC 2025 - Andrea Manzini <andrea.manzini(a)suse.com>
+
+- update to 3.14.1:
+ * unbound: Add option for marking domains as private
+ * Add a new exlcude option to exclude a whole file on match
+ * Remove reference to README for configure options
+
+- added openresolv.keyring for signature verification
+
+-------------------------------------------------------------------
Old:
----
openresolv-3.13.2.tar.xz
openresolv-3.13.2.tar.xz.asc
New:
----
openresolv-3.14.1.tar.xz
openresolv-3.14.1.tar.xz.asc
openresolv.keyring
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openresolv.spec ++++++
--- /var/tmp/diff_new_pack.IfXXm3/_old 2025-03-31 11:44:54.760472851 +0200
+++ /var/tmp/diff_new_pack.IfXXm3/_new 2025-03-31 11:44:54.764473017 +0200
@@ -1,7 +1,7 @@
#
# spec file for package openresolv
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,14 @@
Name: openresolv
-Version: 3.13.2
+Version: 3.14.1
Release: 0
Summary: DNS management framework
License: BSD-2-Clause
URL: https://roy.marples.name/projects/openresolv
-Source0: https://github.com/NetworkConfiguration/openresolv/releases/download/v3.13.…
-Source1: https://github.com/NetworkConfiguration/openresolv/releases/download/v3.13.…
+Source0: https://github.com/NetworkConfiguration/openresolv/releases/download/v%{ver…
+Source1: https://github.com/NetworkConfiguration/openresolv/releases/download/v%{ver…
+Source2: openresolv.keyring
Requires: bash
BuildArch: noarch
++++++ openresolv-3.13.2.tar.xz -> openresolv-3.14.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openresolv-3.13.2/Makefile new/openresolv-3.14.1/Makefile
--- old/openresolv-3.13.2/Makefile 2023-06-27 16:39:40.000000000 +0200
+++ new/openresolv-3.14.1/Makefile 2025-03-28 20:35:30.000000000 +0100
@@ -45,7 +45,7 @@
DISTINFOMD= ${DISTINFO}.md
DISTSIGN= ${DISTFILE}.asc
SHA256?= sha256
-PGP?= gpg
+PGP?= gpg2
GITREF?= HEAD
@@ -104,7 +104,7 @@
${SHA256} ${DISTFILE} >${DISTINFO}
wc -c <${DISTFILE} \
| xargs printf 'Size (${DISTFILE}) = %s\n' >>${DISTINFO}
- ${PGP} --armour --detach-sign ${DISTFILE}
+ ${PGP} --sign --armour --detach ${DISTFILE}
chmod 644 ${DISTSIGN}
ls -l ${DISTFILE} ${DISTINFO} ${DISTSIGN}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openresolv-3.13.2/configure new/openresolv-3.14.1/configure
--- old/openresolv-3.13.2/configure 2023-06-27 16:39:40.000000000 +0200
+++ new/openresolv-3.14.1/configure 2025-03-28 20:35:30.000000000 +0100
@@ -39,7 +39,7 @@
--includedir) eval INCLUDEDIR="$INCLUDEDIR${INCLUDEDIR:+ }$var";;
--datadir|--infodir) ;; # ignore autotools
--disable-maintainer-mode|--disable-dependency-tracking) ;;
- --help) echo "See the README file for available options"; exit 0;;
+ --help) echo "See the source for available options"; exit 0;;
*) echo "$0: WARNING: unknown option $opt" >&2;;
esac
done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openresolv-3.13.2/libc.in new/openresolv-3.14.1/libc.in
--- old/openresolv-3.13.2/libc.in 2023-06-27 16:39:40.000000000 +0200
+++ new/openresolv-3.14.1/libc.in 2025-03-28 20:35:30.000000000 +0100
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright (c) 2007-2023 Roy Marples
+# Copyright (c) 2007-2025 Roy Marples
# All rights reserved
# libc subscriber for resolvconf
@@ -96,7 +96,7 @@
: ${resolv_conf:=/etc/resolv.conf}
: ${resolv_conf_tmp:="$resolv_conf.$$.openresolv"}
: ${libc_service:=nscd}
-: ${list_resolv:=@SBINDIR@/resolvconf -l}
+: ${list_resolv:=@SBINDIR@/resolvconf -L}
if [ "${resolv_conf_head-x}" = x ] && [ -f "$SYSCONFDIR"/resolv.conf.head ]
then
resolv_conf_head="$(cat "${SYSCONFDIR}"/resolv.conf.head)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openresolv-3.13.2/resolvconf.8.in new/openresolv-3.14.1/resolvconf.8.in
--- old/openresolv-3.13.2/resolvconf.8.in 2023-06-27 16:39:40.000000000 +0200
+++ new/openresolv-3.14.1/resolvconf.8.in 2025-03-28 20:35:30.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2007-2023 Roy Marples
+.\" Copyright (c) 2007-2025 Roy Marples
.\" All rights reserved
.\"
.\" Redistribution and use in source and binary forms, with or without
@@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd December 23, 2016
+.Dd March 24, 2025
.Dt RESOLVCONF 8
.Os
.Sh NAME
@@ -46,7 +46,7 @@
.Fl d Ar interface Ns Op Ar .protocol
.Nm
.Op Fl x
-.Fl il Ar pattern
+.Fl iLl Ar pattern
.Nm
.Fl u
.Nm
@@ -168,6 +168,17 @@
we have
.Pa resolv.conf
files for.
+.It Fl L Ar pattern
+List the
+.Pa resolv.conf
+files we have,
+post-processed by the
+.Xr resolvconf.conf 5
+configuration.
+If
+.Ar pattern
+is specified then we list the files for the interfaces and protocols
+that match it.
.It Fl l Ar pattern
List the
.Pa resolv.conf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openresolv-3.13.2/resolvconf.conf.5.in new/openresolv-3.14.1/resolvconf.conf.5.in
--- old/openresolv-3.13.2/resolvconf.conf.5.in 2023-06-27 16:39:40.000000000 +0200
+++ new/openresolv-3.14.1/resolvconf.conf.5.in 2025-03-28 20:35:30.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2009-2023 Roy Marples
+.\" Copyright (c) 2009-2025 Roy Marples
.\" All rights reserved
.\"
.\" Redistribution and use in source and binary forms, with or without
@@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd May 23, 2023
+.Dd March 24, 2025
.Dt RESOLVCONF.CONF 5
.Os
.Sh NAME
@@ -65,6 +65,19 @@
If set, only these interfaces will be processed.
.It Sy deny_interfaces
If set, these interfaces will not be processed.
+.It Sy exclude
+Is a space separated list of key/value pairs to match.
+If all key/value pairs in one element can be found in the file,
+then the whole file will be excluded from processing.
+The syntax is this:
+.Va $keyword Ns / Ns Va $match Ns Op / Ns Va $keyword Ns / Ns Va $match
+.Pp
+For example given this configuration:
+.Bd -compact -literal -offset indent
+exclude="search/foo*/nameserver/1.2.3.4 search/bar.org"
+.Ed
+Then any resolv.conf with both a search option starting with foo with a nameserver of 1.2.3.4
+OR a search option of bar.org would be excluded.
.It Sy interface_order
These interfaces will always be processed first.
If unset, defaults to the following:-
@@ -328,6 +341,8 @@
This file tells unbound about specific and global name servers.
.It Sy unbound_insecure
When set to YES, unbound marks the domains as insecure, thus ignoring DNSSEC.
+.It Sy unbound_private
+When set to YES, unbound marks the domains as private, allowing it and its subdomains to contain private addresses.
.It Sy unbound_forward_zone_options
Options appended to each forward zone.
Each option should be separated by an embedded new line.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openresolv-3.13.2/resolvconf.in new/openresolv-3.14.1/resolvconf.in
--- old/openresolv-3.13.2/resolvconf.in 2023-06-27 16:39:40.000000000 +0200
+++ new/openresolv-3.14.1/resolvconf.in 2025-03-28 20:35:30.000000000 +0100
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright (c) 2007-2023 Roy Marples
+# Copyright (c) 2007-2025 Roy Marples
# All rights reserved
# Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
RESOLVCONF="$0"
-OPENRESOLV_VERSION="3.13.2"
+OPENRESOLV_VERSION="3.14.1"
SYSCONFDIR=@SYSCONFDIR@
LIBEXECDIR=@LIBEXECDIR@
VARDIR=@VARDIR@
@@ -34,7 +34,7 @@
if [ "$1" = "--version" ]; then
echo "openresolv $OPENRESOLV_VERSION"
- echo "Copyright (c) 2007-2020 Roy Marples"
+ echo "Copyright (c) 2007-2025 Roy Marples"
exit 0
fi
@@ -48,6 +48,27 @@
interface_order="lo lo[0-9]*"
name_server_blacklist="0.0.0.0"
+# Poor mans cat
+# /usr might not be available
+cat()
+{
+ OIFS="$IFS"
+ IFS=''
+ if [ -n "$1" ]; then
+ while read -r line; do
+ printf "%s\n" "$line"
+ done < "$1"
+ else
+ while read -r line; do
+ printf "%s\n" "$line"
+ done
+ fi
+ retval=$?
+ IFS="$OIFS"
+ return $retval
+}
+
+
# Support original resolvconf configuration layout
# as well as the openresolv config file
if [ -f "$SYSCONFDIR"/resolvconf.conf ]; then
@@ -98,6 +119,7 @@
pattern
-l [\$PATTERN] Show DNS information, optionally from interfaces
that match the specified pattern
+ -L [\$PATTERN] Same as -l, but adjusted by our config
-u Run updates from our current DNS information
--version Echo the ${RESOLVCONF##*/} version
@@ -329,7 +351,7 @@
fi'
elif [ -x /usr/bin/s6-rc ] && [ -x /usr/bin/s6-svc ]; then
RESTARTCMD='
- if s6-rc -a list | grep -qFx $1-srv
+ if s6-rc -a list 2>/dev/null | grep -qFx $1-srv
then
s6-svc -r /run/service/$1-srv
fi'
@@ -434,12 +456,68 @@
return 1
}
+match()
+{
+ match="$1"
+ file="$2"
+ retval=1
+ count=0
+
+ while read -r keyword value; do
+ new_match=
+ for om in $match; do
+ m="$om"
+ keep=
+ while [ -n "$m" ]; do
+ k="${m%%/*}"
+ r="${m#*/}"
+ f="${r%%/*}"
+ r="${r#*/}"
+ # If the length of m is the same as k/f then
+ # we know that we are done
+ if [ ${#m} = $((${#k} + 1 + ${#f})) ]; then
+ r=
+ fi
+ m="$r"
+ matched=false
+ case "$keyword" in
+ $k)
+ case "$value" in
+ $f)
+ matched=true
+ ;;
+ esac
+ ;;
+ esac
+ if ! $matched; then
+ keep="$keep${keep:+/}$k/$f"
+ fi
+ done
+ if [ -n "$om" ] && [ -z "$keep" ]; then
+ retval=0
+ break 2
+ fi
+ new_match="${new_match}${new_match:+ }${keep}"
+ done
+ match="${new_match}"
+ done < "$file"
+ return $retval
+}
+
list_resolv()
{
[ -d "$IFACEDIR" ] || return 0
- cmd="$1"
- shift
+ list_cmd=
+ OPTIND=1
+ while getopts iLl OPT; do
+ case "$OPT" in
+ '?') exit 1;;
+ *) list_cmd="$OPT";;
+ esac
+ done
+ shift $(($OPTIND - 1))
+
pattern_specified="$1"
excl=false
@@ -540,7 +618,7 @@
continue
fi
- if ! $ALLIFACES; then
+ if [ "$list_cmd" = L ]; then
if [ -n "$allow_interfaces" ]; then
x=false
for j in $allow_interfaces; do
@@ -555,16 +633,20 @@
continue 2
fi
done
+
+ if [ -n "$exclude" ] && match "$exclude" "$i"; then
+ continue
+ fi
fi
- if [ "$cmd" = i ] || [ "$cmd" = "-i" ]; then
+ if [ "$list_cmd" = i ]; then
printf %s "$i "
else
echo_resolv "$i" && echo
fi
[ $? = 0 ] && [ "$retval" = 1 ] && retval=0
done
- [ "$cmd" = i ] || [ "$cmd" = "-i" ] && echo
+ [ "$list_cmd" = i ] && echo
return $retval
}
@@ -674,7 +756,7 @@
if [ -z "$VFLAG" ]; then
IF_EXCLUSIVE=1
list_resolv -i "$@" >/dev/null || IF_EXCLUSIVE=0
- eval "$(list_resolv -l "$@" | replace | parse_resolv)"
+ eval "$(list_resolv -L "$@" | replace | parse_resolv)"
fi
if [ -n "${name_servers_append}${search_domains_append}" ]; then
eval "$(echo_append | parse_resolv)"
@@ -724,7 +806,7 @@
force=false
VFLAG=
-while getopts a:C:c:Dd:fhIilm:pRruvVx OPT; do
+while getopts a:C:c:Dd:fhIiLlm:pRruvVx OPT; do
case "$OPT" in
f) force=true;;
h) usage;;
@@ -762,11 +844,14 @@
# -l lists our resolv files, optionally for a specific interface
if [ "$cmd" = l ] || [ "$cmd" = i ]; then
- ALLIFACES=true
- list_resolv "$cmd" "$args"
+ list_resolv "-$cmd" "$args"
exit $?
fi
-ALLIFACES=false
+# -L is the same as -l, but post-processed from our config
+if [ "$cmd" = L ]; then
+ list_resolv "-$cmd" "$args" | replace
+ exit $?2
+fi
# Restart a service or echo the command to restart a service
if [ "$cmd" = r ] || [ "$cmd" = R ]; then
@@ -1077,7 +1162,7 @@
eval "$(make_vars)"
export RESOLVCONF DOMAINS SEARCH NAMESERVERS LOCALNAMESERVERS
-: ${list_resolv:=list_resolv -l}
+: ${list_resolv:=list_resolv -L}
retval=0
# Run scripts in the same directory resolvconf is run from
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openresolv-3.13.2/unbound.in new/openresolv-3.14.1/unbound.in
--- old/openresolv-3.13.2/unbound.in 2023-06-27 16:39:40.000000000 +0200
+++ new/openresolv-3.14.1/unbound.in 2025-03-28 20:35:30.000000000 +0100
@@ -27,6 +27,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
unbound_insecure=
+unbound_private=
[ -f "@SYSCONFDIR@"/resolvconf.conf ] || exit 0
. "@SYSCONFDIR@/resolvconf.conf" || exit 1
@@ -42,12 +43,25 @@
for d in $DOMAINS; do
dn="${d%%:*}"
ns="${d#*:}"
+ create_unbound_insecure=false
+ create_unbound_private=false
case "$unbound_insecure" in
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
- newconf="$newconf${NL}server:$NL"
- newconf="$newconf domain-insecure: \"$dn\"$NL"
- ;;
+ create_unbound_insecure=true ;;
+ esac
+ case "$unbound_private" in
+ [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
+ create_unbound_private=true ;;
esac
+ if $create_unbound_insecure || $create_unbound_private; then
+ newconf="$newconf${NL}server:$NL"
+ if $create_unbound_insecure; then
+ newconf="$newconf domain-insecure: \"$dn\"$NL"
+ fi
+ if $create_unbound_private; then
+ newconf="$newconf private-domain: \"$dn\"$NL"
+ fi
+ fi
newconf="$newconf${NL}forward-zone:$NL name: \"$dn\"$NL"
if [ -n "$unbound_forward_zone_options" ]; then
newconf="$newconf $unbound_forward_zone_options${NL}"
1
0