openSUSE Commits
Threads by month
- ----- 2025 -----
- 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 2021
- 1 participants
- 2434 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package tpm-tools for openSUSE:Factory checked in at 2021-03-30 21:10:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tpm-tools (Old)
and /work/SRC/openSUSE:Factory/.tpm-tools.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tpm-tools"
Tue Mar 30 21:10:52 2021 rev:33 rq:876508 version:1.3.9.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/tpm-tools/tpm-tools.changes 2017-11-11 14:22:51.344054210 +0100
+++ /work/SRC/openSUSE:Factory/.tpm-tools.new.2401/tpm-tools.changes 2021-03-30 21:18:55.365851360 +0200
@@ -1,0 +2,8 @@
+Wed Mar 3 11:29:22 UTC 2021 - Matthias Gerstner <matthias.gerstner(a)suse.com>
+
+- upgrade to minor version 1.3.9.2:
+ - upstream now provide openssl 1.1 compatibility on their own
+- dropped 0001-Fix-build-against-OpenSSL-1.1.0.patch since the tarbal is now
+ compatible.
+
+-------------------------------------------------------------------
Old:
----
0001-Fix-build-against-OpenSSL-1.1.0.patch
tpm-tools-1.3.9.1.tar.gz
New:
----
tpm-tools-1.3.9.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tpm-tools.spec ++++++
--- /var/tmp/diff_new_pack.ma0FMa/_old 2021-03-30 21:18:56.617852276 +0200
+++ /var/tmp/diff_new_pack.ma0FMa/_new 2021-03-30 21:18:56.621852279 +0200
@@ -1,7 +1,7 @@
#
# spec file for package tpm-tools
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,18 +12,18 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define lib_name libtpm_unseal1
Name: tpm-tools
-Version: 1.3.9.1
+Version: 1.3.9.2
Release: 0
Summary: Trusted Platform Module (TPM) administration tools
License: IPL-1.0
Group: Productivity/Security
-Url: http://trousers.sourceforge.net/
+URL: http://trousers.sourceforge.net/
Source0: http://downloads.sourceforge.net/project/trousers/tpm-tools/%{version}/tpm-…
BuildRequires: autoconf
BuildRequires: automake
@@ -32,9 +32,6 @@
BuildRequires: openssl-devel
BuildRequires: trousers-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-# upstream has already got a pull request for this problem but didn't react
-# for some months... so this is my own patch to tackle the problem
-Patch0: 0001-Fix-build-against-OpenSSL-1.1.0.patch
%description
Trusted Computing is a set of specifications published by the Trusted
@@ -92,11 +89,10 @@
tpm-tools applications.
%prep
-%setup -q -c %{name}-%{version}
-%patch0 -p1
+%setup -q -n %{name}-%{version}
%build
-autoreconf -fiv
+sh bootstrap.sh
# Disable unused-but-set warnings with gcc >= 4.6
%configure \
--disable-static
++++++ tpm-tools-1.3.9.1.tar.gz -> tpm-tools-1.3.9.2.tar.gz ++++++
++++ 89932 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gocr for openSUSE:Factory checked in at 2021-03-30 21:10:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gocr (Old)
and /work/SRC/openSUSE:Factory/.gocr.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gocr"
Tue Mar 30 21:10:42 2021 rev:26 rq:876400 version:0.52
Changes:
--------
--- /work/SRC/openSUSE:Factory/gocr/gocr.changes 2019-10-14 12:43:44.062349995 +0200
+++ /work/SRC/openSUSE:Factory/.gocr.new.2401/gocr.changes 2021-03-30 21:18:50.953848130 +0200
@@ -1,0 +2,7 @@
+Sun Feb 28 04:20:51 UTC 2021 - Bernhard Wiedemann <bwiedemann(a)suse.com>
+
+- Do not use urandom for examples
+ to make package build reproducible (boo#1062303)
+- Drop FAKE_BUILDDATE because gcc already normalizes __DATE__
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gocr.spec ++++++
--- /var/tmp/diff_new_pack.QyHnnf/_old 2021-03-30 21:18:51.757848719 +0200
+++ /var/tmp/diff_new_pack.QyHnnf/_new 2021-03-30 21:18:51.761848722 +0200
@@ -57,9 +57,13 @@
# Fix rpmlint warning "hidden-file-or-dir"
rm -f examples/.#Makefile.1.22
-# Remove build time references so build-compare can do its work (fix rpmlint warning "file-contains-current-date")
-FAKE_BUILDDATE=$(LC_ALL=C date -u -r %{_sourcedir}/%{name}.changes '+%%b %%e %%Y')
-sed -i "s/__DATE__/\"$FAKE_BUILDDATE\"/" src/gocr.c
+# Do not use urandom for examples to make package build reproducible (boo#1062303)
+cat > examples/rnd80.png.txt <<EOF
+/yErGfRT8Wwbrmrs4EGybmpgVy5au84ELYsFXxMnHCuKTnkRWKI6qGTjCXwCE/ixGYfMyw8Rki4u
+J0IBpx2IQZG1bKy7HG+6XlD+3lnU3+NYiSfdAxK9p3yEpCXa2VEakQXPkuVWQ1b010TonIAtAS23
+TQgnj2Gq+C9is6KQkK9kMcS3UDoWHYaJDzukARATW3XFcd9WvXzuCl6Cb5KTo/ed2ZbEdLA/rJbu
+LBso89YtC4nv+Ltxmb/AB0E4wtQZWeYISVNB3oBqiQZIPEHuAW/vvS664zrge3MS08E1jn8HzBPe
+EOF
%build
# configure does not check if netpbm headers are installed in /usr/include/netpbm
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package xaos for openSUSE:Factory checked in at 2021-03-30 21:10:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xaos (Old)
and /work/SRC/openSUSE:Factory/.xaos.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xaos"
Tue Mar 30 21:10:31 2021 rev:24 rq:876390 version:4.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/xaos/xaos.changes 2018-09-14 00:03:25.133860800 +0200
+++ /work/SRC/openSUSE:Factory/.xaos.new.2401/xaos.changes 2021-03-30 21:18:47.421845546 +0200
@@ -1,0 +2,22 @@
+Sat Feb 27 11:06:27 UTC 2021 - antoine.belvire(a)opensuse.org
+
+- Bump Qt minimal required version to 5.7: Code references
+ QLocale::DefaultNumberOptions which does not exist before 5.7.
+
+-------------------------------------------------------------------
+Thu Feb 25 21:53:28 UTC 2021 - antoine.belvire(a)opensuse.org
+
+- Update to version 4.2.1:
+ * A lot of changes happened since 3.6.
+ * Notably UI is now based on Qt.
+ * See installed NEWS file for details.
+- Drop obsolete patches:
+ * xaos-3.5-strip.patch
+ * fix-prototypes.diff
+ * xaos-fix-implicit-decl.patch
+- Drop obsolete sources:
+ * xaos.desktop
+ * xaos.png
+ * xaos.sh
+
+-------------------------------------------------------------------
Old:
----
fix-prototypes.diff
xaos-3.5-strip.patch
xaos-3.6.tar.gz
xaos-fix-implicit-decl.patch
xaos.desktop
xaos.png
xaos.sh
New:
----
xaos-4.2.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xaos.spec ++++++
--- /var/tmp/diff_new_pack.yXDnRP/_old 2021-03-30 21:18:48.737846509 +0200
+++ /var/tmp/diff_new_pack.yXDnRP/_new 2021-03-30 21:18:48.741846512 +0200
@@ -1,7 +1,7 @@
#
# spec file for package xaos
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,37 +12,23 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+%define alt_name XaoS
Name: xaos
-Version: 3.6
+Version: 4.2.1
Release: 0
Summary: Powerful fractal generator
License: GPL-2.0-or-later
Group: Amusements/Toys/Graphics
-Url: http://matek.hu/xaos/doku.php
-Source: http://sourceforge.net/projects/xaos/files/XaoS/%{version}/%{name}-%{versio…
-Source1: %{name}.desktop
-Source2: %{name}.sh
-Source3: %{name}.png
-Patch0: %{name}-3.5-strip.patch
-Patch1: fix-prototypes.diff
-Patch2: xaos-fix-implicit-decl.patch
-BuildRequires: aalib-devel
-BuildRequires: dos2unix
-BuildRequires: fdupes
-BuildRequires: gsl-devel
-BuildRequires: libpng-devel
-BuildRequires: update-desktop-files
-BuildRequires: pkgconfig(x11)
-BuildRequires: pkgconfig(xext)
-Requires(post): %install_info_prereq
-Requires(preun): %install_info_prereq
-Provides: XaoS
-Recommends: %{name}-lang
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+URL: https://xaos-project.github.io
+Source0: https://github.com/xaos-project/XaoS/archive/release-%{version}/%{name}-%{v…
+BuildRequires: libQt5Widgets-devel >= 5.7
+BuildRequires: libqt5-linguist
+BuildRequires: libqt5-qtbase-common-devel
+Provides: %{alt_name}
%description
XaoS is a fast portable real-time interactive fractal zoomer. It
@@ -52,49 +38,38 @@
In addition, switching between Julia and Mandelbrot fractal types and
displaying planes is provided.
-%lang_package
-
%prep
-%setup -q
-%patch0
-%patch1 -p1
-%patch2 -p1
+%setup -q -n XaoS-release-%{version}
%build
-# convert all xpf-files to UNIX format
-find examples/ -iname "*.xpf" -exec dos2unix {} \;
-export CFLAGS="%optflags -fno-strict-aliasing"
-%configure --with-svga-driver=no
-make %{?_smp_mflags}
+%qmake5
+%make_build STRIP=:
%install
-mkdir -p %{buildroot}/%{_infodir}
-%make_install
-mv %{buildroot}%{_bindir}/xaos %{buildroot}%{_bindir}/xaos.bin
-install -m 755 %{SOURCE2} %{buildroot}%{_bindir}/xaos
-chmod 755 %{buildroot}%{_bindir}/xaos
-chmod 755 %{buildroot}%{_bindir}/xaos.bin
-%suse_update_desktop_file -i %{name} Education Math
-install -D -m 0644 %{SOURCE3} %{buildroot}%{_datadir}/pixmaps/%{name}.png
-%find_lang %{name}
-%fdupes %{buildroot}
-
-%post
-%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
+# Empty install target generated by qmake => install files manually
+# Binary
+install -D --mode 0755 --target-directory %{buildroot}%{_bindir} bin/%{name}
+
+# Data; Datapath forced to %%{alt_name} (not configurable)
+install -D --mode 0644 --target-directory %{buildroot}%{_datadir}/%{alt_name}/catalogs catalogs/*.cat
+cp --archive examples tutorial %{buildroot}%{_datadir}/%{alt_name}
+
+# Icon, .desktop, AppData
+install -D --mode 0644 --target-directory %{buildroot}%{_datadir}/metainfo xdg/%{name}.appdata.xml
+install -D --mode 0644 --target-directory %{buildroot}%{_datadir}/applications xdg/%{name}.desktop
+install -D --mode 0644 --target-directory %{buildroot}%{_datadir}/pixmaps xdg/%{name}.png
-%preun
-%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
+# Man
+install -D --mode 0644 --target-directory %{buildroot}%{_mandir}/man6 doc/%{name}.6
%files
-%defattr(-,root,root)
-%doc %{_infodir}/xaos.info.*
-%doc %{_mandir}/man6/xaos.6.*
-%{_bindir}/xaos
-%{_bindir}/xaos.bin
+%doc CREDITS.md NEWS doc/README
+%license COPYING
+%{_bindir}/%{name}
+%{_datadir}/%{alt_name}
%{_datadir}/applications/%{name}.desktop
+%{_datadir}/metainfo/%{name}.appdata.xml
%{_datadir}/pixmaps/%{name}.png
-%{_datadir}/XaoS/
-
-%files lang -f %{name}.lang
+%{_mandir}/man6/%{name}.6%{?ext_man}
%changelog
++++++ xaos-3.6.tar.gz -> xaos-4.2.1.tar.gz ++++++
/work/SRC/openSUSE:Factory/xaos/xaos-3.6.tar.gz /work/SRC/openSUSE:Factory/.xaos.new.2401/xaos-4.2.1.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ulfius for openSUSE:Factory checked in at 2021-03-30 21:10:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ulfius (Old)
and /work/SRC/openSUSE:Factory/.ulfius.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ulfius"
Tue Mar 30 21:10:17 2021 rev:19 rq:878562 version:2.7.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/ulfius/ulfius.changes 2021-01-04 19:08:45.183351673 +0100
+++ /work/SRC/openSUSE:Factory/.ulfius.new.2401/ulfius.changes 2021-03-30 21:18:40.921840789 +0200
@@ -1,0 +2,15 @@
+Thu Mar 11 17:03:17 UTC 2021 - Martin Hauke <mardnh(a)gmx.de>
+
+- Adjust BR: liborcania >= 2.1.1 is needed.
+
+-------------------------------------------------------------------
+Sat Mar 6 11:49:59 UTC 2021 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 2.7.2
+ * Fix post processor on multiple values with the same key.
+ * Add missing check includes if tests are built.
+ * Add option U_OPT_HTTP_URL_APPEND to
+ ulfius_set_request_properties
+ * Use ulfius_set_request_properties in example programs
+
+-------------------------------------------------------------------
Old:
----
ulfius-2.7.1.tar.gz
New:
----
ulfius-2.7.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ulfius.spec ++++++
--- /var/tmp/diff_new_pack.QSALiR/_old 2021-03-30 21:18:41.629841307 +0200
+++ /var/tmp/diff_new_pack.QSALiR/_new 2021-03-30 21:18:41.633841310 +0200
@@ -20,7 +20,7 @@
%define _lto_cflags %{nil}
%define sover 2_7
Name: ulfius
-Version: 2.7.1
+Version: 2.7.2
Release: 0
Summary: Web Framework for REST Applications in C
License: MIT
@@ -31,10 +31,10 @@
BuildRequires: gcc-c++
BuildRequires: pkgconfig
BuildRequires: pkgconfig(gnutls)
-BuildRequires: pkgconfig(jansson) >= 2.4
+BuildRequires: pkgconfig(jansson) >= 2.1
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.51
-BuildRequires: pkgconfig(liborcania) >= 2.1.0
+BuildRequires: pkgconfig(liborcania) >= 2.1.1
BuildRequires: pkgconfig(libyder) >= 1.4.12
BuildRequires: pkgconfig(zlib)
++++++ ulfius-2.7.1.tar.gz -> ulfius-2.7.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/API.md new/ulfius-2.7.2/API.md
--- old/ulfius-2.7.1/API.md 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/API.md 2021-03-02 01:02:22.000000000 +0100
@@ -175,6 +175,7 @@
* port: port number to listen to
* network_type: Listen to ipv4 and or ipv6 connections, values available are U_USE_ALL, U_USE_IPV4 or U_USE_IPV6
* bind_address: ipv4 address to listen to (optional)
+ * bind_address6: ipv6 address to listen to (optional)
* timeout: Timeout to close the connection because of inactivity between the client and the server
* nb_endpoints: Number of available endpoints
* default_auth_realm: Default realm on authentication error
@@ -269,6 +270,8 @@
Since Ulfius 2.6, you can bind to IPv4 connections, IPv6 or both. By default, `ulfius_init_instance` binds to IPv4 addresses only. If you want to bind to both IPv4 and IPv6 addresses, use `ulfius_init_instance_ipv6` with the value parameter `network_type` set to `U_USE_ALL`. If you want to bind to IPv6 addresses only, use `ulfius_init_instance_ipv6` with the value parameter `network_type` set to `U_USE_IPV6`.
+If you bind your instance to an address, you **MUST** set the port number to `struct sockaddr_in.sport` because the `struct _u_instance.port` will be ignored.
+
### Endpoint structure <a name="endpoint-structure"></a>
The `struct _u_endpoint` is defined as:
@@ -663,6 +666,7 @@
| U_OPT_NONE | Empty option to complete a ulfius_set_request_properties or ulfius_set_request_properties |
| U_OPT_HTTP_VERB | http method (GET, POST, PUT, DELETE, etc.), expected option value type: const char * |
| U_OPT_HTTP_URL | full URL used to call this callback function or full URL to call when used in a ulfius_send_http_request, expected option value type: const char * |
+| U_OPT_HTTP_URL_APPEND | append char * value to the current url, expected option value type: const char * |
| U_OPT_HTTP_PROXY | proxy address to use for outgoing connections, used by ulfius_send_http_request, expected option value type: const char * |
| U_OPT_NETWORK_TYPE | Force connect to IPv4, IPv6 addresses or both, values available are U_USE_ALL, U_USE_IPV4 or U_USE_IPV6, expected option value type: unsigned short |
| U_OPT_CHECK_SERVER_CERTIFICATE | check server certificate and hostname, default true, used by ulfius_send_http_request, expected option value type: int |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/CHANGELOG.md new/ulfius-2.7.2/CHANGELOG.md
--- old/ulfius-2.7.1/CHANGELOG.md 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/CHANGELOG.md 2021-03-02 01:02:22.000000000 +0100
@@ -1,5 +1,13 @@
# Ulfius Changelog
+## 2.7.2
+
+- Fix post processor on multiple values with the same key (Thanks Oliv3)
+- Fix certificate generation on MacOS (Thanks @valera-rozuvan)
+- Add missing check includes if tests are built (Thanks @valera-rozuvan)
+- Add option `U_OPT_HTTP_URL_APPEND` to `ulfius_set_request_properties`
+- Use `ulfius_set_request_properties` in example programs
+
## 2.7.1
- Fix websocket protocol and extension management bug, thanks to Olivier Girondel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/CMakeLists.txt new/ulfius-2.7.2/CMakeLists.txt
--- old/ulfius-2.7.1/CMakeLists.txt 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/CMakeLists.txt 2021-03-02 01:02:22.000000000 +0100
@@ -4,7 +4,7 @@
# CMake file used to build all programs
#
# Copyright 2018 Silvio Clecio <silvioprog(a)gmail.com>
-# Copyright 2018-2020 Nicolas Mora <mail(a)babelouest.org>
+# Copyright 2018-2021 Nicolas Mora <mail(a)babelouest.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the MIT License
@@ -30,7 +30,7 @@
set(PROJECT_BUGREPORT_PATH "https://github.com/babelouest/ulfius/issues")
set(LIBRARY_VERSION_MAJOR "2")
set(LIBRARY_VERSION_MINOR "7")
-set(LIBRARY_VERSION_PATCH "1")
+set(LIBRARY_VERSION_PATCH "2")
set(PROJECT_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}")
set(PROJECT_VERSION_MAJOR ${LIBRARY_VERSION_MAJOR})
@@ -56,8 +56,8 @@
set(LIBRARY_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}")
set(LIBRARY_SOVERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}")
-set(ORCANIA_VERSION_REQUIRED "2.1.1")
-set(YDER_VERSION_REQUIRED "1.4.12")
+set(ORCANIA_VERSION_REQUIRED "2.2.0")
+set(YDER_VERSION_REQUIRED "1.4.13")
set(JANSSON_VERSION_REQUIRED "2.1")
# cmake modules
@@ -114,6 +114,7 @@
find_package(GnuTLS REQUIRED)
if (GNUTLS_FOUND)
set(LIBS ${LIBS} ${GNUTLS_LIBRARIES})
+ include_directories(${GNUTLS_INCLUDE_DIRS})
endif ()
endif ()
@@ -370,11 +371,12 @@
set(TST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test)
set(LIBS ulfius ${LIBS} ${CHECK_LIBRARIES})
+ include_directories(${CHECK_INCLUDE_DIRS})
if (NOT WIN32)
find_package(Threads REQUIRED)
set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT} m)
endif ()
- if (NOT APPLE)
+ if (NOT APPLE)
set(LIBS ${LIBS} rt)
endif ()
if (NOT WIN32 AND NOT APPLE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/README.md new/ulfius-2.7.2/README.md
--- old/ulfius-2.7.1/README.md 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/README.md 2021-03-02 01:02:22.000000000 +0100
@@ -115,8 +115,9 @@
## Projects using Ulfius framework
-- [Angharad](https://github.com/babelouest/angharad), House automation system for ZWave and other types of devices
- [Glewlwyd](https://github.com/babelouest/glewlwyd), a lightweight SSO server that provides OAuth2 and OpenID Connect authentication protocols
+- [Le Biniou](https://biniou.net/), user-friendly yet powerful music visualization / VJing tool
+- [Angharad](https://github.com/babelouest/angharad), House automation system for ZWave and other types of devices
- [Hutch](https://github.com/babelouest/hutch), a safe locker for passwords and other secrets, using JavaScript client side encryption only
- [Taliesin](https://github.com/babelouest/taliesin), a lightweight audio streaming server
- [Taulas Raspberry Pi Serial interface](https://github.com/babelouest/taulas/tree/master/taulas_raspberr…, an interface for Arduino devices that implement [Taulas](https://github.com/babelouest/taulas/) protocol, a house automation protocol for Angharad
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/example_programs/auth_example/auth_client.c new/ulfius-2.7.2/example_programs/auth_example/auth_client.c
--- old/ulfius-2.7.1/example_programs/auth_example/auth_client.c 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/example_programs/auth_example/auth_client.c 2021-03-02 01:02:22.000000000 +0100
@@ -5,7 +5,7 @@
* This example program send several requests to describe
* the function ulfius_request_http behaviour
*
- * Copyright 2015-2017 Nicolas Mora <mail(a)babelouest.org>
+ * Copyright 2015-2021 Nicolas Mora <mail(a)babelouest.org>
*
* License MIT
*
@@ -63,36 +63,49 @@
if (argc <= 2) {
#endif
ulfius_init_request(&req_list[0]);
- req_list[0].http_verb = o_strdup("GET");
- req_list[0].http_url = o_strdup(SERVER_URL);
+ ulfius_set_request_properties(&req_list[0],
+ U_OPT_HTTP_VERB, "GET",
+ U_OPT_HTTP_URL, SERVER_URL,
+ U_OPT_NONE); // Required to close the parameters list
ulfius_init_request(&req_list[1]);
- req_list[1].http_verb = o_strdup("GET");
- req_list[1].http_url = o_strdup(SERVER_URL);
- req_list[1].auth_basic_user = o_strdup("test");
- req_list[1].auth_basic_password = o_strdup("testpassword");
+ ulfius_set_request_properties(&req_list[1],
+ U_OPT_HTTP_VERB, "GET",
+ U_OPT_HTTP_URL, SERVER_URL,
+ U_OPT_AUTH_BASIC_USER, "test",
+ U_OPT_AUTH_BASIC_PASSWORD, "testpassword",
+ U_OPT_NONE); // Required to close the parameters list
ulfius_init_request(&req_list[2]);
- req_list[2].http_verb = o_strdup("GET");
- req_list[2].http_url = o_strdup(SERVER_URL);
- req_list[2].auth_basic_user = o_strdup("test");
- req_list[2].auth_basic_password = o_strdup("wrongpassword");
+ ulfius_set_request_properties(&req_list[2],
+ U_OPT_HTTP_VERB, "GET",
+ U_OPT_HTTP_URL, SERVER_URL,
+ U_OPT_AUTH_BASIC_USER, "test",
+ U_OPT_AUTH_BASIC_PASSWORD, "wrongpassword",
+ U_OPT_NONE); // Required to close the parameters list
ulfius_init_request(&req_list[3]);
- req_list[3].http_verb = o_strdup("GET");
- req_list[3].http_url = o_strdup(SERVER_URL "/404");
+ ulfius_set_request_properties(&req_list[3],
+ U_OPT_HTTP_VERB, "GET",
+ U_OPT_HTTP_URL, SERVER_URL,
+ U_OPT_HTTP_URL_APPEND, "/404",
+ U_OPT_NONE); // Required to close the parameters list
ulfius_init_request(&req_list[4]);
- req_list[4].http_verb = o_strdup("GET");
- req_list[4].http_url = o_strdup(SERVER_URL_DEFAULT);
- req_list[4].auth_basic_user = o_strdup("test");
- req_list[4].auth_basic_password = o_strdup("testpassword");
+ ulfius_set_request_properties(&req_list[4],
+ U_OPT_HTTP_VERB, "GET",
+ U_OPT_HTTP_URL, SERVER_URL_DEFAULT,
+ U_OPT_AUTH_BASIC_USER, "test",
+ U_OPT_AUTH_BASIC_PASSWORD, "testpassword",
+ U_OPT_NONE); // Required to close the parameters list
ulfius_init_request(&req_list[5]);
- req_list[5].http_verb = o_strdup("GET");
- req_list[5].http_url = o_strdup(SERVER_URL_DEFAULT);
- req_list[5].auth_basic_user = o_strdup("test");
- req_list[5].auth_basic_password = o_strdup("wrongpassword");
+ ulfius_set_request_properties(&req_list[5],
+ U_OPT_HTTP_VERB, "GET",
+ U_OPT_HTTP_URL, SERVER_URL_DEFAULT,
+ U_OPT_AUTH_BASIC_USER, "test",
+ U_OPT_AUTH_BASIC_PASSWORD, "wrongpassword",
+ U_OPT_NONE); // Required to close the parameters list
printf("Press <enter> to run auth tests no authentication\n");
getchar();
@@ -168,12 +181,14 @@
#ifndef U_DISABLE_GNUTLS
} else {
ulfius_init_request(&req_list[0]);
- req_list[0].http_verb = o_strdup("GET");
- req_list[0].http_url = o_strdup(SERVER_URL_CLIENT_CERT);
- req_list[0].check_server_certificate = 0;
- req_list[0].client_cert_file = o_strdup(argv[1]);
- req_list[0].client_key_file = o_strdup(argv[2]);
- req_list[0].client_key_password = argc>=4?o_strdup(argv[3]):NULL;
+ ulfius_set_request_properties(&req_list[0],
+ U_OPT_HTTP_VERB, "GET",
+ U_OPT_HTTP_URL, SERVER_URL_CLIENT_CERT,
+ U_OPT_CHECK_SERVER_CERTIFICATE, 0,
+ U_OPT_CLIENT_CERT_FILE, argv[1],
+ U_OPT_CLIENT_KEY_FILE, argv[2],
+ U_OPT_CLIENT_KEY_PASSWORD, argc>=4?argv[3]:NULL,
+ U_OPT_NONE); // Required to close the parameters list
printf("Press <enter> to run client certificate authentication test\n");
getchar();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/example_programs/request_example/client.c new/ulfius-2.7.2/example_programs/request_example/client.c
--- old/ulfius-2.7.1/example_programs/request_example/client.c 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/example_programs/request_example/client.c 2021-03-02 01:02:22.000000000 +0100
@@ -5,7 +5,7 @@
* This example program send several requests to describe
* the function ulfius_request_http behaviour
*
- * Copyright 2015-2017 Nicolas Mora <mail(a)babelouest.org>
+ * Copyright 2015-2021 Nicolas Mora <mail(a)babelouest.org>
*
* License MIT
*
@@ -62,26 +62,11 @@
int main (int argc, char **argv) {
- struct _u_map headers, url_params, post_params, req_headers;
char * string_body = "param1=one¶m2=two";
json_t * json_body = json_object();
struct _u_response response;
int res;
- u_map_init(&headers);
-
- u_map_init(&url_params);
- u_map_put(&url_params, "test", "one");
- u_map_put(&url_params, "other_test", "two");
-
- u_map_init(&post_params);
- u_map_put(&post_params, "third_test", "three");
- u_map_put(&post_params, "fourth_test", "four");
- u_map_put(&post_params, "extreme_test", "Here ! are %9_ some $ ��\\)]= special ch��ra��ters");
-
- u_map_init(&req_headers);
- u_map_put(&req_headers, "Content-Type", MHD_HTTP_POST_ENCODING_FORM_URLENCODED);
-
json_object_set_new(json_body, "param1", json_string("one"));
json_object_set_new(json_body, "param2", json_string("two"));
@@ -96,59 +81,87 @@
ulfius_init_request(&req_list[7]);
// Parameters in url
- req_list[0].http_verb = o_strdup("GET");
- req_list[0].http_url = o_strdup(SERVER_URL_PREFIX "/get/");
- req_list[0].timeout = 20;
- u_map_copy_into(req_list[0].map_url, &url_params);
+ ulfius_set_request_properties(&req_list[0],
+ U_OPT_HTTP_VERB, "GET",
+ U_OPT_HTTP_URL, SERVER_URL_PREFIX,
+ U_OPT_HTTP_URL_APPEND, "/get/",
+ U_OPT_TIMEOUT, 20,
+ U_OPT_URL_PARAMETER, "test", "one",
+ U_OPT_URL_PARAMETER, "other_test", "two",
+ U_OPT_NONE); // Required to close the parameters list
// No parameters
- req_list[1].http_verb = o_strdup("DELETE");
- req_list[1].http_url = o_strdup(SERVER_URL_PREFIX "/delete/");
- req_list[1].timeout = 20;
+ ulfius_set_request_properties(&req_list[1],
+ U_OPT_HTTP_VERB, "DELETE",
+ U_OPT_HTTP_URL, SERVER_URL_PREFIX,
+ U_OPT_HTTP_URL_APPEND, "/delete/",
+ U_OPT_TIMEOUT, 20,
+ U_OPT_NONE); // Required to close the parameters list
// Parameters in post_map and string_body
- req_list[2].http_verb = o_strdup("POST");
- req_list[2].http_url = o_strdup(SERVER_URL_PREFIX "/post/param/");
- req_list[2].timeout = 20;
- u_map_copy_into(req_list[2].map_post_body, &post_params);
- req_list[2].binary_body = o_strdup(string_body);
- req_list[2].binary_body_length = o_strlen(string_body);
+ ulfius_set_request_properties(&req_list[2],
+ U_OPT_HTTP_VERB, "POST",
+ U_OPT_HTTP_URL, SERVER_URL_PREFIX,
+ U_OPT_HTTP_URL_APPEND, "/post/param/",
+ U_OPT_TIMEOUT, 20,
+ U_OPT_BINARY_BODY, string_body, o_strlen(string_body),
+ U_OPT_POST_BODY_PARAMETER, "third_test", "three",
+ U_OPT_POST_BODY_PARAMETER, "fourth_test", "four",
+ U_OPT_POST_BODY_PARAMETER, "extreme_test", "Here ! are %9_ some $ ��\\)]= special ch��ra��ters",
+ U_OPT_NONE); // Required to close the parameters list
// Paremeters in string body, header MHD_HTTP_POST_ENCODING_FORM_URLENCODED
- req_list[3].http_verb = o_strdup("POST");
- req_list[3].http_url = o_strdup(SERVER_URL_PREFIX "/post/plain/");
- req_list[3].timeout = 20;
- u_map_copy_into(req_list[3].map_header, &req_headers);
- req_list[3].binary_body = o_strdup(string_body);
- req_list[3].binary_body_length = o_strlen(string_body);
+ ulfius_set_request_properties(&req_list[3],
+ U_OPT_HTTP_VERB, "POST",
+ U_OPT_HTTP_URL, SERVER_URL_PREFIX,
+ U_OPT_HTTP_URL_APPEND, "/post/plain/",
+ U_OPT_TIMEOUT, 20,
+ U_OPT_BINARY_BODY, string_body, o_strlen(string_body),
+ U_OPT_HEADER_PARAMETER, "Content-Type", MHD_HTTP_POST_ENCODING_FORM_URLENCODED,
+ U_OPT_NONE); // Required to close the parameters list
// Parameters in json_body
- req_list[4].http_verb = o_strdup("POST");
- req_list[4].http_url = o_strdup(SERVER_URL_PREFIX "/post/json/");
- req_list[4].timeout = 20;
- u_map_copy_into(req_list[4].map_url, &url_params);
- ulfius_set_json_body_request(&req_list[4], json_body);
+ ulfius_set_request_properties(&req_list[4],
+ U_OPT_HTTP_VERB, "POST",
+ U_OPT_HTTP_URL, SERVER_URL_PREFIX,
+ U_OPT_HTTP_URL_APPEND, "/post/json/",
+ U_OPT_TIMEOUT, 20,
+ U_OPT_JSON_BODY, json_body,
+ U_OPT_URL_PARAMETER, "test", "one",
+ U_OPT_URL_PARAMETER, "other_test", "two",
+ U_OPT_NONE); // Required to close the parameters list
// Paremeters in string body, header MHD_HTTP_POST_ENCODING_FORM_URLENCODED
- req_list[5].http_verb = o_strdup("PUT");
- req_list[5].http_url = o_strdup(SERVER_URL_PREFIX "/put/plain/");
- req_list[5].timeout = 20;
- u_map_copy_into(req_list[5].map_header, &req_headers);
- req_list[5].binary_body = o_strdup(string_body);
- req_list[5].binary_body_length = o_strlen(string_body);
+ ulfius_set_request_properties(&req_list[5],
+ U_OPT_HTTP_VERB, "PUT",
+ U_OPT_HTTP_URL, SERVER_URL_PREFIX,
+ U_OPT_HTTP_URL_APPEND, "/put/plain/",
+ U_OPT_TIMEOUT, 20,
+ U_OPT_BINARY_BODY, string_body, o_strlen(string_body),
+ U_OPT_HEADER_PARAMETER, "Content-Type", MHD_HTTP_POST_ENCODING_FORM_URLENCODED,
+ U_OPT_NONE); // Required to close the parameters list
// Parameters in json_body
- req_list[6].http_verb = o_strdup("PUT");
- req_list[6].http_url = o_strdup(SERVER_URL_PREFIX "/put/json/");
- req_list[6].timeout = 20;
- u_map_copy_into(req_list[6].map_url, &url_params);
- ulfius_set_json_body_request(&req_list[6], json_body);
+ ulfius_set_request_properties(&req_list[6],
+ U_OPT_HTTP_VERB, "PUT",
+ U_OPT_HTTP_URL, SERVER_URL_PREFIX,
+ U_OPT_HTTP_URL_APPEND, "/put/json/",
+ U_OPT_TIMEOUT, 20,
+ U_OPT_JSON_BODY, json_body,
+ U_OPT_URL_PARAMETER, "test", "one",
+ U_OPT_URL_PARAMETER, "other_test", "two",
+ U_OPT_NONE); // Required to close the parameters list
// Parameters in post_map
- req_list[7].http_verb = o_strdup("POST");
- req_list[7].http_url = o_strdup(SERVER_URL_PREFIX "/post/param/");
- req_list[7].timeout = 20;
- u_map_copy_into(req_list[6].map_post_body, &post_params);
+ ulfius_set_request_properties(&req_list[7],
+ U_OPT_HTTP_VERB, "POST",
+ U_OPT_HTTP_URL, SERVER_URL_PREFIX,
+ U_OPT_HTTP_URL_APPEND, "/post/param/",
+ U_OPT_TIMEOUT, 20,
+ U_OPT_POST_BODY_PARAMETER, "third_test", "three",
+ U_OPT_POST_BODY_PARAMETER, "fourth_test", "four",
+ U_OPT_POST_BODY_PARAMETER, "extreme_test", "Here ! are %9_ some $ ��\\)]= special ch��ra��ters",
+ U_OPT_NONE); // Required to close the parameters list
printf("Press <enter> to run get test\n");
getchar();
@@ -246,10 +259,6 @@
printf("Press <enter> to quit test\n");
getchar();
json_decref(json_body);
- u_map_clean(&headers);
- u_map_clean(&url_params);
- u_map_clean(&post_params);
- u_map_clean(&req_headers);
ulfius_clean_request(&req_list[0]);
ulfius_clean_request(&req_list[1]);
ulfius_clean_request(&req_list[2]);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/example_programs/sheep_counter/README.md new/ulfius-2.7.2/example_programs/sheep_counter/README.md
--- old/ulfius-2.7.1/example_programs/sheep_counter/README.md 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/example_programs/sheep_counter/README.md 2021-03-02 01:02:22.000000000 +0100
@@ -12,7 +12,7 @@
### Sheep counter
-Open in your browser the url [http://localhost:7437/index.html](http://localhost:7437/index.html), it's a jquery application that will count and display sheeps to help you fall asleep. There click on the buttons available to call the underline API.
+Open in your browser the url [http://localhost:7437/static/index.html](http://localhost:7437/static/index…, it's a jquery application that will count and display sheeps to help you fall asleep. There click on the buttons available to call the underline API.
The API endpoints are the following:
@@ -22,8 +22,16 @@
### File upload
-Open in your browser the url [http://localhost:7437/upload.html](http://localhost:7437/upload.html), there upload a file, preferably not a big one, then click on the `Upload File` button.
+Open in your browser the url [http://localhost:7437/static/upload.html](http://localhost:7437/static/uplo…, there upload a file, preferably not a big one, then click on the `Upload File` button.
The API endpoint is the following:
- `http://localhost:7437/upload`: upload a file and show informations about it in the response.
+
+### Form POST
+
+Open in your browser the url [http://localhost:7437/static/form.html](http://localhost:7437/static/form.h…, there enter values in the input, then click on the `send form` button. The console will display the form parameters.
+
+The API endpoint is the following:
+
+- `http://localhost:7437/static/submit`: submit a form and show informations about it in the response.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/example_programs/sheep_counter/sheep_counter.c new/ulfius-2.7.2/example_programs/sheep_counter/sheep_counter.c
--- old/ulfius-2.7.1/example_programs/sheep_counter/sheep_counter.c 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/example_programs/sheep_counter/sheep_counter.c 2021-03-02 01:02:22.000000000 +0100
@@ -123,11 +123,12 @@
*/
static int callback_upload_file (const struct _u_request * request, struct _u_response * response, void * user_data) {
char * url_params = print_map(request->map_url), * headers = print_map(request->map_header), * cookies = print_map(request->map_cookie),
- * post_params = print_map(request->map_post_body);
+ * post_params = print_map(request->map_post_body);
char * string_body = msprintf("Upload file\n\n method is %s\n url is %s\n\n parameters from the url are \n%s\n\n cookies are \n%s\n\n headers are \n%s\n\n post parameters are \n%s\n\n",
request->http_verb, request->http_url, url_params, cookies, headers, post_params);
- ulfius_set_string_body_response(response, 200, string_body);
+ y_log_message(Y_LOG_LEVEL_DEBUG, "Post parameters:\n%s", post_params);
+ y_log_message(Y_LOG_LEVEL_DEBUG, "URL parameters:\n%s", url_params);
o_free(url_params);
o_free(headers);
o_free(cookies);
@@ -137,6 +138,20 @@
}
/**
+ * Submit a form
+ */
+static int callback_form_submit (const struct _u_request * request, struct _u_response * response, void * user_data) {
+ char * post_params = print_map(request->map_post_body),
+ * url_params = print_map(request->map_url);
+ y_log_message(Y_LOG_LEVEL_DEBUG, "Post parameters:\n%s", post_params);
+ y_log_message(Y_LOG_LEVEL_DEBUG, "URL parameters:\n%s", url_params);
+ o_free(post_params);
+ o_free(url_params);
+ ulfius_set_string_body_response(response, 200, "Form submitted");
+ return U_CALLBACK_CONTINUE;
+}
+
+/**
* File upload callback function
*/
static int file_upload_callback (const struct _u_request * request,
@@ -200,7 +215,8 @@
ulfius_add_endpoint_by_val(&instance, "PUT", PREFIX, NULL, 1, &callback_sheep_counter_add, &nb_sheep);
ulfius_add_endpoint_by_val(&instance, "DELETE", PREFIX, NULL, 1, &callback_sheep_counter_reset, &nb_sheep);
ulfius_add_endpoint_by_val(&instance, "*", PREFIX, NULL, 2, &callback_http_compression, NULL);
- ulfius_add_endpoint_by_val(&instance, "*", FILE_PREFIX, NULL, 1, &callback_upload_file, NULL);
+ ulfius_add_endpoint_by_val(&instance, "*", STATIC_FOLDER, "/upload", 1, &callback_upload_file, NULL);
+ ulfius_add_endpoint_by_val(&instance, "*", STATIC_FOLDER, "/submit", 1, &callback_form_submit, NULL);
ulfius_add_endpoint_by_val(&instance, "GET", "*", NULL, 1, &callback_static_compressed_inmemory_website, &file_config);
// Start the framework
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/example_programs/sheep_counter/static/form.html new/ulfius-2.7.2/example_programs/sheep_counter/static/form.html
--- old/ulfius-2.7.1/example_programs/sheep_counter/static/form.html 1970-01-01 01:00:00.000000000 +0100
+++ new/ulfius-2.7.2/example_programs/sheep_counter/static/form.html 2021-03-02 01:02:22.000000000 +0100
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<body>
+
+<form action="submit" method="post">
+ <input type="text" name="textParam" value="textValue"/><br/>
+ <input type="checkbox" name="checkboxParam" id="checkboxParam" value="checkboxValue" checked="true"/><label for="checkboxParam">Checkbox</label><br/>
+ <input type="radio" name="radioParam" id="radioParam1" value="radioValue1" checked="true"/><label for="radioParam1">Radio 1</label><br/>
+ <input type="radio" name="radioParam" id="radioParam2" value="radioValue2"/><label for="radioParam2">Radio 2</label><br/>
+ <select name="selectOne">
+ <option value="value1">Value1</option>
+ <option value="value2">Value2</option>
+ <option value="value3">Value3</option>
+ </select><br/>
+ <select name="selectMultiple" multiple>
+ <option value="value1">Value1</option>
+ <option value="value2">Value2</option>
+ <option value="value3">Value3</option>
+ </select><br/>
+ <input type="submit" value="send form" name="submit"/>
+</form>
+
+</body>
+</html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/example_programs/sheep_counter/static/index.html new/ulfius-2.7.2/example_programs/sheep_counter/static/index.html
--- old/ulfius-2.7.1/example_programs/sheep_counter/static/index.html 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/example_programs/sheep_counter/static/index.html 2021-03-02 01:02:22.000000000 +0100
@@ -6,7 +6,7 @@
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<body>
- <label>Coounter:</label><input type="text" id="counter" name="counter"><br/>
+ <label>Counter:</label><input type="text" id="counter" name="counter"><br/>
<input type="button" id="start" name="start" value="Start counting"><br/>
<input type="button" id="pause" name="pause" value="Pause counting"><br/>
<input type="button" id="reset" name="reset" value="Reset counting"><br/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/example_programs/stream_example/stream_client.c new/ulfius-2.7.2/example_programs/stream_example/stream_client.c
--- old/ulfius-2.7.1/example_programs/stream_example/stream_client.c 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/example_programs/stream_example/stream_client.c 2021-03-02 01:02:22.000000000 +0100
@@ -4,7 +4,7 @@
*
* This example program get a stream data from the server
*
- * Copyright 2016 Nicolas Mora <mail(a)babelouest.org>
+ * Copyright 2016-2021 Nicolas Mora <mail(a)babelouest.org>
*
* License MIT
*
@@ -39,8 +39,11 @@
ulfius_init_response(&response);
ulfius_init_request(&request);
- request.http_verb = o_strdup("GET");
- request.http_url = o_strdup(URL);
+
+ ulfius_set_request_properties(&request,
+ U_OPT_HTTP_VERB, "GET",
+ U_OPT_HTTP_URL, URL,
+ U_OPT_NONE); // Required to close the parameters list
y_log_message(Y_LOG_LEVEL_DEBUG, "Press <enter> to run stream test");
getchar();
@@ -54,8 +57,8 @@
y_log_message(Y_LOG_LEVEL_DEBUG, "Press <enter> to run stream audio test");
ulfius_init_response(&response);
- o_free(request.http_url);
- request.http_url = o_strdup(URL "/audio");
+ ulfius_set_request_properties(&request, U_OPT_HTTP_VERB, "GET", U_OPT_HTTP_URL, URL, U_OPT_HTTP_URL_APPEND, "/audio", U_OPT_NONE);
+
getchar();
res = ulfius_send_http_streaming_request(&request, &response, my_write_meta_body, NULL);
if (res == U_OK) {
@@ -67,8 +70,8 @@
y_log_message(Y_LOG_LEVEL_DEBUG, "Press <enter> to run no stream test");
ulfius_init_response(&response);
- o_free(request.http_url);
- request.http_url = o_strdup("http://www.w3.org/");
+ ulfius_set_request_properties(&request, U_OPT_HTTP_VERB, "GET", U_OPT_HTTP_URL, "http://www.w3.org/", U_OPT_NONE);
+
getchar();
res = ulfius_send_http_request(&request, &response);
if (res == U_OK) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/include/ulfius.h new/ulfius-2.7.2/include/ulfius.h
--- old/ulfius-2.7.1/include/ulfius.h 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/include/ulfius.h 2021-03-02 01:02:22.000000000 +0100
@@ -174,7 +174,8 @@
#endif
U_OPT_STATUS = 28, ///< HTTP response status code (200, 404, 500, etc), expected option value type: long
U_OPT_AUTH_REALM = 29, ///< realm to send to the client response on authenticationb failed, expected option value type: const char *
- U_OPT_SHARED_DATA = 30 ///< any data shared between callback functions, must be allocated and freed by the callback functions, expected option value type: void *
+ U_OPT_SHARED_DATA = 30, ///< any data shared between callback functions, must be allocated and freed by the callback functions, expected option value type: void *
+ U_OPT_HTTP_URL_APPEND = 31 ///< append char * value to the current url, expected option value type: const char *
} u_option;
/**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/src/Makefile new/ulfius-2.7.2/src/Makefile
--- old/ulfius-2.7.1/src/Makefile 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/src/Makefile 2021-03-02 01:02:22.000000000 +0100
@@ -40,7 +40,7 @@
OUTPUT=libulfius.so
VERSION_MAJOR=2
VERSION_MINOR=7
-VERSION_PATCH=1
+VERSION_PATCH=2
ifndef JANSSONFLAG
DISABLE_JANSSON=0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/src/u_request.c new/ulfius-2.7.2/src/u_request.c
--- old/ulfius-2.7.1/src/u_request.c 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/src/u_request.c 2021-03-02 01:02:22.000000000 +0100
@@ -558,6 +558,10 @@
request->http_url = NULL;
}
break;
+ case U_OPT_HTTP_URL_APPEND:
+ str_value = va_arg(vl, const char *);
+ request->http_url = mstrcatf(request->http_url, "%s", str_value);
+ break;
case U_OPT_HTTP_PROXY:
str_value = va_arg(vl, const char *);
o_free(request->proxy);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/src/ulfius.c new/ulfius-2.7.2/src/ulfius.c
--- old/ulfius-2.7.1/src/ulfius.c 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/src/ulfius.c 2021-03-02 01:02:22.000000000 +0100
@@ -316,50 +316,91 @@
const char * transfer_encoding, const char * data, uint64_t off, size_t size) {
#endif
struct connection_info_struct * con_info = coninfo_cls;
- size_t cur_size = size;
- char * data_dup, * filename_param;
+ size_t data_size = size, cur_size;
+ char * filename_param = NULL, * data_concat = NULL;
+ const char * cur_data;
+#if MHD_VERSION >= 0x00097002
+ enum MHD_Result ret = MHD_YES;
+#else
+ int ret = MHD_YES;
+#endif
UNUSED(kind);
- if (filename != NULL && con_info->u_instance != NULL && con_info->u_instance->file_upload_callback != NULL) {
- if (con_info->u_instance->file_upload_callback(con_info->request, key, filename, content_type, transfer_encoding, data, off, size, con_info->u_instance->file_upload_cls) == U_OK) {
- return MHD_YES;
- } else {
- return MHD_NO;
+ if (con_info->u_instance == NULL) {
+ ret = MHD_NO;
+ } else if (filename != NULL && con_info->u_instance->file_upload_callback != NULL) {
+ if (con_info->u_instance->file_upload_callback(con_info->request, key, filename, content_type, transfer_encoding, data, off, size, con_info->u_instance->file_upload_cls) != U_OK) {
+ ret = MHD_NO;
}
} else {
- if (con_info->u_instance) {
- if (con_info->u_instance->check_utf8 && (utf8_check(key, o_strlen(key)) != NULL || data == NULL || utf8_check(data, o_strlen(data)) != NULL || (filename != NULL && utf8_check(filename, o_strlen(filename)) != NULL))) {
- return MHD_YES;
+
+ do {
+ if (con_info->u_instance->check_utf8) {
+ if (utf8_check(key, o_strlen(key)) != NULL || data == NULL || utf8_check(data, o_strlen(data)) != NULL || (filename != NULL && utf8_check(filename, o_strlen(filename)) != NULL)) {
+ break;
+ }
+ }
+
+ if (con_info->max_post_param_size && off > con_info->max_post_param_size) {
+ break;
+ }
+
+ if (off + size > con_info->max_post_param_size) {
+ data_size = con_info->max_post_param_size - off;
+ }
+
+ if (filename != NULL) {
+ filename_param = msprintf("%s_filename", key);
+ if (!u_map_has_key((struct _u_map *)con_info->request->map_post_body, filename_param) && u_map_put((struct _u_map *)con_info->request->map_post_body, filename_param, filename) != U_OK) {
+ y_log_message(Y_LOG_LEVEL_ERROR, "Ulfius - Error u_map_put filename value");
+ }
+ cur_data = u_map_get((struct _u_map *)con_info->request->map_post_body, key);
+ cur_size = u_map_get_length((struct _u_map *)con_info->request->map_post_body, key);
+ if (cur_data != NULL) {
+ if (off) {
+ if (u_map_put_binary((struct _u_map *)con_info->request->map_post_body, key, data, cur_size, data_size) != U_OK) {
+ ret = MHD_NO;
+ break;
+ }
+ } else {
+ if (u_map_put_binary((struct _u_map *)con_info->request->map_post_body, key, ",", cur_size, 1) != U_OK ||
+ u_map_put_binary((struct _u_map *)con_info->request->map_post_body, key, data, cur_size+1, 1) != U_OK) {
+ ret = MHD_NO;
+ break;
+ }
+ }
+ } else {
+ if (u_map_put_binary((struct _u_map *)con_info->request->map_post_body, key, data, 0, data_size) != U_OK) {
+ ret = MHD_NO;
+ break;
+ }
+ }
} else {
- data_dup = o_strndup(data, size); // Force value to end with a NULL character
- if (con_info->max_post_param_size > 0) {
- if (off > con_info->max_post_param_size) {
- return MHD_YES;
- } else if (off + size > con_info->max_post_param_size) {
- cur_size = con_info->max_post_param_size - off;
+ cur_data = u_map_get((struct _u_map *)con_info->request->map_post_body, key);
+ cur_size = u_map_get_length((struct _u_map *)con_info->request->map_post_body, key);
+ if (cur_data != NULL) {
+ if (off) {
+ data_concat = msprintf("%s%s", cur_data, data);
+ } else {
+ data_concat = msprintf("%s,%s", cur_data, data);
+ }
+ if (u_map_put((struct _u_map *)con_info->request->map_post_body, key, data_concat) != U_OK) {
+ ret = MHD_NO;
+ break;
+ }
+ } else {
+ if (u_map_put((struct _u_map *)con_info->request->map_post_body, key, data) != U_OK) {
+ ret = MHD_NO;
+ break;
}
}
}
- } else {
- return MHD_NO;
- }
-
- if (filename != NULL) {
- filename_param = msprintf("%s_filename", key);
- if (!u_map_has_key((struct _u_map *)con_info->request->map_post_body, filename_param) && u_map_put((struct _u_map *)con_info->request->map_post_body, filename_param, filename) != U_OK) {
- y_log_message(Y_LOG_LEVEL_ERROR, "Ulfius - Error u_map_put filename value");
- }
- o_free(filename_param);
- }
-
- if (cur_size > 0 && data_dup != NULL && u_map_put_binary((struct _u_map *)con_info->request->map_post_body, key, data_dup, off, cur_size + 1) == U_OK) {
- o_free(data_dup);
- return MHD_YES;
- } else {
- o_free(data_dup);
- return MHD_NO;
- }
+
+ } while (0);
+ o_free(data_concat);
+ o_free(filename_param);
}
+ return ret;
}
#if MHD_VERSION >= 0x00096100
@@ -479,7 +520,8 @@
content_type = (char*)u_map_get_case(con_info->request->map_header, ULFIUS_HTTP_HEADER_CONTENT);
// Set POST Processor if content-type is properly set
- if (content_type != NULL && (0 == o_strncmp(MHD_HTTP_POST_ENCODING_FORM_URLENCODED, content_type, o_strlen(MHD_HTTP_POST_ENCODING_FORM_URLENCODED)) ||
+ if (content_type != NULL &&
+ (0 == o_strncmp(MHD_HTTP_POST_ENCODING_FORM_URLENCODED, content_type, o_strlen(MHD_HTTP_POST_ENCODING_FORM_URLENCODED)) ||
0 == o_strncmp(MHD_HTTP_POST_ENCODING_MULTIPART_FORMDATA, content_type, o_strlen(MHD_HTTP_POST_ENCODING_MULTIPART_FORMDATA)))) {
con_info->has_post_processor = 1;
con_info->post_processor = MHD_create_post_processor (connection, ULFIUS_POSTBUFFERSIZE, mhd_iterate_post_data, (void *) con_info);
@@ -857,7 +899,7 @@
}
}
- if (!con_info->request->callback_position && ((struct _u_instance *)cls)->default_endpoint != NULL && ((struct _u_instance *)cls)->default_endpoint->callback_function != NULL) {
+ if (!con_info->request->callback_position && ((struct _u_instance *)cls)->default_endpoint != NULL && ((struct _u_instance *)cls)->default_endpoint->callback_function != NULL && mhd_response == NULL) {
callback_ret = ((struct _u_instance *)cls)->default_endpoint->callback_function(con_info->request, response, ((struct _u_instance *)cls)->default_endpoint->user_data);
// Test callback_ret to know what to do
switch (callback_ret) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/test/Makefile new/ulfius-2.7.2/test/Makefile
--- old/ulfius-2.7.1/test/Makefile 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/test/Makefile 2021-03-02 01:02:22.000000000 +0100
@@ -5,6 +5,7 @@
ULFIUS_INCLUDE=../include
ULFIUS_LOCATION=../src
ULFIUS_LIBRARY=$(ULFIUS_LOCATION)/libulfius.so
+ULFIUS_SCRUTINIZE=$(ULFIUS_INCLUDE)/ulfius.h $(ULFIUS_INCLUDE)/u_private.h $(ULFIUS_INCLUDE)/yuarel.h $(ULFIUS_LOCATION)/ulfius.c $(ULFIUS_LOCATION)/u_map.c $(ULFIUS_LOCATION)/u_request.c $(ULFIUS_LOCATION)/u_response.c $(ULFIUS_LOCATION)/u_send_request.c $(ULFIUS_LOCATION)/u_websocket.c $(ULFIUS_LOCATION)/yuarel.c
CC=gcc
CFLAGS+=-Wall -D_REENTRANT -I$(ULFIUS_INCLUDE) -DDEBUG -g -O0 $(CPPFLAGS)
LIBS=-lc -lorcania -lulfius -lyder -ljansson -lgnutls -lz $(shell pkg-config --libs check) -L$(ULFIUS_LOCATION)
@@ -13,45 +14,39 @@
# Use this LIBS below if you use yder logs
#LIBS=-lc -lorcania -lyder -lulfius -lgnutls -lcheck -lpthread -lm -lrt -lsubunit -L$(ULFIUS_LOCATION)
VALGRIND_COMMAND=valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all
+TARGET=u_map core framework websocket
+VERBOSE=0
+MEMCHECK=0
+
all: test
clean:
rm -f *.o u_map core framework websocket valgrind-*.txt
-$(ULFIUS_LIBRARY):
+$(ULFIUS_LIBRARY): $(ULFIUS_SCRUTINIZE)
cd $(ULFIUS_LOCATION) && $(MAKE) debug
u_map: u_map.c
$(CC) $(CFLAGS) u_map.c -o u_map $(LIBS)
-test_u_map: $(ULFIUS_LIBRARY) u_map
- LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} ./u_map
-
core: core.c
$(CC) $(CFLAGS) core.c -o core $(LIBS)
-test_core: $(ULFIUS_LIBRARY) core
- LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} ./core
-
framework: framework.c
$(CC) $(CFLAGS) framework.c -o framework $(LIBS)
-test_framework: $(ULFIUS_LIBRARY) framework
- LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} ./framework
-
websocket: websocket.c
$(CC) $(CFLAGS) websocket.c -o websocket $(LIBS)
-test_websocket: $(ULFIUS_LIBRARY) websocket
- LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} ./websocket
+test: $(ULFIUS_LIBRARY) $(TARGET) test_u_map test_core test_framework test_websocket
-test: test_u_map test_core test_framework test_websocket
+test_%: % $(ULFIUS_LIBRARY)
+ @if [ "$(VERBOSE)" = "0" ] && [ "$(MEMCHECK)" = "0" ]; then \
+ LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} ./run_test.sh ./$^; \
+ elif [ "$(MEMCHECK)" = "0" ]; then \
+ LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} ./$^ ; \
+ else \
+ LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} $(VALGRIND_COMMAND) ./$^ 2>valgrind-$@.txt; \
+ fi
check: test
-
-memcheck: $(ULFIUS_LIBRARY) u_map core framework websocket
- -CK_FORK=no LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} $(VALGRIND_COMMAND) ./u_map 2>valgrind-u_map.txt
- -CK_FORK=no LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} $(VALGRIND_COMMAND) ./core 2>valgrind-core.txt
- # framework ans websocket don't work properly when CK_FORK=no is used, so using them old school with forks then
- -LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} $(VALGRIND_COMMAND) ./framework 2>valgrind-framework.txt
- -LD_LIBRARY_PATH=$(ULFIUS_LOCATION):${LD_LIBRARY_PATH} $(VALGRIND_COMMAND) ./websocket 2>valgrind-websocket.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/test/cert/create-cert.sh new/ulfius-2.7.2/test/cert/create-cert.sh
--- old/ulfius-2.7.1/test/cert/create-cert.sh 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/test/cert/create-cert.sh 2021-03-02 01:02:22.000000000 +0100
@@ -3,6 +3,15 @@
DEST=./cert
RET=0
+case "$OSTYPE" in
+*"darwin"*)
+ # Apple has its own certtool which is incompatible. GnuTLS' certtool is renamed as
+ # gnutls-certtool in MacPorts/homebrew.
+ CERTTOOL=gnutls-certtool;;
+ *)
+ CERTTOOL=certtool;;
+esac
+
# clean old certs
rm -f $DEST/server.* $DEST/root* $DEST/client*
@@ -11,7 +20,7 @@
echo >> $DEST/certtool.log
# www cert
-certtool --generate-privkey --outfile $DEST/server.key --sec-param High 2>>$DEST/certtool.log
+$CERTTOOL --generate-privkey --outfile $DEST/server.key --sec-param High 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "server.key \033[0;32mOK\033[0m\n"
@@ -19,7 +28,7 @@
printf "server.key \033[0;31mError\033[0m\n"
RET=$STATUS
fi
-certtool --generate-self-signed --load-privkey $DEST/server.key --outfile $DEST/server.crt --template $DEST/template-server.cfg 2>>$DEST/certtool.log
+$CERTTOOL --generate-self-signed --load-privkey $DEST/server.key --outfile $DEST/server.crt --template $DEST/template-server.cfg 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "server.crt \033[0;32mOK\033[0m\n"
@@ -29,7 +38,7 @@
fi
# CA root
-certtool --generate-privkey --outfile $DEST/root1.key --sec-param High 2>>$DEST/certtool.log
+$CERTTOOL --generate-privkey --outfile $DEST/root1.key --sec-param High 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "root1.key \033[0;32mOK\033[0m\n"
@@ -37,7 +46,7 @@
printf "root1.key \033[0;31mError\033[0m\n"
RET=$STATUS
fi
-certtool --generate-self-signed --load-privkey $DEST/root1.key --outfile $DEST/root1.crt --template $DEST/template-ca.cfg 2>>$DEST/certtool.log
+$CERTTOOL --generate-self-signed --load-privkey $DEST/root1.key --outfile $DEST/root1.crt --template $DEST/template-ca.cfg 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "root1.crt \033[0;32mOK\033[0m\n"
@@ -47,7 +56,7 @@
fi
# client 1
-certtool --generate-privkey --outfile $DEST/client1.key --sec-param High 2>>$DEST/certtool.log
+$CERTTOOL --generate-privkey --outfile $DEST/client1.key --sec-param High 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "client1.key \033[0;32mOK\033[0m\n"
@@ -55,7 +64,7 @@
printf "client1.key \033[0;31mError\033[0m\n"
RET=$STATUS
fi
-certtool --generate-certificate --load-privkey $DEST/client1.key --load-ca-certificate $DEST/root1.crt --load-ca-privkey $DEST/root1.key --outfile $DEST/client1.crt --template $DEST/template-client.cfg 2>>$DEST/certtool.log
+$CERTTOOL --generate-certificate --load-privkey $DEST/client1.key --load-ca-certificate $DEST/root1.crt --load-ca-privkey $DEST/root1.key --outfile $DEST/client1.crt --template $DEST/template-client.cfg 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "client1.crt \033[0;32mOK\033[0m\n"
@@ -65,7 +74,7 @@
fi
# CA root 2
-certtool --generate-privkey --outfile $DEST/root2.key --sec-param High 2>>$DEST/certtool.log
+$CERTTOOL --generate-privkey --outfile $DEST/root2.key --sec-param High 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "root2.key \033[0;32mOK\033[0m\n"
@@ -73,7 +82,7 @@
printf "root2.key \033[0;31mError\033[0m\n"
RET=$STATUS
fi
-certtool --generate-self-signed --load-privkey $DEST/root2.key --outfile $DEST/root2.crt --template $DEST/template-ca2.cfg 2>>$DEST/certtool.log
+$CERTTOOL --generate-self-signed --load-privkey $DEST/root2.key --outfile $DEST/root2.crt --template $DEST/template-ca2.cfg 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "root2.crt \033[0;32mOK\033[0m\n"
@@ -83,7 +92,7 @@
fi
# client 2
-certtool --generate-privkey --outfile $DEST/client2.key --sec-param High 2>>$DEST/certtool.log
+$CERTTOOL --generate-privkey --outfile $DEST/client2.key --sec-param High 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "client2.key \033[0;32mOK\033[0m\n"
@@ -91,7 +100,7 @@
printf "client2.key \033[0;31mError\033[0m\n"
RET=$STATUS
fi
-certtool --generate-certificate --load-privkey $DEST/client2.key --load-ca-certificate $DEST/root2.crt --load-ca-privkey $DEST/root2.key --outfile $DEST/client2.crt --template $DEST/template-client.cfg 2>>$DEST/certtool.log
+$CERTTOOL --generate-certificate --load-privkey $DEST/client2.key --load-ca-certificate $DEST/root2.crt --load-ca-privkey $DEST/root2.key --outfile $DEST/client2.crt --template $DEST/template-client.cfg 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "client2.crt \033[0;32mOK\033[0m\n"
@@ -101,7 +110,7 @@
fi
# client 3 self-signed
-certtool --generate-privkey --outfile $DEST/client3.key --sec-param High 2>>$DEST/certtool.log
+$CERTTOOL --generate-privkey --outfile $DEST/client3.key --sec-param High 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "client3.key \033[0;32mOK\033[0m\n"
@@ -109,7 +118,7 @@
printf "client3.key \033[0;31mError\033[0m\n"
RET=$STATUS
fi
-certtool --generate-self-signed --load-privkey $DEST/client3.key --outfile $DEST/client3.crt --template $DEST/template-client.cfg 2>>$DEST/certtool.log
+$CERTTOOL --generate-self-signed --load-privkey $DEST/client3.key --outfile $DEST/client3.crt --template $DEST/template-client.cfg 2>>$DEST/certtool.log
STATUS=$?
if [ $STATUS -eq 0 ]; then
printf "client3.crt \033[0;32mOK\033[0m\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/test/core.c new/ulfius-2.7.2/test/core.c
--- old/ulfius-2.7.1/test/core.c 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/test/core.c 2021-03-02 01:02:22.000000000 +0100
@@ -16,6 +16,7 @@
#define HTTP_PROTOCOL "http_protocol"
#define HTTP_VERB "http_verb"
#define HTTP_URL "http_url"
+#define HTTP_URL_APPEND "http_url_append"
#define URL_PATH "url_path"
#define PROXY "proxy"
#define CA_PATH "ca_path"
@@ -328,6 +329,7 @@
ck_assert_int_eq(ulfius_set_request_properties(&req,
U_OPT_HTTP_VERB, HTTP_VERB,
U_OPT_HTTP_URL, HTTP_URL,
+ U_OPT_HTTP_URL_APPEND, HTTP_URL_APPEND,
U_OPT_HTTP_PROXY, PROXY,
#if MHD_VERSION >= 0x00095208
U_OPT_NETWORK_TYPE, U_USE_IPV4,
@@ -354,7 +356,7 @@
U_OPT_NONE), U_OK);
ck_assert_str_eq(req.http_verb, HTTP_VERB);
- ck_assert_str_eq(req.http_url, HTTP_URL);
+ ck_assert_str_eq(req.http_url, HTTP_URL HTTP_URL_APPEND);
ck_assert_str_eq(req.proxy, PROXY);
#if MHD_VERSION >= 0x00095208
ck_assert_int_eq(req.network_type, U_USE_IPV4);
@@ -409,6 +411,7 @@
ck_assert_int_eq(ulfius_set_request_properties(&req,
U_OPT_HTTP_VERB, HTTP_VERB,
U_OPT_HTTP_URL, HTTP_URL,
+ U_OPT_HTTP_URL_APPEND, HTTP_URL_APPEND,
U_OPT_HTTP_PROXY, PROXY,
#if MHD_VERSION >= 0x00095208
U_OPT_NETWORK_TYPE, U_USE_IPV4,
@@ -435,7 +438,7 @@
U_OPT_NONE), U_OK);
ck_assert_str_eq(req.http_verb, HTTP_VERB);
- ck_assert_str_eq(req.http_url, HTTP_URL);
+ ck_assert_str_eq(req.http_url, HTTP_URL HTTP_URL_APPEND);
ck_assert_str_eq(req.proxy, PROXY);
#if MHD_VERSION >= 0x00095208
ck_assert_int_eq(req.network_type, U_USE_IPV4);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/test/framework.c new/ulfius-2.7.2/test/framework.c
--- old/ulfius-2.7.1/test/framework.c 2021-01-01 15:47:01.000000000 +0100
+++ new/ulfius-2.7.2/test/framework.c 2021-03-02 01:02:22.000000000 +0100
@@ -316,17 +316,23 @@
}
int callback_function_param(const struct _u_request * request, struct _u_response * response, void * user_data) {
- char * param3, * body;
+ char * param3, * param4, * body;
if (u_map_has_key(request->map_url, "param3")) {
param3 = msprintf(", param3 is %s", u_map_get(request->map_url, "param3"));
} else {
param3 = o_strdup("");
}
- body = msprintf("param1 is %s, param2 is %s%s", u_map_get(request->map_url, "param1"), u_map_get(request->map_url, "param2"), param3);
+ if (u_map_has_key(request->map_url, "param4")) {
+ param4 = msprintf(", param4 is %s", u_map_get(request->map_url, "param4"));
+ } else {
+ param4 = o_strdup("");
+ }
+ body = msprintf("param1 is %s, param2 is %s%s%s", u_map_get(request->map_url, "param1"), u_map_get(request->map_url, "param2"), param3, param4);
ulfius_set_string_body_response(response, 200, body);
o_free(body);
o_free(param3);
+ o_free(param4);
return U_CALLBACK_CONTINUE;
}
@@ -817,6 +823,35 @@
ulfius_clean_response(&response);
ulfius_init_request(&request);
+ request.http_url = o_strdup("http://localhost:8080/param/value1/value2?param4=value4");
+ ulfius_init_response(&response);
+ ck_assert_int_eq(ulfius_send_http_request(&request, &response), U_OK);
+ ck_assert_int_eq(response.status, 200);
+ ck_assert_int_eq(o_strncmp(response.binary_body, "param1 is value1, param2 is value2, param4 is value4", o_strlen("param1 is value1, param2 is value2, param4 is value4")), 0);
+ ulfius_clean_request(&request);
+ ulfius_clean_response(&response);
+
+ ulfius_init_request(&request);
+ request.http_url = o_strdup("http://localhost:8080/param/value1/value2?param4=value4¶m2=additional_v…");
+ ulfius_init_response(&response);
+ ck_assert_int_eq(ulfius_send_http_request(&request, &response), U_OK);
+ ck_assert_int_eq(response.status, 200);
+ ck_assert_int_eq(o_strncmp(response.binary_body, "param1 is value1, param2 is additional_value2,value2, param4 is value4,additional_value4", o_strlen("param1 is value1, param2 is additional_value2,value2, param4 is value4,additional_value4")), 0);
+ ulfius_clean_request(&request);
+ ulfius_clean_response(&response);
+
+#if MHD_VERSION >= 0x00097200
+ ulfius_init_request(&request);
+ request.http_url = o_strdup("http://localhost:8080/param/value1/value2?param4=val%26ue4");
+ ulfius_init_response(&response);
+ ck_assert_int_eq(ulfius_send_http_request(&request, &response), U_OK);
+ ck_assert_int_eq(response.status, 200);
+ ck_assert_int_eq(o_strncmp(response.binary_body, "param1 is value1, param2 is value2, param4 is val&ue4", o_strlen("param1 is value1, param2 is value2, param4 is val&ue4")), 0);
+ ulfius_clean_request(&request);
+ ulfius_clean_response(&response);
+#endif
+
+ ulfius_init_request(&request);
request.http_url = o_strdup("http://localhost:8080/param/value1/value2/value3.1/value3.2");
ulfius_init_response(&response);
ck_assert_int_eq(ulfius_send_http_request(&request, &response), U_OK);
@@ -1035,7 +1070,7 @@
ulfius_init_response(&response);
ck_assert_int_eq(ulfius_set_request_properties(&request, U_OPT_HTTP_VERB, "GET", U_OPT_HTTP_URL, "http://localhost:8080/ignore", U_OPT_NONE), U_OK);
ck_assert_int_eq(ulfius_send_http_request(&request, &response), U_OK);
- ck_assert_int_eq(response.status, 205);
+ ck_assert_int_eq(response.status, 200);
ulfius_clean_request(&request);
ulfius_clean_response(&response);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ulfius-2.7.1/test/run_test.sh new/ulfius-2.7.2/test/run_test.sh
--- old/ulfius-2.7.1/test/run_test.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/ulfius-2.7.2/test/run_test.sh 2021-03-02 01:02:22.000000000 +0100
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+printf_new() {
+ str=$1
+ num=$2
+ v=$(printf "%-${num}s" "$str")
+ printf "${v// / }"
+}
+
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+NC='\033[0m' # No Color
+COMMAND=$1
+CHRLEN=${#COMMAND}
+NBSP=$((32-$CHRLEN))
+
+printf "Run $1"
+printf_new " " $NBSP
+
+$1 $2 $3 $4 $5 $6 $7 $8 $9 1>$1.log 2>&1
+
+if [ $? -ne 0 ]
+then
+ printf "${RED}FAIL${NC}\n"
+else
+ printf "${GREEN}SUCCESS${NC}\n"
+fi
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package yder for openSUSE:Factory checked in at 2021-03-30 21:10:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yder (Old)
and /work/SRC/openSUSE:Factory/.yder.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yder"
Tue Mar 30 21:10:08 2021 rev:11 rq:876405 version:1.4.13
Changes:
--------
--- /work/SRC/openSUSE:Factory/yder/yder.changes 2020-09-06 00:04:10.187306942 +0200
+++ /work/SRC/openSUSE:Factory/.yder.new.2401/yder.changes 2021-03-30 21:18:39.041839413 +0200
@@ -1,0 +2,6 @@
+Mon Mar 1 19:14:29 UTC 2021 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 1.4.13
+ * Bugfix release
+
+-------------------------------------------------------------------
Old:
----
yder-1.4.12.tar.gz
New:
----
yder-1.4.13.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yder.spec ++++++
--- /var/tmp/diff_new_pack.9XvENb/_old 2021-03-30 21:18:39.701839896 +0200
+++ /var/tmp/diff_new_pack.9XvENb/_new 2021-03-30 21:18:39.705839899 +0200
@@ -1,8 +1,8 @@
#
# spec file for package yder
#
-# Copyright (c) 2020 SUSE LLC
-# Copyright (c) 2018-2020, Martin Hauke <mardnh(a)gmx.de>
+# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2018-2021, Martin Hauke <mardnh(a)gmx.de>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define sover 1_4
Name: yder
-Version: 1.4.12
+Version: 1.4.13
Release: 0
Summary: Logging library written in C
# Example programs in subfolder examples/ are licensed under MIT
++++++ yder-1.4.12.tar.gz -> yder-1.4.13.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yder-1.4.12/.travis.yml new/yder-1.4.13/.travis.yml
--- old/yder-1.4.12/.travis.yml 2020-08-26 13:45:52.000000000 +0200
+++ new/yder-1.4.13/.travis.yml 1970-01-01 01:00:00.000000000 +0100
@@ -1,39 +0,0 @@
-# travis configuration file
-# Copyright 2018 Ilya Shipitsin <chipitsine(a)gmail.com>
-# 2018-2020 Nicolas Mora <mail(a)babelouest.org>
-os: linux
-language: c
-dist: bionic
-addons:
- apt:
- packages: [ check, libsubunit-dev, cppcheck, pkg-config, libsystemd-dev ]
-jobs:
- include:
- - env: LABEL=linux-gcc
- compiler: gcc
- - env: LABEL=linux-clang
- compiler: clang
- - env: LABEL=osx
- os: osx
- addons:
- homebrew:
- packages:
- - check
- - pkg-config
- update: true
- script:
- - mkdir build && cd build
- - cmake -DBUILD_YDER_TESTING=on -DWITH_JOURNALD=off ..
- - make test
- - env: LABEL=cppcheck
- script:
- - cppcheck --force --enable=warning,missingInclude --error-exitcode=1 .
-script:
- - mkdir build && cd build
- - cmake -DBUILD_YDER_TESTING=on ..
- - make test package
- - sudo make install
- - sudo ldconfig
- - cd ../
- - make Y_DISABLE_JOURNALD=1
- - make check
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yder-1.4.12/CHANGELOG.md new/yder-1.4.13/CHANGELOG.md
--- old/yder-1.4.12/CHANGELOG.md 2020-08-26 13:45:52.000000000 +0200
+++ new/yder-1.4.13/CHANGELOG.md 2021-03-01 19:44:10.000000000 +0100
@@ -1,5 +1,9 @@
# Yder Changelog
+## 1.4.13
+
+- Use `gmtime_s` on Windows (Thanks sudhip)
+
## 1.4.12
- Use `gmtime_r` instead of `localtime`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yder-1.4.12/CMakeLists.txt new/yder-1.4.13/CMakeLists.txt
--- old/yder-1.4.12/CMakeLists.txt 2020-08-26 13:45:52.000000000 +0200
+++ new/yder-1.4.13/CMakeLists.txt 2021-03-01 19:44:10.000000000 +0100
@@ -30,7 +30,7 @@
set(PROJECT_BUGREPORT_PATH "https://github.com/babelouest/yder/issues")
set(LIBRARY_VERSION_MAJOR "1")
set(LIBRARY_VERSION_MINOR "4")
-set(LIBRARY_VERSION_PATCH "12")
+set(LIBRARY_VERSION_PATCH "13")
set(PROJECT_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}")
set(PROJECT_VERSION_MAJOR ${LIBRARY_VERSION_MAJOR})
@@ -56,7 +56,7 @@
set(LIBRARY_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}")
set(LIBRARY_SOVERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}")
-set(ORCANIA_VERSION_REQUIRED "2.1.1")
+set(ORCANIA_VERSION_REQUIRED "2.2.0")
# cmake modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yder-1.4.12/README.md new/yder-1.4.13/README.md
--- old/yder-1.4.12/README.md 2020-08-26 13:45:52.000000000 +0200
+++ new/yder-1.4.13/README.md 2021-03-01 19:44:10.000000000 +0100
@@ -2,7 +2,6 @@
Logging library written in C.
-[](https://t…

Simple and easy to use logging library. You can log messages to the console, a file, Syslog, journald or a callback function.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yder-1.4.12/src/Makefile new/yder-1.4.13/src/Makefile
--- old/yder-1.4.12/src/Makefile 2020-08-26 13:45:52.000000000 +0200
+++ new/yder-1.4.13/src/Makefile 2021-03-01 19:44:10.000000000 +0100
@@ -35,7 +35,7 @@
OUTPUT=libyder.so
VERSION_MAJOR=1
VERSION_MINOR=4
-VERSION_PATCH=12
+VERSION_PATCH=13
SONAME = -soname
ifeq ($(shell uname -s),Darwin)
@@ -95,7 +95,7 @@
install: all $(PKGCONFIG_FILE)
install $(OUTPUT).$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH) $(DESTDIR)/lib
- mkdir -p $(DESTDIR)/lib/pkgconfig/
+ mkdir -p $(DESTDIR)/lib/pkgconfig/ $(DESTDIR)/include
install -m644 $(PKGCONFIG_FILE) $(DESTDIR)/lib/pkgconfig/
install -m644 $(YDER_INCLUDE)/yder.h $(DESTDIR)/include
install -m644 $(CONFIG_FILE) $(DESTDIR)/include
@@ -103,6 +103,7 @@
static-install: static
install libyder.a $(DESTDIR)/lib
+ mkdir -p $(DESTDIR)/lib/pkgconfig/ $(DESTDIR)/include
install -m644 $(PKGCONFIG_FILE) $(DESTDIR)/lib/pkgconfig
install -m644 $(YDER_INCLUDE)/yder.h $(DESTDIR)/include
install -m644 $(CONFIG_FILE) $(DESTDIR)/include
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yder-1.4.12/src/yder.c new/yder-1.4.13/src/yder.c
--- old/yder-1.4.12/src/yder.c 2020-08-26 13:45:52.000000000 +0200
+++ new/yder-1.4.13/src/yder.c 2021-03-01 19:44:10.000000000 +0100
@@ -45,8 +45,13 @@
char * level_name = NULL, date_stamp[64];
FILE * output = NULL;
struct tm tm_stamp;
+
+#ifdef _WIN32
+ gmtime_s(&tm_stamp, &date);
+#else
gmtime_r(&date, &tm_stamp);
-
+#endif
+
if (date_format == NULL) {
#ifndef _WIN32
strftime (date_stamp, sizeof(date_stamp), "%FT%TZ", &tm_stamp);
@@ -138,7 +143,11 @@
struct tm tm_stamp;
if (log_file != NULL) {
+#ifdef _WIN32
+ gmtime_s(&tm_stamp, &date);
+#else
gmtime_r(&date, &tm_stamp);
+#endif
if (date_format == NULL) {
#ifndef _WIN32
strftime (date_stamp, sizeof(date_stamp), "%FT%TZ", &tm_stamp);
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package orcania for openSUSE:Factory checked in at 2021-03-30 21:09:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/orcania (Old)
and /work/SRC/openSUSE:Factory/.orcania.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "orcania"
Tue Mar 30 21:09:55 2021 rev:8 rq:876393 version:2.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/orcania/orcania.changes 2020-07-05 01:20:22.293405800 +0200
+++ /work/SRC/openSUSE:Factory/.orcania.new.2401/orcania.changes 2021-03-30 21:18:36.945837879 +0200
@@ -1,0 +2,7 @@
+Sun Feb 28 12:12:07 UTC 2021 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 2.2.0
+ * Add command-line tool `base64url` which is similar to
+ GNU `base64` tool but for `base64url` format.
+
+-------------------------------------------------------------------
Old:
----
orcania-2.1.1.tar.gz
New:
----
orcania-2.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ orcania.spec ++++++
--- /var/tmp/diff_new_pack.S2lbbl/_old 2021-03-30 21:18:37.625838377 +0200
+++ /var/tmp/diff_new_pack.S2lbbl/_new 2021-03-30 21:18:37.625838377 +0200
@@ -1,8 +1,8 @@
#
# spec file for package orcania
#
-# Copyright (c) 2020 SUSE LLC
-# Copyright (c) 2018, Martin Hauke <mardnh(a)gmx.de>
+# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2018-2021, Martin Hauke <mardnh(a)gmx.de>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,9 +17,9 @@
#
-%define sover 2_1
+%define sover 2_2
Name: orcania
-Version: 2.1.1
+Version: 2.2.0
Release: 0
Summary: MISC function Library
License: LGPL-2.1-or-later
@@ -69,6 +69,8 @@
%{_libdir}/liborcania.so.*
%files devel
+%{_bindir}/base64url
+%{_mandir}/man1/base64url.1.gz
%{_includedir}/orcania.h
%{_includedir}/orcania-cfg.h
%{_libdir}/liborcania.so
++++++ orcania-2.1.1.tar.gz -> orcania-2.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/.github/workflows/ccpp.yml new/orcania-2.2.0/.github/workflows/ccpp.yml
--- old/orcania-2.1.1/.github/workflows/ccpp.yml 2020-06-30 02:06:50.000000000 +0200
+++ new/orcania-2.2.0/.github/workflows/ccpp.yml 2021-02-27 19:14:14.000000000 +0100
@@ -10,7 +10,7 @@
- name: install dependencies
run: |
sudo apt-get update
- sudo apt-get install -y cmake pkg-config check libsubunit-dev cppcheck doxygen
+ sudo apt-get install -y cmake pkg-config check libsubunit-dev cppcheck doxygen valgrind
- name: cppcheck
run: cppcheck --force --enable=warning,missingInclude --error-exitcode=1 .
- name: build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/.github/workflows/codeql-analysis.yml new/orcania-2.2.0/.github/workflows/codeql-analysis.yml
--- old/orcania-2.1.1/.github/workflows/codeql-analysis.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/orcania-2.2.0/.github/workflows/codeql-analysis.yml 2021-02-27 19:14:14.000000000 +0100
@@ -0,0 +1,60 @@
+name: "CodeQL"
+
+on:
+ push:
+ branches: [master, ]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [master]
+ schedule:
+ - cron: '0 20 * * 2'
+
+jobs:
+ analyse:
+ name: Analyse
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ with:
+ # We must fetch at least the immediate parents so that if this is
+ # a pull request then we can checkout the head.
+ fetch-depth: 2
+
+ # If this run was triggered by a pull request event, then checkout
+ # the head of the pull request instead of the merge commit.
+ - run: git checkout HEAD^2
+ if: ${{ github.event_name == 'pull_request' }}
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ # Override language selection by uncommenting this and choosing your languages
+ # with:
+ # languages: go, javascript, csharp, python, cpp, java
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ #- name: Autobuild
+ # uses: github/codeql-action/autobuild@v1
+
+ # ������ Command-line programs to run using the OS shell.
+ # ���� https://git.io/JvXDl
+
+ # ������ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ - run: |
+ sudo apt-get update
+ sudo apt-get install -y cmake pkg-config doxygen
+ mkdir build
+ cd build
+ cmake -DBUILD_ORCANIA_DOCUMENTATION=on ..
+ make
+ make doc
+ sudo make install
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/.gitignore new/orcania-2.2.0/.gitignore
--- old/orcania-2.1.1/.gitignore 2020-06-30 02:06:50.000000000 +0200
+++ new/orcania-2.2.0/.gitignore 2021-02-27 19:14:14.000000000 +0100
@@ -9,3 +9,4 @@
pointer_list_test
orcania-cfg.h
valgrind*.txt
+tools/base64url/base64url
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/.travis.yml new/orcania-2.2.0/.travis.yml
--- old/orcania-2.1.1/.travis.yml 2020-06-30 02:06:50.000000000 +0200
+++ new/orcania-2.2.0/.travis.yml 1970-01-01 01:00:00.000000000 +0100
@@ -1,43 +0,0 @@
-# travis configuration file
-# Copyright 2018 Ilya Shipitsin <chipitsine(a)gmail.com>
-# 2018-2020 Nicolas Mora <mail(a)babelouest.org>
-language: c
-
-os: linux
-dist: bionic
-
-addons:
- apt:
- packages: [ check, libsubunit-dev, cppcheck, pkg-config, doxygen ]
-jobs:
- include:
- - env: LABEL=linux-gcc
- compiler: gcc
- - env: LABEL=lnux-clang
- compiler: clang
- - env: LABEL=osx
- os: osx
- addons:
- homebrew:
- packages:
- - check
- - pkg-config
- update: true
- script:
- - mkdir build && cd build
- - cmake -DBUILD_ORCANIA_TESTING=on ..
- - make test
- - env: LABEL=cppcheck
- script:
- - cppcheck --force --enable=warning,missingInclude --error-exitcode=1 .
-script:
- - pushd test
- - make test
- - popd
- - mkdir build && cd build
- - cmake -DBUILD_ORCANIA_TESTING=on -DBUILD_ORCANIA_DOCUMENTATION=on ..
- - make test package doc
- - sudo make install
- - cd ../
- - make
- - make clean check
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/CHANGELOG.md new/orcania-2.2.0/CHANGELOG.md
--- old/orcania-2.1.1/CHANGELOG.md 2020-06-30 02:06:50.000000000 +0200
+++ new/orcania-2.2.0/CHANGELOG.md 2021-02-27 19:14:14.000000000 +0100
@@ -1,5 +1,9 @@
# Orcania Changelog
+## 2.2.0
+
+- Add command-line tool `base64url` which is similar to GNU `base64` tool but for `base64url` format
+
## 2.1.1
- Harmonize and fix license
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/CMakeLists.txt new/orcania-2.2.0/CMakeLists.txt
--- old/orcania-2.1.1/CMakeLists.txt 2020-06-30 02:06:50.000000000 +0200
+++ new/orcania-2.2.0/CMakeLists.txt 2021-02-27 19:14:14.000000000 +0100
@@ -29,8 +29,8 @@
set(PROJECT_HOMEPAGE_URL "https://github.com/babelouest/orcania/")
set(PROJECT_BUGREPORT_PATH "https://github.com/babelouest/orcania/issues")
set(LIBRARY_VERSION_MAJOR "2")
-set(LIBRARY_VERSION_MINOR "1")
-set(LIBRARY_VERSION_PATCH "1")
+set(LIBRARY_VERSION_MINOR "2")
+set(LIBRARY_VERSION_PATCH "0")
set(LIBS "-lm")
set(PROJECT_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}")
@@ -84,6 +84,7 @@
set(INC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
+set(BASE64URL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tools/base64url)
include_directories(${INC_DIR})
@@ -156,6 +157,19 @@
endif ()
endif ()
+# build base64url
+
+option(BUILD_BASE64URL "Build base64url application." ON)
+
+if (BUILD_BASE64URL)
+ add_executable(base64url ${BASE64URL_DIR}/base64url.c ${INC_DIR}/orcania.h ${PROJECT_BINARY_DIR}/orcania-cfg.h)
+ set_target_properties(base64url PROPERTIES SKIP_BUILD_RPATH TRUE)
+ add_dependencies(base64url orcania)
+ target_link_libraries(base64url orcania ${LIBS})
+ install(TARGETS base64url RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(FILES ${BASE64URL_DIR}/base64url.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT runtime)
+endif ()
+
# tests
option(BUILD_ORCANIA_TESTING "Build the testing tree." OFF) # because we do not use include(CTest)
@@ -293,8 +307,9 @@
COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
message(STATUS "Force inline implementation of strstr: ${WITH_STRSTR}")
-message(STATUS "Build static library: ${BUILD_STATIC}")
-message(STATUS "Build testing tree: ${BUILD_ULFIUS_TESTING}")
-message(STATUS "Install the header files: ${INSTALL_HEADER}")
-message(STATUS "Build RPM package: ${BUILD_RPM}")
-message(STATUS "Build documentation: ${BUILD_ORCANIA_DOCUMENTATION}")
+message(STATUS "Build static library: ${BUILD_STATIC}")
+message(STATUS "Build testing tree: ${BUILD_ORCANIA_TESTING}")
+message(STATUS "Install the header files: ${INSTALL_HEADER}")
+message(STATUS "Build RPM package: ${BUILD_RPM}")
+message(STATUS "Build documentation: ${BUILD_ORCANIA_DOCUMENTATION}")
+message(STATUS "Build base64url application: ${BUILD_BASE64URL}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/Makefile new/orcania-2.2.0/Makefile
--- old/orcania-2.1.1/Makefile 2020-06-30 02:06:50.000000000 +0200
+++ new/orcania-2.2.0/Makefile 2021-02-27 19:14:14.000000000 +0100
@@ -21,29 +21,36 @@
LIBORCANIA_LOCATION=./src
TESTS_LOCATION=./test
+BASE64URL_LOCATION=./tools/base64url/
all: target
target:
cd $(LIBORCANIA_LOCATION) && $(MAKE) $*
+ cd $(BASE64URL_LOCATION) && $(MAKE) $*
debug:
cd $(LIBORCANIA_LOCATION) && $(MAKE) debug $*
+ cd $(BASE64URL_LOCATION) && $(MAKE) debug $*
clean:
cd $(LIBORCANIA_LOCATION) && $(MAKE) clean
cd $(TESTS_LOCATION) && $(MAKE) clean
+ cd $(BASE64URL_LOCATION) && $(MAKE) clean
rm -rf doc/html/ doc/man/
check:
cd $(LIBORCANIA_LOCATION) && $(MAKE) debug $*
cd $(TESTS_LOCATION) && $(MAKE) test $*
+ cd $(BASE64URL_LOCATION) && $(MAKE) test $*
install:
cd $(LIBORCANIA_LOCATION) && $(MAKE) install $*
+ cd $(BASE64URL_LOCATION) && $(MAKE) install $*
uninstall:
cd $(LIBORCANIA_LOCATION) && $(MAKE) uninstall $*
+ cd $(BASE64URL_LOCATION) && $(MAKE) uninstall $*
doxygen:
doxygen doc/doxygen.cfg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/README.md new/orcania-2.2.0/README.md
--- old/orcania-2.1.1/README.md 2020-06-30 02:06:50.000000000 +0200
+++ new/orcania-2.2.0/README.md 2021-02-27 19:14:14.000000000 +0100
@@ -2,7 +2,6 @@
Potluck with different functions for different purposes that can be shared among C programs.
-[](https:…

## Documentation
@@ -23,7 +22,7 @@
### Build from source
-Download Orcania source code from Github:
+Download Orcania source code from GitHub:
```shell
$ git clone https://github.com/babelouest/orcania.git
@@ -34,7 +33,7 @@
[CMake](https://cmake.org/download/) minimum 3.5 is required.
-Run the cmake script in a subdirectory, example:
+Run the CMake script in a sub-directory, example:
```shell
$ git clone https://github.com/babelouest/orcania.git
@@ -45,7 +44,7 @@
$ make && sudo make install
```
-The available options for cmake are:
+The available options for CMake are:
- `-DBUILD_STATIC=[on|off]` (default `off`): Build the static archive in addition to the shared library
- `-DWITH_STRSTR=[on|off]` (default `off`): Force using inline implementation of strstr
- `-DBUILD_ORCANIA_TESTING=[on|off]` (default `off`): Build unit tests
@@ -65,7 +64,7 @@
This will install Orcania's files under `/usr/local/` DESTDIR.
-If you want to force using inline implementation of `strstr`, you can append the build option `STRSTRFLAG=1`. This is useful if your systemdoesn't have an implementation of the function `strstr` but isn't listed as one in Orcania. Like FreeRTOS.
+If you want to force using inline implementation of `strstr`, you can append the build option `STRSTRFLAG=1`. This is useful if your system doesn't have an implementation of the function `strstr` but isn't listed as one in Orcania. Like FreeRTOS.
```
$ cd src
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/doc/doxygen.cfg new/orcania-2.2.0/doc/doxygen.cfg
--- old/orcania-2.1.1/doc/doxygen.cfg 2020-06-30 02:06:50.000000000 +0200
+++ new/orcania-2.2.0/doc/doxygen.cfg 2021-02-27 19:14:14.000000000 +0100
@@ -790,7 +790,7 @@
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
-INPUT = API.md ./src/ ./include/
+INPUT = API.md ./src/ ./include/ tools/base64url/README.md
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/src/Makefile new/orcania-2.2.0/src/Makefile
--- old/orcania-2.1.1/src/Makefile 2020-06-30 02:06:50.000000000 +0200
+++ new/orcania-2.2.0/src/Makefile 2021-02-27 19:14:14.000000000 +0100
@@ -33,8 +33,8 @@
CFLAGS+=-c -fPIC -Wall -Werror -Wextra -I$(ORCANIA_INCLUDE) -D_REENTRANT $(ADDITIONALFLAGS) $(CPPFLAGS)
OUTPUT=liborcania.so
VERSION_MAJOR=2
-VERSION_MINOR=1
-VERSION_PATCH=1
+VERSION_MINOR=2
+VERSION_PATCH=0
OBJECTS=orcania.o memory.o base64.o
LIBS=-lc -lm
@@ -95,7 +95,7 @@
install: all $(PKGCONFIG_FILE)
install $(OUTPUT).$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH) $(DESTDIR)/lib
- mkdir -p $(DESTDIR)/lib/pkgconfig/
+ mkdir -p $(DESTDIR)/lib/pkgconfig/ $(DESTDIR)/include
install -m644 $(PKGCONFIG_FILE) $(DESTDIR)/lib/pkgconfig/
install -m644 ../include/orcania.h $(DESTDIR)/include
install -m644 $(CONFIG_FILE) $(DESTDIR)/include
@@ -103,6 +103,7 @@
static-install: static
install liborcania.a $(DESTDIR)/lib
+ mkdir -p $(DESTDIR)/lib/pkgconfig/ $(DESTDIR)/include
install -m644 $(PKGCONFIG_FILE) $(DESTDIR)/lib/pkgconfig
install -m644 ../include/orcania.h $(DESTDIR)/include
install -m644 $(CONFIG_FILE) $(DESTDIR)/include
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/tools/base64url/Makefile new/orcania-2.2.0/tools/base64url/Makefile
--- old/orcania-2.1.1/tools/base64url/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ new/orcania-2.2.0/tools/base64url/Makefile 2021-02-27 19:14:14.000000000 +0100
@@ -0,0 +1,66 @@
+#
+# base64url: Base64Url encode or decode FILE, or standard input, to standard output.
+#
+# Makefile used to build the software
+#
+# Copyright 2021 Nicolas Mora <mail(a)babelouest.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU GENERAL PUBLIC LICENSE
+# License as published by the Free Software Foundation;
+# version 3 of the License.
+#
+# 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 GENERAL PUBLIC LICENSE for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+CC=gcc
+ORCANIA_INCLUDE=../../include
+ORCANIA_LOCATION=../../src
+DESTDIR=/usr/local
+
+CFLAGS+=-Wall -I$(ORCANIA_INCLUDE) $(ADDITIONALFLAGS) $(CPPFLAGS)
+LIBS=-lc -lorcania -L$(ORCANIA_LOCATION)
+ORCANIA_LIBRARY=../../src/librhonabwy.so
+VALGRIND_COMMAND=valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --track-origins=yes
+
+all: base64url
+
+all: ADDITIONALFLAGS= -O3
+
+clean:
+ rm -f *.o base64url *.b64
+
+debug: base64url
+
+debug: ADDITIONALFLAGS=-DDEBUG -g -O0
+
+$(ORCANIA_LIBRARY):
+ cd $(ORCANIA_LOCATION) && $(MAKE) debug
+
+base64url: $(ORCANIA_LIBRARY) base64url.c
+ $(CC) -o base64url $(CFLAGS) base64url.c $(LIBS)
+
+install: base64url
+ mkdir -p $(DESTDIR)/bin $(DESTDIR)/man/man1/
+ install -m755 base64url $(DESTDIR)/bin
+ install -m644 base64url.1 $(DESTDIR)/man/man1/
+
+uninstall:
+ rm -f $(DESTDIR)/bin/base64url
+
+manpage: base64url
+ help2man ./base64url -s 1 -n "Base64Url encode or decode FILE, or standard input, to standard output." > base64url.1
+
+test: base64url
+ echo plop | LD_LIBRARY_PATH=$(ORCANIA_LOCATION) $(VALGRIND_COMMAND) ./base64url
+ LD_LIBRARY_PATH=$(ORCANIA_LOCATION) $(VALGRIND_COMMAND) ./base64url -f README.md
+ LD_LIBRARY_PATH=$(ORCANIA_LOCATION) $(VALGRIND_COMMAND) ./base64url -f error || true
+ echo ";error;" | LD_LIBRARY_PATH=$(ORCANIA_LOCATION) $(VALGRIND_COMMAND) ./base64url -d || true
+ echo Z3J1dAo | LD_LIBRARY_PATH=$(ORCANIA_LOCATION) $(VALGRIND_COMMAND) ./base64url -d
+ echo ZuJ1dAo | LD_LIBRARY_PATH=$(ORCANIA_LOCATION) $(VALGRIND_COMMAND) ./base64url -d -i
+ echo plop | LD_LIBRARY_PATH=$(ORCANIA_LOCATION) $(VALGRIND_COMMAND) ./base64url -w 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/tools/base64url/README.md new/orcania-2.2.0/tools/base64url/README.md
--- old/orcania-2.1.1/tools/base64url/README.md 1970-01-01 01:00:00.000000000 +0100
+++ new/orcania-2.2.0/tools/base64url/README.md 2021-02-27 19:14:14.000000000 +0100
@@ -0,0 +1,24 @@
+# base64url: Base64Url encode or decode FILE, or standard input, to standard output.
+
+Copyright 2021 Nicolas Mora <mail(a)babelouest.org>
+
+This program is free software; you can redistribute it and/or modify it under the terms of the GPL3 License.
+
+## Options
+
+Options available:
+
+```shell
+-d, --decode
+ Decode data
+-i, --ignore-garbage
+ when decoding, ignore non-alphabet characters
+-w, --wrap <COLS>
+ wrap encoded lines after COLS character (default 76). Use 0 to disable line wrapping
+-f, --file <FILE_NAME>
+ Encode or decode FILE_NAME content - if this option is missing, red from stdin
+-h, --help
+ display this help and exit
+-v, --version
+ output version information and exit
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/tools/base64url/base64url.1 new/orcania-2.2.0/tools/base64url/base64url.1
--- old/orcania-2.1.1/tools/base64url/base64url.1 1970-01-01 01:00:00.000000000 +0100
+++ new/orcania-2.2.0/tools/base64url/base64url.1 2021-02-27 19:14:14.000000000 +0100
@@ -0,0 +1,60 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.8.
+.TH BASE64URL "1" "February 2021" "base64url 0.7" "User Commands"
+.SH NAME
+base64url \- Base64Url encode or decode FILE, or standard input, to standard output.
+.SH SYNOPSIS
+.B base64url
+[\fI\,OPTIONS\/\fR]
+.SH DESCRIPTION
+base64url \- Base64Url encode or decode FILE, or standard input, to standard output.
+.PP
+Version 0.7
+.SH COPYRIGHT
+Copyright 2021 Nicolas Mora <mail(a)babelouest.org>
+.PP
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GPL 3
+.PP
+Command\-line options:
+.PP
+\fB\-d\fR, \fB\-\-decode\fR
+.IP
+Decode data
+.PP
+\fB\-i\fR, \fB\-\-ignore\-garbage\fR
+.IP
+when decoding, ignore non\-alphabet characters
+.PP
+\fB\-w\fR, \fB\-\-wrap\fR <COLS>
+.TP
+wrap encoded lines after COLS character (default 76).
+Use 0 to disable line wrapping
+.PP
+\fB\-f\fR, \fB\-\-file\fR <FILE_NAME>
+.IP
+Encode or decode FILE_NAME content \- if this option is missing, red from stdin
+.PP
+\fB\-h\fR, \fB\-\-help\fR
+.IP
+display this help and exit
+.PP
+\fB\-v\fR, \fB\-\-version\fR
+.IP
+output version information and exit
+.PP
+.br
+Copyright 2021 Nicolas Mora <mail(a)babelouest.org>
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GPL 3
+.SH "SEE ALSO"
+The full documentation for
+.B base64url
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B base64url
+programs are properly installed at your site, the command
+.IP
+.B info base64url
+.PP
+should give you access to the complete manual.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/orcania-2.1.1/tools/base64url/base64url.c new/orcania-2.2.0/tools/base64url/base64url.c
--- old/orcania-2.1.1/tools/base64url/base64url.c 1970-01-01 01:00:00.000000000 +0100
+++ new/orcania-2.2.0/tools/base64url/base64url.c 2021-02-27 19:14:14.000000000 +0100
@@ -0,0 +1,252 @@
+/**
+ *
+ * base64url: Base64Url encode or decode FILE, or standard input, to standard output.
+ *
+ * Copyright 2021 Nicolas Mora <mail(a)babelouest.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation;
+ * version 3 of the License.
+ *
+ * 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 GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <string.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <orcania.h>
+
+#define _BASE64URL_VERSION "0.7"
+
+#define ACTION_ENCODE 0
+#define ACTION_DECODE 1
+
+#define DEFAULT_WRAP 76
+
+static void print_output(const unsigned char * output, size_t output_len, unsigned long int wrap, short int ignore) {
+ size_t i;
+ for (i=0; i<output_len; i++) {
+ if (i && wrap && !(i%wrap)) {
+ fputs("\n", stdout);
+ }
+ if (!ignore || isprint(output[i])) {
+ fputc(output[i], stdout);
+ }
+ }
+}
+
+static void print_help(FILE * output, const char * command) {
+ fprintf(output, "base64url - Base64Url encode or decode FILE, or standard input, to standard output.\n");
+ fprintf(output, "\nUsage: %s [OPTIONS]", command);
+ fprintf(output, "\n");
+ fprintf(output, "Version %s\n", _BASE64URL_VERSION);
+ fprintf(output, "\n");
+ fprintf(output, "Copyright 2021 Nicolas Mora <mail(a)babelouest.org>\n");
+ fprintf(output, "\n");
+ fprintf(output, "This program is free software; you can redistribute it and/or\n");
+ fprintf(output, "modify it under the terms of the GPL 3\n");
+ fprintf(output, "\n");
+ fprintf(output, "Command-line options:\n");
+ fprintf(output, "\n");
+ fprintf(output, "-d, --decode\n");
+ fprintf(output, "\tDecode data\n");
+ fprintf(output, "-i, --ignore-garbage\n");
+ fprintf(output, "\twhen decoding, ignore non-alphabet characters\n");
+ fprintf(output, "-w, --wrap <COLS>\n");
+ fprintf(output, "\twrap encoded lines after COLS character (default 76). Use 0 to disable line wrapping\n");
+ fprintf(output, "-f, --file <FILE_NAME>\n");
+ fprintf(output, "\tEncode or decode FILE_NAME content - if this option is missing, red from stdin\n");
+ fprintf(output, "-h, --help\n");
+ fprintf(output, "\tdisplay this help and exit\n");
+ fprintf(output, "-v, --version\n");
+ fprintf(output, "\toutput version information and exit\n");
+}
+
+static unsigned char * get_file_content(const char * file_path, size_t * length) {
+ unsigned char * buffer = NULL;
+ size_t res;
+ FILE * f;
+
+ f = fopen (file_path, "rb");
+ if (f) {
+ fseek (f, 0, SEEK_END);
+ *length = ftell (f);
+ fseek (f, 0, SEEK_SET);
+ buffer = o_malloc(((*length)+1)*sizeof(char));
+ if (buffer) {
+ res = fread (buffer, 1, *length, f);
+ if (res != *length) {
+ fprintf(stderr, "fread warning, reading %zu while expecting %zu", res, *length);
+ }
+ }
+ fclose (f);
+ } else {
+ fprintf(stderr, "error opening file %s\n", file_path);
+ }
+
+ return buffer;
+}
+
+static unsigned char * get_stdin_content(size_t * length) {
+ int size = 100;
+ unsigned char * out = NULL, buffer[size];
+ ssize_t read_length;
+
+ *length = 0;
+ while ((read_length = read(0, buffer, size)) > 0) {
+ out = o_realloc(out, (*length)+read_length+1);
+ memcpy(out+(*length), buffer, read_length);
+ (*length) += read_length;
+ out[(*length)] = '\0';
+ }
+ return out;
+}
+
+int main(int argc, char ** argv) {
+ short int action = ACTION_ENCODE, ignore = 0;
+ unsigned long int wrap = DEFAULT_WRAP;
+ long int s_wrap = 0;
+ const char * short_options = "d::i::w:f:v::h";
+ int next_option, ret = 0, exit_loop = 0;
+ char * file = NULL, * endptr = NULL, * tmp = NULL;
+ unsigned char * input = NULL, * output = NULL;
+ size_t input_len = 0, output_len = 0;
+ static const struct option long_options[]= {
+ {"decode", no_argument, NULL, 'd'},
+ {"ignore-garbage", no_argument, NULL, 'i'},
+ {"wrap", required_argument, NULL, 'w'},
+ {"file", required_argument, NULL, 'f'},
+ {"version", no_argument, NULL, 'v'},
+ {"help", no_argument, NULL, 'h'},
+ {NULL, 0, NULL, 0}
+ };
+
+ do {
+ next_option = getopt_long(argc, argv, short_options, long_options, NULL);
+
+ switch (next_option) {
+ case 'd':
+ action = ACTION_DECODE;
+ break;
+ case 'i':
+ ignore = 1;
+ break;
+ case 'w':
+ s_wrap = strtoul(optarg, &endptr, 10);
+ if (*endptr == '\0' && s_wrap >= 0) {
+ wrap = (unsigned long int)s_wrap;
+ } else {
+ print_help(stderr, argv[0]);
+ exit_loop = 1;
+ ret = 1;
+ }
+ break;
+ case 'f':
+ o_free(file);
+ file = o_strdup(optarg);
+ break;
+ case 'v':
+ fprintf(stdout, "%s %s\n", argv[0], _BASE64URL_VERSION);
+ fprintf(stdout, "Copyright 2021 Nicolas Mora <mail(a)babelouest.org>\n");
+ fprintf(stdout, "This program is free software; you can redistribute it and/or\n");
+ fprintf(stdout, "modify it under the terms of the GPL 3\n");
+ exit_loop = 1;
+ break;
+ case 'h':
+ print_help(stdout, argv[0]);
+ exit_loop = 1;
+ break;
+ default:
+ break;
+ }
+ } while (next_option != -1 && !exit_loop);
+
+ if (!exit_loop) {
+ if (file != NULL) {
+ input = get_file_content(file, &input_len);
+ } else {
+ input = get_stdin_content(&input_len);
+ }
+
+ if (input != NULL && input_len) {
+ if (action == ACTION_ENCODE) {
+ if (o_base64url_encode(input, input_len, NULL, &output_len)) {
+ if (output_len) {
+ if ((output = o_malloc(output_len+4)) != NULL) {
+ if (o_base64url_encode(input, input_len, output, &output_len)) {
+ print_output(output, output_len, wrap, ignore);
+ } else {
+ fprintf(stderr, "%s: Error encoding\n", argv[0]);
+ }
+ } else {
+ fprintf(stderr, "%s: Error encoding\n", argv[0]);
+ }
+ } else {
+ fprintf(stderr, "%s: Error encoding\n", argv[0]);
+ }
+ } else {
+ fprintf(stderr, "%s: Error encoding\n", argv[0]);
+ }
+ } else {
+ tmp = str_replace((const char *)input, " ", "");
+ o_free(input);
+ input = (unsigned char *)tmp;
+ tmp = str_replace((const char *)input, "\n", "");
+ o_free(input);
+ input = (unsigned char *)tmp;
+ tmp = str_replace((const char *)input, "\t", "");
+ o_free(input);
+ input = (unsigned char *)tmp;
+ tmp = str_replace((const char *)input, "\v", "");
+ o_free(input);
+ input = (unsigned char *)tmp;
+ tmp = str_replace((const char *)input, "\f", "");
+ o_free(input);
+ input = (unsigned char *)tmp;
+ tmp = str_replace((const char *)input, "\r", "");
+ o_free(input);
+ input = (unsigned char *)tmp;
+ input_len = o_strlen((const char *)input);
+ if (o_base64url_decode(input, input_len, NULL, &output_len)) {
+ if (output_len) {
+ if ((output = o_malloc(output_len+4)) != NULL) {
+ if (o_base64url_decode(input, input_len, output, &output_len)) {
+ print_output(output, output_len, 0, ignore);
+ } else {
+ fprintf(stderr, "%s: invalid input\n", argv[0]);
+ ret = 1;
+ }
+ } else {
+ fprintf(stderr, "%s: Error decoding\n", argv[0]);
+ ret = 1;
+ }
+ } else {
+ fprintf(stderr, "%s: invalid input\n", argv[0]);
+ ret = 1;
+ }
+ } else {
+ fprintf(stderr, "%s: invalid input\n", argv[0]);
+ ret = 1;
+ }
+ }
+ } else {
+ fprintf(stderr, "-- Error no input --\n");
+ print_help(stderr, argv[0]);
+ ret = 1;
+ }
+ o_free(input);
+ o_free(output);
+ }
+ o_free(file);
+ return ret;
+}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package minikube for openSUSE:Factory checked in at 2021-03-30 21:09:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/minikube (Old)
and /work/SRC/openSUSE:Factory/.minikube.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "minikube"
Tue Mar 30 21:09:35 2021 rev:24 rq:877822 version:1.18.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/minikube/minikube.changes 2020-12-22 11:52:38.202119613 +0100
+++ /work/SRC/openSUSE:Factory/.minikube.new.2401/minikube.changes 2021-03-30 21:18:15.489822177 +0200
@@ -1,0 +2,144 @@
+Fri Mar 5 16:07:53 UTC 2021 - Klaus K��mpf <kkaempf(a)suse.com>
+
+- Update to 1.81.1
+ Features:
+
+ kvm2 driver: Add flag --kvm-numa-count" support topology-manager
+ simulate numa #10471
+
+ Minor Improvements:
+
+ Spanish translations #10687
+ Change podman priority to default on Linux #10458
+
+ Bug Fixes:
+
+ Remove WSLENV empty check from IsMicrosoftWSL #10711
+ Added WaitGroups to prevent stderr/stdout from being empty in error logs #10694
+
+ Version changes:
+
+ Restore kube-cross build image and bump go to version 1.16 #10691
+ Bump github.com/spf13/viper from 1.7.0 to 1.7.1 #10658
+
+-------------------------------------------------------------------
+Tue Mar 2 13:53:54 UTC 2021 - Klaus K��mpf <kkaempf(a)suse.com>
+
+- Update to 1.18.0
+ Bug Fixes:
+
+ fix: metric server serve on all ipv4 interfaces #10613
+
+- Update to 1.18.0-beta.0
+
+ Features:
+
+ Auto-pause addon: automatically pause Kubernetes when not in use #10427
+ GCP Auth addon: bump to v0.0.4 for multiarch #10361
+ Add new command: image load #10366
+ Add faster profile list command with -l or --light option. #10380
+ Add last start logs to 'minikube logs' output #10465
+ Introduce alias 'native' for 'none' driver #10540
+ Add audit logs to 'minikube logs' output #10350
+ Allow setting custom images for addons #10111
+
+ Minor Improvements:
+
+ Deb package: make sure to update the package metadata #10420
+ Improve the error message of setting cgroup memory limit. #10575
+ SSH driver: Don't select Discouraged or Obsolete by default #10554
+ drop support for github packages for kicbase #10582
+ disable minikube-scheduled-stop.service until a user schedules a stop #10548
+ docker/podman: add crun for running on cgroups v2 #10426
+ Specify mount point for cri-o config #10528
+ Ensure addon integrity by adding Image SHA #10527
+ improve kvm network delete/cleanup #10479
+ docker/podman: avoid creating overlapping networks with other tools (KVM,...) #10439
+ Improve insecure registry validation #10493
+ Stop using --memory-swap if it is not available #10507
+ UI: do not send image repo info to stderr #10462
+ add new extra component to --wait=all to validate a healthy cluster #10424
+ Add condition to check --cpus count with available cpu count #10388
+ Disable all drivers except "docker" and "ssh" on darwin/arm64 #10452
+ Podman: explicitly remove podman volume and network #10435
+ Disallow running windows binary (.exe) inside WSL #10354
+ adding insecure registry support to containerd runtime #10385
+ Docker driver: support ancient versions of docker #10369
+
+ Bug Fixes:
+
+ cgroup v2: skip setting --memory limits when not configurable. #10512
+ metallb addon: fix configuration empty load balancing IP range #10395
+ Fixed bug where tmp dir incorrectly set for Snap package manager #10372
+ Fixed audit.json error when delete --purge ran #10586
+ Fix exit message for insufficient memory #10553
+ Fix minikube kubectl context switching #10535
+ SSH driver: Make sure that ssh driver gets an ip address #10309
+ Fix profile list when there are multi node clusters #9996
+ Don't allow profile names that conflict with a multi-node name #10119
+
+ Version changes:
+
+ Buildroot 2020.02.10 #10348
+ Change from crio-1.19 to crio-1.20 in kicbase #10477
+ bump oldest kubernetes version to v1.14.0, bump default kubernetes version #10531
+ Upgrade crio to 1.20.0 #10476
+ Upgrade Docker, from 20.10.2 to 20.10.3 #10417
+
+-------------------------------------------------------------------
+Sat Feb 27 12:48:07 UTC 2021 - Chris Coutinho <chrisbcoutinho(a)gmail.com>
+
+- Update to 1.17.1
+ Features:
+
+ Add new flag --user and to log executed commands #10106
+ Unhide --schedule flag for scheduled stop #10274
+
+ Bugs:
+
+ fixing debian and arch concurrent multiarch builds #9998
+ configure the crictl yaml file to avoid the warning #10221
+
+
+- Update to 1.17.0
+ Features:
+
+ Add multi-arch (arm64) support for docker/podman drivers #9969
+ Add new driver "SSH" to bootstrap generic minkube clusters over ssh #10099
+ Annotate Kubeconfig with 'Extension' to identify contexts/clusters created by minikube #10126
+ Add support for systemd cgroup to containerd runtime #10100
+ Add --network flag to select docker network to run with docker driver #9538
+
+ Minor Improvements:
+
+ Improve exit codes by splitting PROVIDER_DOCKER_ERROR into more specific reason codes #10212
+ Improve warning about the suggested memory size #10187
+ Remove systemd dependency from none driver #10112
+ Delete the existing cluster if guest driver mismatch #10084
+ Remove obsolete 'vmwarefusion' driver, add friendly message #9958
+ UI: Add a spinner for creating container step #10024
+ Added validation for --insecure-registry values #9977
+
+ Bug Fixes:
+
+ Snap package manger: fix cert copy issue #10042
+ Ignore non-socks5 ALL_PROXY env var when checking docker status #10109
+ Docker-env: avoid race condition in bootstrap certs for parallel runs #10118
+ Fix 'profile list' for multi-node clusters #9955
+ Change metrics-server pull policy to IfNotPresent #10096
+ Podman driver: Handle installations without default bridge #10092
+ Fix docker inspect network go template for network which doesn't have MTU #10053
+ Docker/Podman: add control-plane to NO_PROXY #10046
+ "cache add": fix command error when not specifying :latest tag #10058
+ Networking: Fix ClusterDomain value in kubeadm KubeletConfiguration #10049
+ Fix typo in the csi-hostpath-driver addon name #10034
+
+ Upgrades:
+
+ bump default Kubernetes version to v1.20.2 and add v1.20.3-rc.0 #10194
+ Upgrade Docker, from 20.10.1 to 20.10.2 #10154
+ ISO: Added sch_htb, cls_fw, cls_matchall, act_connmark and ifb kernel modules #10048
+ ISO: add XFS_QUOTA support to guest vm #9999
+
+
+-------------------------------------------------------------------
Old:
----
minikube-1.16.0.tar.gz
New:
----
minikube-1.18.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ minikube.spec ++++++
--- /var/tmp/diff_new_pack.LTQNOm/_old 2021-03-30 21:18:31.833834138 +0200
+++ /var/tmp/diff_new_pack.LTQNOm/_new 2021-03-30 21:18:31.837834141 +0200
@@ -1,7 +1,7 @@
#
# spec file for package minikube
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: minikube
-Version: 1.16.0
+Version: 1.18.1
Release: 0
Summary: Tool to run Kubernetes locally
License: Apache-2.0
++++++ minikube-1.16.0.tar.gz -> minikube-1.18.1.tar.gz ++++++
/work/SRC/openSUSE:Factory/minikube/minikube-1.16.0.tar.gz /work/SRC/openSUSE:Factory/.minikube.new.2401/minikube-1.18.1.tar.gz differ: char 19, line 1
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/minikube/vendor.tar.gz /work/SRC/openSUSE:Factory/.minikube.new.2401/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package texstudio for openSUSE:Factory checked in at 2021-03-30 21:09:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/texstudio (Old)
and /work/SRC/openSUSE:Factory/.texstudio.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "texstudio"
Tue Mar 30 21:09:18 2021 rev:25 rq:875953 version:3.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/texstudio/texstudio.changes 2021-01-11 17:18:41.780827425 +0100
+++ /work/SRC/openSUSE:Factory/.texstudio.new.2401/texstudio.changes 2021-03-30 21:15:25.833698016 +0200
@@ -1,0 +2,23 @@
+Mon Feb 22 19:07:22 UTC 2021 - Markus Ebner <info(a)ebner-markus.de>
+
+- Update to version 3.1.1
+ * fix crashes concerning opening included files
+ * let global TOC update as you type
+- Update to version 3.1.0
+ * fix changing GUI language
+ * global TOC added which needs to be updated for now (WIP)
+
+-------------------------------------------------------------------
+Tue Feb 16 22:52:10 UTC 2021 - Markus Ebner <info(a)ebner-markus.de>
+
+- Update to version 3.0.5
+ * fix crash when deleting all elements of a build chain (#1415)
+ * fix large tooltips on win with ADWAITA style
+ * number of pdf rendering threads limited to 8 (or to set value, see #1463)
+ * add command line option --texpath to force a tex path
+ * fix touchpad scroll in x direction
+ * fix a seldom crash
+ * adapt speller dialog to find the same errors as the online checker
+ * fix replace in global search
+
+-------------------------------------------------------------------
Old:
----
texstudio-3.0.4.tar.gz
New:
----
texstudio-3.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ texstudio.spec ++++++
--- /var/tmp/diff_new_pack.rt0OLn/_old 2021-03-30 21:15:27.189699008 +0200
+++ /var/tmp/diff_new_pack.rt0OLn/_new 2021-03-30 21:15:27.189699008 +0200
@@ -17,7 +17,7 @@
Name: texstudio
-Version: 3.0.4
+Version: 3.1.1
Release: 0
Summary: LaTeX Editor
License: GPL-2.0-only AND GPL-3.0-only AND Apache-2.0 AND MPL-1.1
++++++ texstudio-3.0.4.tar.gz -> texstudio-3.1.1.tar.gz ++++++
/work/SRC/openSUSE:Factory/texstudio/texstudio-3.0.4.tar.gz /work/SRC/openSUSE:Factory/.texstudio.new.2401/texstudio-3.1.1.tar.gz differ: char 13, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libquo for openSUSE:Factory checked in at 2021-03-30 21:09:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libquo (Old)
and /work/SRC/openSUSE:Factory/.libquo.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libquo"
Tue Mar 30 21:09:09 2021 rev:9 rq:875835 version:1.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/libquo/libquo.changes 2019-11-03 12:14:08.520741243 +0100
+++ /work/SRC/openSUSE:Factory/.libquo.new.2401/libquo.changes 2021-03-30 21:09:22.501309526 +0200
@@ -1,0 +2,7 @@
+Sun Feb 28 18:16:06 UTC 2021 - Dirk M��ller <dmueller(a)suse.com>
+
+- update to 1.3.1:
+ * see https://github.com/lanl/libquo/compare/v1.3...v1.3.1
+- remove 29.patch (upstream)
+
+-------------------------------------------------------------------
Old:
----
29.patch
libquo-1.3.tar.gz
New:
----
libquo-1.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libquo.spec ++++++
--- /var/tmp/diff_new_pack.dc2Y8u/_old 2021-03-30 21:09:23.201310294 +0200
+++ /var/tmp/diff_new_pack.dc2Y8u/_new 2021-03-30 21:09:23.205310299 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libquo
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
# Copyright (c) 2014-2016 Christoph Junghans <junghans(a)votca.org>
#
# All modifications and additions to the file contributed by third parties
@@ -16,6 +16,7 @@
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
# Build with OpenMPI
%if 0%{?sle_version} == 0
%define mpiver openmpi2
@@ -32,19 +33,17 @@
%endif
Name: libquo
-Version: 1.3
+Version: 1.3.1
Release: 0
Summary: A library for run-time tuning of process binding policies
License: BSD-3-Clause
Group: Development/Libraries/C and C++
URL: https://lanl.github.io/libquo/
-Source: http://lanl.github.io/libquo/dists/%{name}-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM - 29.patch - comp_dgemv: fix return value
-Patch0: https://patch-diff.githubusercontent.com/raw/lanl/libquo/pull/29.patch
-BuildRequires: hwloc
-BuildRequires: numactl
+Source: https://lanl.github.io/libquo/dists/%{name}-%{version}.tar.gz
BuildRequires: %{mpiver}
BuildRequires: %{mpiver}-devel
+BuildRequires: hwloc
+BuildRequires: numactl
BuildRequires: pkgconfig
%description
@@ -54,11 +53,11 @@
during the execution as different computational phases are entered
and exited, respectively.
-%package -n libquo6
+%package -n libquo7
Summary: A library for run-time tuning of process binding policies
Group: System/Libraries
-%description -n libquo6
+%description -n libquo7
QUO is an API tailored for MPI/MPI+X codes that may benefit from
evolving process binding policies during their execution. QUO allows
for arbitrary process binding policies to be enacted and reverted
@@ -68,7 +67,7 @@
%package devel
Summary: Development headers and libraries for libquo
Group: Development/Libraries/C and C++
-Requires: libquo6 = %{version}-%{release}
+Requires: libquo7 = %{version}-%{release}
%description devel
QUO is an API tailored for MPI/MPI+X codes that may benefit from
@@ -81,7 +80,6 @@
%prep
%setup -q
-%patch0 -p1
%build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
@@ -95,10 +93,10 @@
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
-%post -n libquo6 -p /sbin/ldconfig
-%postun -n libquo6 -p /sbin/ldconfig
+%post -n libquo7 -p /sbin/ldconfig
+%postun -n libquo7 -p /sbin/ldconfig
-%files -n libquo6
+%files -n libquo7
%defattr(-,root,root,0755)
%{_libdir}/libquo.so.*
++++++ libquo-1.3.tar.gz -> libquo-1.3.1.tar.gz ++++++
++++ 97965 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package flameshot for openSUSE:Factory checked in at 2021-03-30 21:08:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/flameshot (Old)
and /work/SRC/openSUSE:Factory/.flameshot.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "flameshot"
Tue Mar 30 21:08:59 2021 rev:11 rq:879359 version:0.9.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/flameshot/flameshot.changes 2020-10-18 16:33:21.580809638 +0200
+++ /work/SRC/openSUSE:Factory/.flameshot.new.2401/flameshot.changes 2021-03-30 21:09:17.845304410 +0200
@@ -1,0 +2,42 @@
+Tue Mar 16 07:20:52 UTC 2021 - Avindra Goolcharan <avindra(a)opensuse.org>
+
+- Update description with features and flameshot-org
+
+-------------------------------------------------------------------
+Sun Feb 28 12:05:38 UTC 2021 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 0.9.0
+ Known Issues
+ * Fractional scaling issues are not resolved. We are working with
+ Qt upstream on this issue.
+ * KDE Wayland requires modification to the Desktop file.
+ New Features
+ * Improved Wayland support on Gnome
+ + Behind the scenes we configure flameshot to automatically run
+ on xcb. This significantly improves the wayland experience.
+ This resolves issues with multimonitor setups and copying to
+ the clipboard
+ * Ability to run flameshot on Sway
+ * New option to allow the the clipboard image to be a jpeg
+ instead of a png. This may reduce bandwidth when pasting the
+ image into chat or email clients.
+ * New global shortcut menu. All actions hotkeys are fully
+ customizable.
+ * Ability to take "symmetric" selections by holding down the
+ Shift key while resizing the selection.
+ * The rectangle tool will now round the corners of the rectangles
+ based on the current thickness.
+ * All imgur uploads are now tracked in the "Upload History" menu.
+ This makes it much easier to delete of images off imgur or find
+ the upload link later.
+ * New option for setting a "fixed save path". When this is
+ enabled a user will no longer need to set the path for images
+ that are saved.
+ Fixes
+ * Under certain circumstance the circle count could get set to
+ the wrong number with large numbers of undo / redo. This has
+ been fixed.
+ * Close after capture has been removed. This feature was not well
+ implemented and lead to numerous bugs.
+
+-------------------------------------------------------------------
Old:
----
flameshot-0.8.5.tar.gz
New:
----
flameshot-0.9.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ flameshot.spec ++++++
--- /var/tmp/diff_new_pack.ZxVgTf/_old 2021-03-30 21:09:18.449305074 +0200
+++ /var/tmp/diff_new_pack.ZxVgTf/_new 2021-03-30 21:09:18.449305074 +0200
@@ -1,7 +1,7 @@
#
# spec file for package flameshot
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,14 +17,13 @@
Name: flameshot
-Version: 0.8.5
+Version: 0.9.0
Release: 0
Summary: Screenshot software
License: GPL-3.0-only
Group: Productivity/Graphics/Other
-URL: https://github.com/lupoDharkael/flameshot#flameshot
-#Git-Clone: https://github.com/flameshot-org/flameshot.git
-Source0: https://github.com/lupoDharkael/flameshot/archive/v%{version}.tar.gz#/%{nam…
+URL: https://github.com/flameshot-org/flameshot#flameshot
+Source0: https://github.com/flameshot-org/flameshot/archive/v%{version}.tar.gz#/%{na…
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: gcc-c++
@@ -41,7 +40,13 @@
%description
A program to capture screenshots.
-It includes CLI options as well as a UI for capturing and annotating screenshots.
+
+Features:
+
+ * Customizable appearance
+ * Annotation and drawing tools
+ * DBus interface
+ * Export to file, web
%package bash-completion
Summary: Bash Completion for %{name}
++++++ flameshot-0.8.5.tar.gz -> flameshot-0.9.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/flameshot/flameshot-0.8.5.tar.gz /work/SRC/openSUSE:Factory/.flameshot.new.2401/flameshot-0.9.0.tar.gz differ: char 14, line 1
1
0