openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
July 2019
- 2 participants
- 2045 discussions
Hello community,
here is the log from the commit of package 000product for openSUSE:Factory checked in at 2019-07-30 12:39:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000product (Old)
and /work/SRC/openSUSE:Factory/.000product.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Tue Jul 30 12:39:37 2019 rev:1466 rq: version:unknown
Tue Jul 30 12:39:35 2019 rev:1465 rq: version:unknown
Tue Jul 30 12:39:34 2019 rev:1464 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
openSUSE-MicroOS-dvd5-dvd-x86_64.kiwi: same change
openSUSE-MicroOS-dvd5-kubic-dvd-x86_64.kiwi: same change
openSUSE-cd-mini-i586.kiwi: same change
openSUSE-cd-mini-x86_64.kiwi: same change
openSUSE-dvd5-dvd-i586.kiwi: same change
openSUSE-dvd5-dvd-x86_64.kiwi: same change
openSUSE-ftp-ftp-i586_x86_64.kiwi: same change
stub.kiwi: same change
++++++ openSUSE-Addon-NonOss.product ++++++
--- /var/tmp/diff_new_pack.OsPRkS/_old 2019-07-30 12:39:42.954930482 +0200
+++ /var/tmp/diff_new_pack.OsPRkS/_new 2019-07-30 12:39:42.954930482 +0200
@@ -4,7 +4,7 @@
<product>
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20190729</version>
+ <version>20190730</version>
<release>0</release>
<summary>openSUSE NonOSS Addon</summary>
<shortsummary>non oss addon</shortsummary>
++++++ openSUSE-MicroOS.product ++++++
--- /var/tmp/diff_new_pack.OsPRkS/_old 2019-07-30 12:39:42.966930480 +0200
+++ /var/tmp/diff_new_pack.OsPRkS/_new 2019-07-30 12:39:42.966930480 +0200
@@ -6,7 +6,7 @@
<name>openSUSE-MicroOS</name>
<releasepkgname>openSUSE-MicroOS-release</releasepkgname>
<endoflife/>
- <version>20190729</version>
+ <version>20190730</version>
<!-- release is no longer optional -->
<release>0</release>
<productline>openSUSE-MicroOS</productline>
++++++ openSUSE.product ++++++
--- /var/tmp/diff_new_pack.OsPRkS/_old 2019-07-30 12:39:42.982930478 +0200
+++ /var/tmp/diff_new_pack.OsPRkS/_new 2019-07-30 12:39:42.982930478 +0200
@@ -4,7 +4,7 @@
<product>
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20190729</version>
+ <version>20190730</version>
<release>0</release>
<productline>openSUSE</productline>
1
0
Hello community,
here is the log from the commit of package python-fire for openSUSE:Factory checked in at 2019-07-30 12:39:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-fire (Old)
and /work/SRC/openSUSE:Factory/.python-fire.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-fire"
Tue Jul 30 12:39:33 2019 rev:5 rq:719775 version:0.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-fire/python-fire.changes 2019-03-11 11:15:17.365341995 +0100
+++ /work/SRC/openSUSE:Factory/.python-fire.new.4126/python-fire.changes 2019-07-30 12:39:38.130931283 +0200
@@ -1,0 +2,23 @@
+Tue Jul 30 07:07:56 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 0.2.0
+ * Help and usage screens
+ * Help screens now have a man-page appearance and are shown with less-style pagination. Usage screens are shown when a user-error is encountered. The help and usage screens are considerably cleaner than the default output in previous versions of Fire.
+ * Custom serialization
+ * If you define a custom __str__ method on an object, that will be used to serialize the object when it is the final result of a Fire command. This means better support for numpy arrays, and better support for custom types.
+ * Docstring parsing
+ * Notably, docstrings are parsed in order to determine the descriptions to use for arguments in the help screens. We largely support (but not fully) Google, numpy, and RST style docstrings. These are the three most common styles of docstring used in Python code.
+ * Access --help naturally
+ * You no longer need to separate --help from your command with an extra --. Simply running command -h or command --help will give help, provided there isn't an argument named help in your component.
+ * NamedTuples can be indexed both by their field names and by their indexes.
+ * Callable objects can both be called, and their members can be accessed.
+ * You must use flag syntax to call a callable object; you cannot pass their arguments positionally.
+ * Single-hyphen flags are supported
+ * You can now specify -flag instead of --flag if preferred. Both work.
+ * Short-flags are permitted when their use is unambiguous
+ * E.g. if your function has argument alpha, then you can specify its value with -a.
+ * Fish completion support
+- deleted patches
+ - fix-issue-164.patch (upstreamed)
+
+-------------------------------------------------------------------
Old:
----
fire-0.1.3.tar.gz
fix-issue-164.patch
New:
----
fire-0.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-fire.spec ++++++
--- /var/tmp/diff_new_pack.Dz1uZ1/_old 2019-07-30 12:39:39.266931094 +0200
+++ /var/tmp/diff_new_pack.Dz1uZ1/_new 2019-07-30 12:39:39.266931094 +0200
@@ -18,18 +18,18 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-fire
-Version: 0.1.3
+Version: 0.2.0
Release: 0
Summary: A library for automatically generating command line interfaces
License: Apache-2.0
Group: Development/Languages/Python
URL: https://github.com/google/python-fire
Source: https://files.pythonhosted.org/packages/source/f/fire/fire-%{version}.tar.gz
-Patch0: fix-issue-164.patch
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-six
+Requires: python-termcolor
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module Levenshtein}
@@ -37,6 +37,7 @@
BuildRequires: %{python_module mock}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module six}
+BuildRequires: %{python_module termcolor}
# /SECTION
%python_subpackages
@@ -46,7 +47,6 @@
%prep
%setup -q -n fire-%{version}
-%autopatch -p1
%build
%python_build
@@ -56,7 +56,7 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%python_expand pytest-%{$python_bin_suffix} -v fire
+%pytest
%files %{python_files}
%license LICENSE
++++++ fire-0.1.3.tar.gz -> fire-0.2.0.tar.gz ++++++
++++ 8142 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ypbind for openSUSE:Factory checked in at 2019-07-30 12:39:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ypbind (Old)
and /work/SRC/openSUSE:Factory/.ypbind.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ypbind"
Tue Jul 30 12:39:31 2019 rev:56 rq:719774 version:2.6.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ypbind/ypbind.changes 2019-07-26 17:34:58.668072723 +0200
+++ /work/SRC/openSUSE:Factory/.ypbind.new.4126/ypbind.changes 2019-07-30 12:39:32.378932239 +0200
@@ -1,0 +2,6 @@
+Tue Jul 30 07:58:23 UTC 2019 - Thorsten Kukuk <kukuk(a)suse.com>
+
+- Update to version 2.6.1
+ - check if libc provides already gettid()
+
+-------------------------------------------------------------------
Old:
----
ypbind-mt-2.6.tar.xz
New:
----
ypbind-mt-2.6.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ypbind.spec ++++++
--- /var/tmp/diff_new_pack.2Miig9/_old 2019-07-30 12:39:35.806931669 +0200
+++ /var/tmp/diff_new_pack.2Miig9/_new 2019-07-30 12:39:35.806931669 +0200
@@ -15,21 +15,8 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-
-%if ! %{defined _fillupdir}
- %define _fillupdir %{_localstatedir}/adm/fillup-templates
-%endif
-
-%define tmpfiles_remove() \
-if [ $1 -eq 0 ]; then \
- [ -z "${TRANSACTIONAL_UPDATE}" -a -x /usr/bin/systemd-tmpfiles ] && \
- /usr/bin/systemd-tmpfiles --remove %{?*} || : \
-fi \
-%{nil}
-
-
Name: ypbind
-Version: 2.6
+Version: 2.6.1
Release: 0
Summary: NIS client daemon
License: GPL-2.0-only
@@ -96,7 +83,6 @@
%preun
%service_del_preun ypbind.service
-%tmpfiles_remove ypbind.conf
%postun
%service_del_postun ypbind.service
++++++ ypbind-mt-2.6.tar.xz -> ypbind-mt-2.6.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/NEWS new/ypbind-mt-2.6.1/NEWS
--- old/ypbind-mt-2.6/NEWS 2019-01-22 12:47:53.000000000 +0100
+++ new/ypbind-mt-2.6.1/NEWS 2019-07-30 09:15:03.000000000 +0200
@@ -4,6 +4,9 @@
Please send bug reports, questions and suggestions to <kukuk(a)thkukuk.de>.
+Version 2.6.1
+* Check if libc already provides gettid().
+
Version 2.6
* Fix crash of ypbind on reload
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/config.h.in new/ypbind-mt-2.6.1/config.h.in
--- old/ypbind-mt-2.6/config.h.in 2019-01-22 12:46:34.000000000 +0100
+++ new/ypbind-mt-2.6.1/config.h.in 2019-07-30 09:15:10.000000000 +0200
@@ -19,6 +19,9 @@
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
+/* Define to 1 if gettid() is available */
+#undef HAVE_GETTID
+
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/configure new/ypbind-mt-2.6.1/configure
--- old/ypbind-mt-2.6/configure 2019-01-22 12:46:36.000000000 +0100
+++ new/ypbind-mt-2.6.1/configure 2019-07-30 09:15:09.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ypbind-mt 2.6.
+# Generated by GNU Autoconf 2.69 for ypbind-mt 2.6.1.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -577,8 +577,8 @@
# Identity of this package.
PACKAGE_NAME='ypbind-mt'
PACKAGE_TARNAME='ypbind-mt'
-PACKAGE_VERSION='2.6'
-PACKAGE_STRING='ypbind-mt 2.6'
+PACKAGE_VERSION='2.6.1'
+PACKAGE_STRING='ypbind-mt 2.6.1'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1323,7 +1323,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures ypbind-mt 2.6 to adapt to many kinds of systems.
+\`configure' configures ypbind-mt 2.6.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1393,7 +1393,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of ypbind-mt 2.6:";;
+ short | recursive ) echo "Configuration of ypbind-mt 2.6.1:";;
esac
cat <<\_ACEOF
@@ -1511,7 +1511,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-ypbind-mt configure 2.6
+ypbind-mt configure 2.6.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1876,7 +1876,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by ypbind-mt $as_me 2.6, which was
+It was created by ypbind-mt $as_me 2.6.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2741,7 +2741,7 @@
# Define the identity of the package.
PACKAGE='ypbind-mt'
- VERSION='2.6'
+ VERSION='2.6.1'
cat >>confdefs.h <<_ACEOF
@@ -5047,6 +5047,14 @@
fi
+ac_fn_c_check_func "$LINENO" "gettid" "ac_cv_func_gettid"
+if test "x$ac_cv_func_gettid" = xyes; then :
+
+$as_echo "#define HAVE_GETTID 1" >>confdefs.h
+
+fi
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
if ${ac_cv_c_const+:} false; then :
@@ -8003,7 +8011,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by ypbind-mt $as_me 2.6, which was
+This file was extended by ypbind-mt $as_me 2.6.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -8069,7 +8077,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-ypbind-mt config.status 2.6
+ypbind-mt config.status 2.6.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/configure.ac new/ypbind-mt-2.6.1/configure.ac
--- old/ypbind-mt-2.6/configure.ac 2019-01-22 12:46:30.000000000 +0100
+++ new/ypbind-mt-2.6.1/configure.ac 2019-07-30 09:14:37.000000000 +0200
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([ypbind-mt], [2.6])
+AC_INIT([ypbind-mt], [2.6.1])
AC_CONFIG_SRCDIR([src/ypbind-mt.c])
AM_INIT_AUTOMAKE
AC_CONFIG_HEADERS(config.h)
@@ -39,6 +39,9 @@
AC_CHECK_LIB(resolv, res_gethostbyname)
fi
+dnl Check for gettid wrapper
+AC_CHECK_FUNC(gettid, [AC_DEFINE(HAVE_GETTID, 1, [Define to 1 if gettid() is available])])
+
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/lib/Makefile.in new/ypbind-mt-2.6.1/lib/Makefile.in
--- old/ypbind-mt-2.6/lib/Makefile.in 2019-01-22 12:46:34.000000000 +0100
+++ new/ypbind-mt-2.6.1/lib/Makefile.in 2019-07-30 09:15:08.000000000 +0200
@@ -335,9 +335,9 @@
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu lib/Makefile
+ $(AUTOMAKE) --gnits lib/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/man/Makefile.in new/ypbind-mt-2.6.1/man/Makefile.in
--- old/ypbind-mt-2.6/man/Makefile.in 2019-01-22 12:46:34.000000000 +0100
+++ new/ypbind-mt-2.6.1/man/Makefile.in 2019-07-30 09:15:08.000000000 +0200
@@ -308,9 +308,9 @@
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits man/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu man/Makefile
+ $(AUTOMAKE) --gnits man/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/man/yp.conf.5 new/ypbind-mt-2.6.1/man/yp.conf.5
--- old/ypbind-mt-2.6/man/yp.conf.5 2019-01-22 12:48:00.000000000 +0100
+++ new/ypbind-mt-2.6.1/man/yp.conf.5 2019-07-30 09:15:11.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: yp.conf
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 01/22/2019
+.\" Date: 07/30/2019
.\" Manual: ypbind-mt
.\" Source: ypbind-mt
.\" Language: English
.\"
-.TH "YP\&.CONF" "5" "01/22/2019" "ypbind-mt" "ypbind\-mt"
+.TH "YP\&.CONF" "5" "07/30/2019" "ypbind-mt" "ypbind\-mt"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/man/ypbind.8 new/ypbind-mt-2.6.1/man/ypbind.8
--- old/ypbind-mt-2.6/man/ypbind.8 2019-01-22 12:48:00.000000000 +0100
+++ new/ypbind-mt-2.6.1/man/ypbind.8 2019-07-30 09:15:10.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: ypbind
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 01/22/2019
+.\" Date: 07/30/2019
.\" Manual: ypbind-mt
.\" Source: ypbind-mt
.\" Language: English
.\"
-.TH "YPBIND" "8" "01/22/2019" "ypbind-mt" "ypbind\-mt"
+.TH "YPBIND" "8" "07/30/2019" "ypbind-mt" "ypbind\-mt"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/po/de.po new/ypbind-mt-2.6.1/po/de.po
--- old/ypbind-mt-2.6/po/de.po 2019-01-22 12:48:00.000000000 +0100
+++ new/ypbind-mt-2.6.1/po/de.po 2019-07-30 09:15:11.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: ypbind-mt\n"
"Report-Msgid-Bugs-To: kukuk(a)linux-nis.org\n"
-"POT-Creation-Date: 2019-01-22 12:48+0100\n"
+"POT-Creation-Date: 2019-07-30 09:15+0200\n"
"PO-Revision-Date: 2004-02-13 16:22+01:00\n"
"Last-Translator: Thorsten Kukuk <kukuk(a)suse.de>\n"
"Language-Team: No Language-Team\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/po/sv.po new/ypbind-mt-2.6.1/po/sv.po
--- old/ypbind-mt-2.6/po/sv.po 2019-01-22 12:48:00.000000000 +0100
+++ new/ypbind-mt-2.6.1/po/sv.po 2019-07-30 09:15:11.000000000 +0200
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ypbind-mt 1.20-2\n"
"Report-Msgid-Bugs-To: kukuk(a)linux-nis.org\n"
-"POT-Creation-Date: 2019-01-22 12:48+0100\n"
+"POT-Creation-Date: 2019-07-30 09:15+0200\n"
"PO-Revision-Date: 2006-11-12 16:48+0100\n"
"Last-Translator: Daniel Nylander <po(a)danielnylander.se>\n"
"Language-Team: Swedish <tp-sv(a)listor.tp-sv.se>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/po/ypbind-mt.pot new/ypbind-mt-2.6.1/po/ypbind-mt.pot
--- old/ypbind-mt-2.6/po/ypbind-mt.pot 2019-01-22 12:48:00.000000000 +0100
+++ new/ypbind-mt-2.6.1/po/ypbind-mt.pot 2019-07-30 09:15:11.000000000 +0200
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: ypbind-mt 2.6\n"
+"Project-Id-Version: ypbind-mt 2.6.1\n"
"Report-Msgid-Bugs-To: kukuk(a)linux-nis.org\n"
-"POT-Creation-Date: 2019-01-22 12:48+0100\n"
+"POT-Creation-Date: 2019-07-30 09:15+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/src/Makefile.in new/ypbind-mt-2.6.1/src/Makefile.in
--- old/ypbind-mt-2.6/src/Makefile.in 2019-01-22 12:46:34.000000000 +0100
+++ new/ypbind-mt-2.6.1/src/Makefile.in 2019-07-30 09:15:08.000000000 +0200
@@ -333,9 +333,9 @@
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/Makefile
+ $(AUTOMAKE) --gnits src/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -396,6 +396,22 @@
clean-sbinPROGRAMS:
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
+installcheck-sbinPROGRAMS: $(sbin_PROGRAMS)
+ bad=0; pid=$$$$; list="$(sbin_PROGRAMS)"; for p in $$list; do \
+ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+ esac; \
+ f=`echo "$$p" | \
+ sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ for opt in --help --version; do \
+ if "$(DESTDIR)$(sbindir)/$$f" $$opt >c$${pid}_.out \
+ 2>c$${pid}_.err </dev/null \
+ && test -n "`cat c$${pid}_.out`" \
+ && test -z "`cat c$${pid}_.err`"; then :; \
+ else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+ done; \
+ done; rm -f c$${pid}_.???; exit $$bad
+
ypbind$(EXEEXT): $(ypbind_OBJECTS) $(ypbind_DEPENDENCIES) $(EXTRA_ypbind_DEPENDENCIES)
@rm -f ypbind$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(ypbind_OBJECTS) $(ypbind_LDADD) $(LIBS)
@@ -595,7 +611,7 @@
install-ps-am:
-installcheck-am:
+installcheck-am: installcheck-sbinPROGRAMS
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
@@ -626,10 +642,11 @@
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am uninstall-sbinPROGRAMS
+ install-strip installcheck installcheck-am \
+ installcheck-sbinPROGRAMS installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-sbinPROGRAMS
.PRECIOUS: Makefile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ypbind-mt-2.6/src/log_msg.c new/ypbind-mt-2.6.1/src/log_msg.c
--- old/ypbind-mt-2.6/src/log_msg.c 2019-01-22 12:45:48.000000000 +0100
+++ new/ypbind-mt-2.6.1/src/log_msg.c 2019-07-30 09:07:15.000000000 +0200
@@ -26,6 +26,8 @@
#include "log_msg.h"
#include <sys/syscall.h>
+
+#ifndef HAVE_GETTID
#ifdef __NR_gettid
static pid_t
gettid (void)
@@ -39,6 +41,7 @@
return getpid ();
}
#endif
+#endif /* ! HAVE_GETTID */
int debug_flag = 0;
int logfile_flag = 0;
1
0
Hello community,
here is the log from the commit of package vifm for openSUSE:Factory checked in at 2019-07-30 12:39:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vifm (Old)
and /work/SRC/openSUSE:Factory/.vifm.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vifm"
Tue Jul 30 12:39:28 2019 rev:13 rq:719773 version:0.10.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/vifm/vifm.changes 2018-11-13 17:52:47.291389920 +0100
+++ /work/SRC/openSUSE:Factory/.vifm.new.4126/vifm.changes 2019-07-30 12:39:29.874932655 +0200
@@ -1,0 +2,19 @@
+Tue Jul 30 07:32:06 UTC 2019 - mvetter(a)suse.com
+
+- Update to 0.10.1:
+ * Added file preview to miller mode
+ * Added preview macro to directly output to terminal, which
+ enables use of Sixel graphics for previewing
+ * Added udisks2 backend to vifm-media script (bundled script for
+ managing media) and version of the script for OS X
+ * Updated code to make use of large amount of color pairs when
+ available
+ * Functionality of previously separate neovim-vifm plugin got
+ merged into the main plugin
+ * Multiple improvements to :media menu
+ * Improved performance in several use cases (quickview, lots
+ of unhighlighted files, unnecessary cursor updates and redraws)
+ * See change log for the full list of changes and by whom
+ they were suggested.
+
+-------------------------------------------------------------------
Old:
----
vifm-0.10.tar.bz2
vifm-0.10.tar.bz2.asc
New:
----
vifm-0.10.1.tar.bz2
vifm-0.10.1.tar.bz2.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vifm.spec ++++++
--- /var/tmp/diff_new_pack.89hrof/_old 2019-07-30 12:39:30.722932514 +0200
+++ /var/tmp/diff_new_pack.89hrof/_new 2019-07-30 12:39:30.726932514 +0200
@@ -1,7 +1,7 @@
#
# spec file for package vifm
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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: vifm
-Version: 0.10
+Version: 0.10.1
Release: 0
Summary: Ncurses based file manager with vi like keybindings
License: GPL-2.0-or-later
@@ -47,6 +47,7 @@
%prep
%setup -q
+sed -i 's/#!\/usr\/bin\/env perl/#!\/usr\/bin\/perl/' src/vifm-convert-dircolors
%build
%configure \
@@ -64,6 +65,7 @@
%endif
rm -rf %{buildroot}%{_datadir}/doc/vifm/*
rm -rf %{buildroot}%{_datadir}/vifm/vifmrc-osx
+rm -rf %{buildroot}%{_datadir}/vifm/vifm-media-osx
rm -rf %{buildroot}%{_datadir}/vifm/vim-doc/doc/tags
rm -rf %{buildroot}%{_datadir}/vifm/vim-doc/doc/vifm-app.txt
++++++ vifm-0.10.tar.bz2 -> vifm-0.10.1.tar.bz2 ++++++
++++ 24073 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package o2locktop for openSUSE:Factory checked in at 2019-07-30 12:39:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/o2locktop (Old)
and /work/SRC/openSUSE:Factory/.o2locktop.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "o2locktop"
Tue Jul 30 12:39:25 2019 rev:2 rq:719770 version:1.0.10+git.1564463799.6f331ba
Changes:
--------
--- /work/SRC/openSUSE:Factory/o2locktop/o2locktop.changes 2019-07-26 12:44:48.981825555 +0200
+++ /work/SRC/openSUSE:Factory/.o2locktop.new.4126/o2locktop.changes 2019-07-30 12:39:27.658933023 +0200
@@ -1,0 +2,7 @@
+Tue Jul 30 05:45:33 UTC 2019 - ghe(a)suse.com
+
+- Update to version 1.0.10+git.1564463799.6f331ba:
+ * Fix hostname display problem on python3 (bsc#1143155)
+ * Fix TypeError exception problem on python 2.6.9 (bsc#1143159)
+
+-------------------------------------------------------------------
Old:
----
o2locktop-1.0.10+git.1564033453.8bdc071.tar.bz2
New:
----
o2locktop-1.0.10+git.1564463799.6f331ba.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ o2locktop.spec ++++++
--- /var/tmp/diff_new_pack.3ZuuzJ/_old 2019-07-30 12:39:29.158932774 +0200
+++ /var/tmp/diff_new_pack.3ZuuzJ/_new 2019-07-30 12:39:29.194932768 +0200
@@ -12,7 +12,7 @@
# 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/
#
@@ -26,13 +26,13 @@
%endif
Summary: o2locktop is a top-like OCFS2 DLM lock monitor
+License: GPL-2.0-or-later
+Group: Development/Libraries
Name: %{name}
-Version: 1.0.10+git.1564033453.8bdc071
+Version: 1.0.10+git.1564463799.6f331ba
Release: 0%{release}
Source0: %{name}-%{version}.tar.bz2
-License: GPL-2.0-or-later
-Group: Development/Libraries
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
Prefix: %{_prefix}
BuildArch: noarch
Url: https://github.com/ganghe/o2locktop
++++++ o2locktop-1.0.10+git.1564033453.8bdc071.tar.bz2 -> o2locktop-1.0.10+git.1564463799.6f331ba.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/o2locktop-1.0.10+git.1564033453.8bdc071/o2locktoplib/dlm.py new/o2locktop-1.0.10+git.1564463799.6f331ba/o2locktoplib/dlm.py
--- old/o2locktop-1.0.10+git.1564033453.8bdc071/o2locktoplib/dlm.py 2019-07-25 07:44:13.000000000 +0200
+++ new/o2locktop-1.0.10+git.1564463799.6f331ba/o2locktoplib/dlm.py 2019-07-30 07:16:39.000000000 +0200
@@ -514,9 +514,9 @@
total_num_str = str(decimal.Decimal(total_num).quantize(decimal.Decimal('0.')))
key_index_str = '--'
else:
- total_time_str = str(decimal.Decimal(total_time).quantize(decimal.Decimal('0.')))
- total_num_str = str(decimal.Decimal(total_num).quantize(decimal.Decimal('0.')))
- key_index_str = str(decimal.Decimal(key_index).quantize(decimal.Decimal('0.')))
+ total_time_str = str(decimal.Decimal(str(total_time)).quantize(decimal.Decimal('0.')))
+ total_num_str = str(decimal.Decimal(str(total_num)).quantize(decimal.Decimal('0.')))
+ key_index_str = str(decimal.Decimal(str(key_index)).quantize(decimal.Decimal('0.')))
return total_time_str, total_num_str, key_index_str
def report_once(self):
@@ -592,7 +592,7 @@
body = "\n".join([body, node_detail_str])
tmp_index = body.rfind("├─")
- body = body[:tmp_index] + "└─" + body[tmp_index+6:]
+ body = body[:tmp_index] + "└─" + body[tmp_index+len("└─"):]
if res_ex["total_num"] != 0:
res_ex["key_index"] = res_ex["total_time"]//res_ex["total_num"]
1
0
Hello community,
here is the log from the commit of package uftpd for openSUSE:Factory checked in at 2019-07-30 12:39:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/uftpd (Old)
and /work/SRC/openSUSE:Factory/.uftpd.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "uftpd"
Tue Jul 30 12:39:21 2019 rev:6 rq:719745 version:2.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/uftpd/uftpd.changes 2019-06-01 09:51:55.111274741 +0200
+++ /work/SRC/openSUSE:Factory/.uftpd.new.4126/uftpd.changes 2019-07-30 12:39:25.914933313 +0200
@@ -1,0 +2,10 @@
+Mon Jul 29 20:02:51 UTC 2019 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 2.9
+ * Check FTP root security after dropping privileges
+ * Revert insecure default: "writable FTP root", introduced in v2.8
+ * Revert part of issue #18 to fix issue #23; "CWD /" doesn't work
+ * Fix spelling errors found by Lintian
+ * Fix package description, more formal and less personal
+
+-------------------------------------------------------------------
Old:
----
uftpd-2.8.tar.gz
New:
----
uftpd-2.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ uftpd.spec ++++++
--- /var/tmp/diff_new_pack.DZVk68/_old 2019-07-30 12:39:26.678933186 +0200
+++ /var/tmp/diff_new_pack.DZVk68/_new 2019-07-30 12:39:26.682933185 +0200
@@ -18,7 +18,7 @@
Name: uftpd
-Version: 2.8
+Version: 2.9
Release: 0
Summary: A combined TFTP/FTP server
License: ISC
++++++ uftpd-2.8.tar.gz -> uftpd-2.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/.gitignore new/uftpd-2.9/.gitignore
--- old/uftpd-2.8/.gitignore 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/.gitignore 2019-07-29 10:53:23.000000000 +0200
@@ -10,7 +10,7 @@
Makefile.in
aclocal.m4
ar-lib
-/autom4te.cache/*
+autom4te.cache/*
compile
config.*
configure
@@ -18,19 +18,10 @@
install-sh
libtool
ltmain.sh
-misc/
missing
stamp-h1
-uftpd
-debian/files
-debian/uftpd.*
TAGS
-/GPATH
-/GRTAGS
-/GSYMS
-/GTAGS
-/CHANGELOG.html
-/README.html
-/uftpd.html
-/tok
-/uftp
+GPATH
+GRTAGS
+GSYMS
+GTAGS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/ChangeLog.md new/uftpd-2.9/ChangeLog.md
--- old/uftpd-2.8/ChangeLog.md 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/ChangeLog.md 2019-07-29 10:53:23.000000000 +0200
@@ -4,6 +4,25 @@
All notable changes to the project are documented in this file.
+[v2.9][] - 2019-07-29
+---------------------
+
+### Changes
+- Reduced log level for "Invalid path" and "Failed realpath()" syslog
+ messages. Only relevant when debugging. For use on the Internet it
+ will otherwise cause an excessive amount of logs due to GXHLGSL.txt
+- Debian packaging fixes and updates:
+ - Reverts `-o writable`, due to fixing issue #22
+ - Fixes failing `dpkg -P uftpd` due to bug in postrm script
+
+### Fixes
+- Issue #21: Check for `pkg-config` before lookging for deps.
+- Issue #22: Check FTP root security *after* having dropped privs.
+ This means no longer having to run with `-o writable` by default
+- Issue #23: FTP command `CWD /` does not work, affects all clients.
+ This is a regression introduced in v2.8 while fixing #18
+
+
[v2.8][] - 2019-05-28
---------------------
@@ -405,7 +424,8 @@
Lines must end in the old `\r\n` format, rather than UNIX `\n`.
-[UNRELEASED]: https://github.com/troglobit/uftpd/compare/v2.8...HEAD
+[UNRELEASED]: https://github.com/troglobit/uftpd/compare/v2.9...HEAD
+[v2.9]: https://github.com/troglobit/uftpd/compare/v2.8...v2.9
[v2.8]: https://github.com/troglobit/uftpd/compare/v2.7...v2.8
[v2.7]: https://github.com/troglobit/uftpd/compare/v2.6...v2.7
[v2.6]: https://github.com/troglobit/uftpd/compare/v2.5...v2.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/Makefile.am new/uftpd-2.9/Makefile.am
--- old/uftpd-2.8/Makefile.am 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/Makefile.am 2019-07-29 10:53:23.000000000 +0200
@@ -1,5 +1,5 @@
SUBDIRS = src man
-doc_DATA = README.md LICENSE
+doc_DATA = README.md LICENSE ChangeLog.md
EXTRA_DIST = README.md LICENSE ChangeLog.md
## Generate .deb package
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/README.md new/uftpd-2.9/README.md
--- old/uftpd-2.8/README.md 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/README.md 2019-07-29 10:53:23.000000000 +0200
@@ -58,8 +58,8 @@
Set `PORT` to zero (0) to disable either service.
-By default, uftpd will exit if it detects the FTP root is writable. To
-allow writable FTP root:
+New sessions are droppbed by default if uftpd detects the FTP root is
+writable. To allow writable FTP root:
uftpd -o writable PATH
@@ -105,14 +105,25 @@
and [lite][]. See their respective README for details, there should be
no real surprises, both use the familiar configure, make, make install.
+To find the two libraries uftpd depends on `pkg-config`. The package
+name for your Linux distribution varies, on Debian/Ubuntu systems:
+
+```shell
+user@example:~/> sudo apt install pkg-config
+```
+
uftpd, as well as its dependencies, can be built as `.deb` packages on
-Debian or Ubuntu based distributions. Simply download each source
-component and run
+Debian or Ubuntu based distributions. Download and install each of the
+dependencies, and then run
./autogen.sh <--- Only needed if using GIT sources
./configure
make package
+The `.deb` package takes care of setting up `/etc/inetd.conf`, create an
+`ftp` user and an `/srv/ftp` home directory with write permissions for
+all members of the `users` group.
+
If you are using a different Linux or UNIX distribution, check the
output from `./configure --help`, followed by `make all install`.
For instance, building on [Alpine Linux](https://alpinelinux.org/):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/configure.ac new/uftpd-2.9/configure.ac
--- old/uftpd-2.8/configure.ac 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/configure.ac 2019-07-29 10:53:23.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([uftpd], [2.8], [https://github.com/troglobit/uftpd/issues] [http://troglobit.com/uftpd.html]
+AC_INIT([uftpd], [2.9], [https://github.com/troglobit/uftpd/issues] [http://troglobit.com/uftpd.html]
AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
AM_SILENT_RULES([yes])
@@ -11,7 +11,6 @@
AC_PROG_INSTALL
# Configuration.
-AC_HEADER_STDC
AC_CHECK_HEADERS(sys/time.h)
AC_CHECK_FUNCS(strstr getopt getsubopt gettimeofday)
@@ -20,6 +19,9 @@
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
+# Check for pkg-config first, warn if it's not installed
+PKG_PROG_PKG_CONFIG
+
# Check for required libraries
PKG_CHECK_MODULES([uev], [libuev >= 2.2.0])
PKG_CHECK_MODULES([lite], [libite >= 1.5.0])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/.gitignore new/uftpd-2.9/debian/.gitignore
--- old/uftpd-2.8/debian/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/uftpd-2.9/debian/.gitignore 2019-07-29 10:53:23.000000000 +0200
@@ -0,0 +1,8 @@
+autoreconf.*
+debhelper-build-stamp
+files
+uftpd.debhelper.log
+uftpd.post*
+uftpd.pre*
+uftpd.substvars
+uftpd/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/changelog new/uftpd-2.9/debian/changelog
--- old/uftpd-2.8/debian/changelog 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/debian/changelog 2019-07-29 10:53:23.000000000 +0200
@@ -1,3 +1,15 @@
+uftpd (2.9) unstable; urgency=medium
+
+ * Check FTP root security after dropping privileges, issue #22
+ * Revert insecure default: "writable FTP root", introduced in v2.8
+ * Revert part of issue #18 to fix issue #23; "CWD /" doesn't work
+ * Update debian packaging to policy 4.3.0
+ * Fix failing postrm script, causing dpkg -P uftpd to fail hard
+ * Fix spelling errors found by Lintian
+ * Fix package description, more formal and less personal, thanks Lintian
+
+ -- Joachim Nilsson <troglobit(a)gmail.com> Mon, 29 Jul 2019 10:52:49 +0200
+
uftpd (2.8) unstable; urgency=medium
* Fix off-by-one regression introduced in v2.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/compat new/uftpd-2.9/debian/compat
--- old/uftpd-2.8/debian/compat 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/debian/compat 2019-07-29 10:53:23.000000000 +0200
@@ -1 +1 @@
-7
+10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/control new/uftpd-2.9/debian/control
--- old/uftpd-2.8/debian/control 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/debian/control 2019-07-29 10:53:23.000000000 +0200
@@ -1,10 +1,10 @@
Source: uftpd
Section: net
-Priority: extra
+Priority: optional
Maintainer: Joachim Nilsson <troglobit(a)gmail.com>
-Build-Depends: debhelper (>= 7.0.0)
-Standards-Version: 3.9.3
-Homepage: http://troglobit.com/uftpd.html
+Build-Depends: debhelper (>= 10)
+Standards-Version: 4.3.0
+Homepage: https://troglobit.com/uftpd.html
Package: uftpd
Architecture: any
@@ -12,12 +12,13 @@
Depends: openbsd-inetd | inet-superserver, debconf (>= 0.2.17), ${shlibs:Depends}, ${misc:Depends}
Provides: ftp-server
Conflicts: ftp-server, tftpd, tftpd-hpa
-Description: The no nonsense TFTP/FTP server.
- An excellent choice for those of us who never wanted to learn every
- config file format on this planet. uftpd has no configuration, and
- starts automatically from the traditional UNIX inetd super server,
- neatly tcpwrapped for your safety.
+Description: No nonsense TFTP/FTP server
+ uftpd is a very simple TFTP and FTP server intended for small and local
+ LANs. It works on the Internet, although it is not recommended, and is
+ set up in a read-only configuration by default. It has no users, no
+ configuration file, and is started on-demand by the UNIX inetd super
+ server, neatly tcpwrapped for your safety.
.
Hardcore Internet users and anyone concerned about security should
- probably consider a seperate TFTP server and for FTP look at one of:
+ probably consider a separate TFTP server and for FTP look at one of:
vsftpd, proftpd or pure-ftpd.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/postinst new/uftpd-2.9/debian/postinst
--- old/uftpd-2.8/debian/postinst 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/debian/postinst 2019-07-29 10:53:23.000000000 +0200
@@ -1,13 +1,12 @@
-#!/bin/sh
-set -e
+#!/bin/sh -e
[ "$1" = "configure" ] || exit 0
# Source debconf library.
. /usr/share/debconf/confmodule
-FTPENTRY="ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -o writable"
-TFTPENTRY="tftp dgram udp wait root /usr/sbin/tcpd in.tftpd -o writable"
+FTPENTRY="ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd"
+TFTPENTRY="tftp dgram udp wait root /usr/sbin/tcpd in.tftpd"
if [ ! -f /etc/inetd.conf -a -d /etc/xinetd.d -a -x /usr/sbin/xinetd ]; then
cat <<-TEXT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/postrm new/uftpd-2.9/debian/postrm
--- old/uftpd-2.8/debian/postrm 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/debian/postrm 2019-07-29 10:53:23.000000000 +0200
@@ -1,6 +1,4 @@
-#!/bin/sh
-
-set -e
+#!/bin/sh -e
if [ "$1" = "purge" ]; then
if command -v update-inetd >/dev/null 2>&1; then
@@ -12,13 +10,10 @@
# Remove uftpd entries from db
if [ -f /usr/share/debconf/confmodule ]; then
. /usr/share/debconf/confmodule
- db_purge uftpd/ftp
- db_purge uftpd/tftp
+ db_purge
fi
fi
-deluser ftp || true
-
-#DEBHELPER#
+deluser --quiet --system ftp
exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/preinst new/uftpd-2.9/debian/preinst
--- old/uftpd-2.8/debian/preinst 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/debian/preinst 1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-set -e
-
-#DEBHELPER#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/prerm new/uftpd-2.9/debian/prerm
--- old/uftpd-2.8/debian/prerm 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/debian/prerm 2019-07-29 10:53:23.000000000 +0200
@@ -1,8 +1,4 @@
-#!/bin/sh
-
-set -e
+#!/bin/sh -e
update-inetd --pattern 'in.ftpd' --multi --disable ftp
update-inetd --pattern 'in.tftpd' --multi --disable tftp
-
-#DEBHELPER#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/rules new/uftpd-2.9/debian/rules
--- old/uftpd-2.8/debian/rules 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/debian/rules 2019-07-29 10:53:23.000000000 +0200
@@ -1,45 +1,15 @@
#!/usr/bin/make -f
-# Simple debian/rules that uses debhelper(7).
-# GNU copyright 1997 by Joey Hess.
-.PHONY: build clean binary-indep binary-arch binary install
+# export DH_VERBOSE=1
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
-build:
- dh_testdir
- dh_auto_configure
- dh_auto_build
+%:
+ dh $@ --with autoreconf,systemd
-clean:
- dh_testdir
- dh_testroot
- dh_clean
+override_dh_installchangelogs:
+ dh_installchangelogs ChangeLog.md
-install: build
- dh_testdir
- dh_testroot
- dh_prep
- dh_installdirs
+# Remove LICENSE and ChangeLog.md per Debian Policy
+override_dh_auto_install:
dh_auto_install
-
-binary-indep: build install
- dh_installdocs
- dh_installdebconf
- dh_installman
- dh_installchangelogs
-
-binary-arch: build install
- dh_strip
- rm -f debian/uftpd/usr/share/doc/uftpd/LICENSE
- rm -f debian/uftpd/usr/share/doc/uftpd/ChangeLog.md
- dh_compress
- dh_fixperms
- dh_installdebconf
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-
-source diff:
- @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
-
-binary: binary-indep binary-arch
+ rm -v debian/uftpd/usr/share/doc/uftpd/LICENSE
+ rm -v debian/uftpd/usr/share/doc/uftpd/ChangeLog.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/debian/templates new/uftpd-2.9/debian/templates
--- old/uftpd-2.8/debian/templates 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/debian/templates 2019-07-29 10:53:23.000000000 +0200
@@ -1,10 +1,10 @@
Template: uftpd/ftp
Type: boolean
Default: true
-Description: Enable FTP service
+Description: Enable FTP service?
Template: uftpd/tftp
Type: boolean
Default: true
-Description: Enable TFTP service
+Description: Enable TFTP service?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/man/uftpd.8 new/uftpd-2.9/man/uftpd.8
--- old/uftpd-2.8/man/uftpd.8 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/man/uftpd.8 2019-07-29 10:53:23.000000000 +0200
@@ -13,9 +13,9 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd Mar 03, 2019
+.Dd Jul 29, 2019
.Dt UFTPD 8
-.Os "uftpd (2.7)"
+.Os "uftpd (2.9)"
.Sh NAME
.Nm uftpd
.Nd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/src/.gitignore new/uftpd-2.9/src/.gitignore
--- old/uftpd-2.8/src/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/uftpd-2.9/src/.gitignore 2019-07-29 10:53:23.000000000 +0200
@@ -0,0 +1 @@
+uftpd
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/src/common.c new/uftpd-2.9/src/common.c
--- old/uftpd-2.8/src/common.c 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/src/common.c 2019-07-29 10:53:23.000000000 +0200
@@ -83,7 +83,7 @@
memset(rpath, 0, sizeof(rpath));
if (!realpath(ptr, rpath)) {
- ERR(errno, "Failed realpath(%s)", ptr);
+ INFO("Failed realpath(%s): %m", ptr);
return NULL;
}
@@ -260,6 +260,15 @@
if (!fail1 && !fail2)
INFO("Successfully dropped privilges to %d:%d (uid:gid)", pw->pw_uid, pw->pw_gid);
+ /*
+ * Check we don't have write access to the FTP root,
+ * unless explicitly allowed
+ */
+ if (!do_insecure && !access(home, W_OK)) {
+ ERR(0, "FTP root %s writable, possible security violation, aborting session!", home);
+ goto fail;
+ }
+
/* On failure, we tried at least. Only warn once. */
privs_dropped = 1;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/src/ftpcmd.c new/uftpd-2.9/src/ftpcmd.c
--- old/uftpd-2.8/src/ftpcmd.c 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/src/ftpcmd.c 2019-07-29 10:53:23.000000000 +0200
@@ -398,7 +398,9 @@
* entry is a file or directory.
*/
dir = compose_abspath(ctrl, path);
- if (!dir || stat(dir, &st) || !S_ISDIR(st.st_mode) || strlen(home) > strlen(dir)) {
+ if (!dir || stat(dir, &st) || !S_ISDIR(st.st_mode)) {
+ DBG("chrooted:%d, ctrl->cwd: %s, home:%s, dir:%s, len:%zd, dirlen:%zd",
+ chrooted, ctrl->cwd, home, dir, strlen(home), strlen(dir));
send_msg(ctrl->sd, "550 No such directory.\r\n");
return;
}
@@ -918,7 +920,7 @@
return 1;
}
- INFO("Data server port estabished. Waiting for client connnect ...");
+ INFO("Data server port estabished. Waiting for client to connect ...");
if (listen(ctrl->data_listen_sd, 1) < 0) {
ERR(errno, "Client data connection failure");
send_msg(ctrl->sd, "426 Internal server error.\r\n");
@@ -1231,13 +1233,14 @@
path = compose_abspath(ctrl, file);
if (!path) {
- ERR(errno, "Invalid path for %s", file);
+ INFO("Invalid path for %s: %m", file);
goto fail;
}
DBG("Trying to write to %s ...", path);
fp = fopen(path, "wb");
if (!fp) {
+ /* If EACCESS client is trying to do something disallowed */
ERR(errno, "Failed writing %s", path);
fail:
send_msg(ctrl->sd, "451 Trouble storing file.\r\n");
@@ -1294,7 +1297,7 @@
path = compose_abspath(ctrl, arg);
if (!path) {
- ERR(errno, "Invalid path for %s", arg);
+ INFO("Invalid path for %s: %m", arg);
goto fail;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/src/uftpd.c new/uftpd-2.9/src/uftpd.c
--- old/uftpd-2.8/src/uftpd.c 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/src/uftpd.c 2019-07-29 10:53:23.000000000 +0200
@@ -100,7 +100,7 @@
*/
static void sigquit_cb(uev_t *w, void *arg, int events)
{
- INFO("Recieved signal %d, exiting ...", w->signo);
+ INFO("Received signal %d, exiting ...", w->signo);
/* Forward signal to any children in this process group. */
if (killpg(getpgrp(), SIGTERM))
@@ -139,25 +139,6 @@
return port;
}
-/*
- * Check that we don't have write access to the FTP root,
- * unless explicitly allowed
- */
-static int security_check(char *home)
-{
- if (access(home, F_OK)) {
- ERR(errno, "Cannot access FTP root %s", home);
- return 1;
- }
-
- if (!do_insecure && !access(home, W_OK)) {
- ERR(0, "FTP root %s writable, possible security violation!", home);
- return 1;
- }
-
- return 0;
-}
-
static int init(uev_ctx_t *ctx)
{
/* Figure out FTP/TFTP ports */
@@ -178,8 +159,10 @@
}
}
- if (!home || security_check(home))
+ if (!home || access(home, F_OK)) {
+ ERR(errno, "Cannot access FTP root %s", home ? home : "NIL");
return 1;
+ }
return uev_init(ctx);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.8/src/uftpd.h new/uftpd-2.9/src/uftpd.h
--- old/uftpd-2.8/src/uftpd.h 2019-05-28 06:22:26.000000000 +0200
+++ new/uftpd-2.9/src/uftpd.h 2019-07-29 10:53:23.000000000 +0200
@@ -97,6 +97,7 @@
extern int do_syslog; /* Bool: False at daemon start */
extern int do_ftp; /* Port: FTP port, or disabled */
extern int do_tftp; /* Port: TFTP port, or disabled */
+extern int do_insecure; /* Bool: Allow writable root or not */
extern struct passwd *pw; /* FTP user's passwd entry */
typedef struct tftphdr tftp_t;
1
0
Hello community,
here is the log from the commit of package adapta-gtk-theme for openSUSE:Factory checked in at 2019-07-30 12:39:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/adapta-gtk-theme (Old)
and /work/SRC/openSUSE:Factory/.adapta-gtk-theme.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "adapta-gtk-theme"
Tue Jul 30 12:39:18 2019 rev:28 rq:719742 version:3.95.0.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/adapta-gtk-theme/adapta-gtk-theme.changes 2019-02-11 21:25:47.947067205 +0100
+++ /work/SRC/openSUSE:Factory/.adapta-gtk-theme.new.4126/adapta-gtk-theme.changes 2019-07-30 12:39:24.350933573 +0200
@@ -1,0 +2,9 @@
+Mon Jul 29 11:54:01 UTC 2019 - Dominique Leuenberger <dimstar(a)opensuse.org>
+
+- Make overall package arch dependent, with the sub packages
+ noarch: otherwise %ifnarch is not usable.
+- Do not build telegram theme for i586: telegram-desktop is not
+ being built on i586, so the theme would be uninstallable. This
+ sub package is thus nor marked noarch.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ adapta-gtk-theme.spec ++++++
--- /var/tmp/diff_new_pack.HGeXPG/_old 2019-07-30 12:39:25.630933361 +0200
+++ /var/tmp/diff_new_pack.HGeXPG/_new 2019-07-30 12:39:25.634933359 +0200
@@ -48,7 +48,6 @@
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gthread-2.0)
BuildRequires: pkgconfig(libxml-2.0)
-BuildArch: noarch
%description
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -62,6 +61,7 @@
Suggests: gtk2-metatheme-%{_name} = %{version}
Suggests: gtk3-metatheme-%{_name} = %{version}
Provides: adapta-gtk-theme
+BuildArch: noarch
%description -n metatheme-%{_name}-common
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -76,6 +76,7 @@
Requires: gtk2-engine-murrine >= 0.98.1
Requires: metatheme-%{_name}-common = %{version}
Supplements: packageand(metatheme-%{_name}-common:gtk2)
+BuildArch: noarch
%description -n gtk2-metatheme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -89,6 +90,7 @@
Requires: gtk3 >= %{gtk3_min_version}
Requires: metatheme-%{_name}-common = %{version}
Supplements: packageand(metatheme-%{_name}-common:gtk3)
+BuildArch: noarch
%description -n gtk3-metatheme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -103,6 +105,7 @@
Requires: gtk4
Requires: metatheme-%{_name}-common = %{version}
Supplements: packageand(metatheme-%{_name}-common:gtk4)
+BuildArch: noarch
%description -n gtk4-metatheme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -117,6 +120,7 @@
Requires: metacity
Requires: metatheme-%{_name}-common = %{version}
Supplements: packageand(metatheme-%{_name}-common:metacity)
+BuildArch: noarch
%description -n metacity-theme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -130,6 +134,7 @@
Requires: cinnamon >= 3.2.0
Requires: metatheme-%{_name}-common = %{version}
Supplements: packageand(metatheme-%{_name}-common:cinnamon)
+BuildArch: noarch
%description -n cinnamon-theme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -143,6 +148,7 @@
Requires: gnome-shell >= 3.20.0
Requires: metatheme-%{_name}-common = %{version}
Supplements: packageand(metatheme-%{_name}-common:gnome-shell)
+BuildArch: noarch
%description -n gnome-shell-theme-adapta
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -156,6 +162,7 @@
Requires: metatheme-%{_name}-common = %{version}
Requires: xfwm4
Supplements: packageand(metatheme-%{_name}-common:xfwm4)
+BuildArch: noarch
%description -n xfwm4-theme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -169,6 +176,7 @@
Requires: metatheme-%{_name}-common = %{version}-%{release}
Requires: xfce4-notifyd
Supplements: packageand(metatheme-%{_name}-common:xfce4-notifyd)
+BuildArch: noarch
%description -n xfce4-notifyd-theme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -182,6 +190,7 @@
Requires: metatheme-%{_name}-common = %{version}
Requires: plank
Supplements: packageand(metatheme-%{_name}-common:plank)
+BuildArch: noarch
%description -n plank-theme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -195,6 +204,7 @@
Requires: metatheme-%{_name}-common = %{version}
Requires: openbox >= 3.6.1
Supplements: packageand(metatheme-%{_name}-common:openbox)
+BuildArch: noarch
%description -n openbox-theme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -221,6 +231,7 @@
Requires: gedit
Requires: metatheme-%{_name}-common = %{version}
Supplements: packageand(metatheme-%{_name}-common:gedit)
+BuildArch: noarch
%description -n gedit-theme-%{_name}
Adapta is a GTK+ theme based on Material Design Guidelines that was
@@ -242,7 +253,9 @@
%endif
--enable-parallel \
--enable-plank \
+%ifnarch i586
--enable-telegram \
+%endif
--disable-tweetdeck
make %{?_smp_mflags}
@@ -322,11 +335,13 @@
%{_datadir}/themes/%{_theme}/openbox-3/
%{_datadir}/themes/%{_theme}-Nokto/openbox-3/
+%ifnarch i586
%files -n telegram-theme-%{_name}
%{_datadir}/themes/%{_theme}/telegram/
%{_datadir}/themes/%{_theme}-Eta/telegram
%{_datadir}/themes/%{_theme}-Nokto/telegram/
%{_datadir}/themes/%{_theme}-Nokto-Eta/telegram
+%endif
%files -n gedit-theme-%{_name}
%{_datadir}/themes/%{_theme}/gedit/
1
0
Hello community,
here is the log from the commit of package vimb for openSUSE:Factory checked in at 2019-07-30 12:39:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vimb (Old)
and /work/SRC/openSUSE:Factory/.vimb.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vimb"
Tue Jul 30 12:39:16 2019 rev:3 rq:719740 version:3.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/vimb/vimb.changes 2019-03-27 16:22:04.635521340 +0100
+++ /work/SRC/openSUSE:Factory/.vimb.new.4126/vimb.changes 2019-07-30 12:39:21.378934067 +0200
@@ -1,0 +2,19 @@
+Tue Jul 30 04:41:40 UTC 2019 - mvetter(a)suse.com
+
+- Update to 3.5.0:
+ Added:
+ * Add external download command #543 #348.
+ * Added ephemeral mode by new option --incognito#562.
+ Changed:
+ * Hinting shows the current focused elements URI in the statusbar.
+ * Show error if printing with :hardcopy fails #564.
+ Fixed:
+ * Fixed compilation if source is not in a git repo (Thanks to Patrick Steinhardt).
+ * Fixed partial hidden hint labels on top of screen.
+ * Fix segfault on open in new tabe from context menu #556.
+ * Fix "... (null)" shown in title during url sanitization.
+ Removed:
+ * Setting private-browsing was removed in favor of --incognito option.
+- Remove vim-3.4.0-fixbuild.patch: included upstream
+
+-------------------------------------------------------------------
Old:
----
3.4.0.tar.gz
vim-3.4.0-fixbuild.patch
New:
----
3.5.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vimb.spec ++++++
--- /var/tmp/diff_new_pack.LcUHzd/_old 2019-07-30 12:39:22.254933921 +0200
+++ /var/tmp/diff_new_pack.LcUHzd/_new 2019-07-30 12:39:22.254933921 +0200
@@ -17,15 +17,13 @@
Name: vimb
-Version: 3.4.0
+Version: 3.5.0
Release: 0
Summary: The vim-like browser
License: GPL-3.0-or-later
Group: Productivity/Networking/Web/Browsers
URL: https://fanglingsu.github.io/vimb/
Source: https://github.com/fanglingsu/vimb/archive/%{version}.tar.gz
-# FIX-UPSTREAM - mvetter(a)suse.com - https://github.com/fanglingsu/vimb/pull/552
-Patch0: vim-3.4.0-fixbuild.patch
BuildRequires: gtk3-devel
BuildRequires: webkit2gtk3-devel >= 2.20
@@ -35,7 +33,6 @@
%prep
%setup -q
-%patch0 -p1
%build
make %{?_smp_mflags}
++++++ 3.4.0.tar.gz -> 3.5.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/CHANGELOG.md new/vimb-3.5.0/CHANGELOG.md
--- old/vimb-3.4.0/CHANGELOG.md 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/CHANGELOG.md 2019-07-29 22:03:20.000000000 +0200
@@ -11,6 +11,21 @@
### Fixed
### Removed
+## [3.5.0] - 2019-07-29
+### Added
+* Add external download command #543 #348.
+* Added ephemeral mode by new option `--incognito` #562.
+### Changed
+* Hinting shows the current focused elements URI in the statusbar.
+* Show error if printing with `:hardcopy` fails #564.
+### Fixed
+* Fixed compilation if source is not in a git repo (Thanks to Patrick Steinhardt).
+* Fixed partial hidden hint labels on top of screen.
+* Fix segfault on open in new tabe from context menu #556.
+* Fix "... (null)" shown in title during url sanitization.
+### Removed
+* Setting `private-browsing` was removed in favor of `--incognito` option.
+
## [3.4.0] - 2019-03-26
### Added
* Allow to show video in fullscreen, without statusbar and inputbox, if requested.
@@ -241,7 +256,8 @@
cookie file
* Fixed none POSIX `echo -n` call
-[Unreleased]: https://github.com/fanglingsu/vimb/compare/3.3.0...master
+[Unreleased]: https://github.com/fanglingsu/vimb/compare/3.5.0...master
+[3.5.0]: https://github.com/fanglingsu/vimb/compare/3.4.0...3.5.0
[3.4.0]: https://github.com/fanglingsu/vimb/compare/3.3.0...3.4.0
[3.3.0]: https://github.com/fanglingsu/vimb/compare/3.2.0...3.3.0
[3.2.0]: https://github.com/fanglingsu/vimb/compare/3.1.0...3.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/Makefile new/vimb-3.5.0/Makefile
--- old/vimb-3.4.0/Makefile 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/Makefile 2019-07-29 22:03:20.000000000 +0200
@@ -1,9 +1,9 @@
-version = 3.4.0
+version = 3.5.0
include config.mk
all: version.h src.subdir-all
-version.h: Makefile .git/index
+version.h: Makefile $(wildcard .git/index)
@echo "create $@"
$(Q)v="$$(git describe --tags 2>/dev/null)"; \
echo "#define VERSION \"$${v:-$(version)}\"" > $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/doc/vimb.1 new/vimb-3.5.0/doc/vimb.1
--- old/vimb-3.4.0/doc/vimb.1 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/doc/vimb.1 2019-07-29 22:03:20.000000000 +0200
@@ -37,6 +37,9 @@
.I WINID
of an XEmbed-aware application, that Vimb will use as its parent.
.TP
+.B "\-i, \-\-incognito"
+Start an instance with user data read-only (see \fIFILES\fP section).
+.TP
.B "\-h, \-\-help"
Show help options.
.TP
@@ -836,7 +839,7 @@
.RE
.TP
.BI ":sh[ellcmd]! " cmd
-Like :sh[ellcmd], but asyncron.
+Like :sh[ellcmd] but asynchronous.
.sp
Example:
.EX
@@ -1044,6 +1047,29 @@
.B dns-prefetching (bool)
Indicates if Vimb prefetches domain names.
.TP
+.B download-command (string)
+A command with placeholder '%s' that will be invoked to download a URI in
+case 'download-use-external' is enabled.
+.RS
+.TP
+The following additional environment variable are available:
+.PD 0
+.TP
+.B $VIMB_URI
+The URI of the current opened page, normally the page where the download was
+started from, also known as referer.
+.TP
+.B $VIMB_DOWNLOAD_PATH
+Setting value of 'download-path' which would be used normally for downloads.
+.PD
+.PP
+Example:
+.PD 0
+.IP ":set download-command=/bin/sh -c ""cd '$VIMB_DOWNLOAD_PATH' \
+&& curl -sLJOC - -e '$VIMB_URI' %s"""
+.PD
+.RE
+.TP
.B download-path (string)
Path to the default download directory.
If no download directory is set, download will be written into current
@@ -1051,6 +1077,11 @@
The following pattern will be expanded if the download is
started '~/', '~user', '$VAR' and '${VAR}'.
.TP
+.B download-use-external (bool)
+Indicates if the external download tool set as 'download-command' should be
+used to handle downloads.
+If this is disabled Vimb will handle the download.
+.TP
.B editor-command (string)
Command with placeholder '%s' called if form field is opened with $EDITOR to
spawn the editor-like `x-terminal-emulator -e vim %s'.
@@ -1149,6 +1180,7 @@
.B history-max-items (int)
Maximum number of unique items stored in search-, command or URI history.
If history-max-items is set to 0, the history file will not be changed.
+This setting has no effect if option \-\-incognito is set.
.TP
.B home-page (string)
Homepage that vimb opens if started without a URI.
@@ -1225,12 +1257,6 @@
.B print-backgrounds (bool)
Whether background images should be drawn during printing.
.TP
-.B private-browsing (bool)
-Whether to enable private browsing mode.
-This suppresses printing of messages into JavaScript Console.
-At the time this is the only way to force WebKit to
-not allow a page to store data in the windows sessionStorage.
-.TP
.B plugins (bool)
Determines whether or not plugins on the page are enabled.
.TP
@@ -1361,22 +1387,30 @@
.TP
.I cookies.db
Sqlite cookie storage.
+This file will not be touched if option \-\-incognito is set.
.TP
.I closed
Holds the URIs of last closed browser windows.
+This file will not be touched if option \-\-incognito is set.
.TP
.I history
This file holds the history of unique opened URIs.
+This file will not be touched if option \-\-incognito is set.
+.TP
+.I bookmark
+This file holds the list of bookmarked URIs with tags.
.TP
.I command
This file holds the history of commands and search queries performed via input
box.
+This file will not be touched if option \-\-incognito is set.
.TP
.I queue
Holds the read it later queue filled by `qpush'.
.TP
.I search
This file holds the history of search queries.
+This file will not be touched if option \-\-incognito is set.
.TP
.I scripts.js
This file can be used to run user scripts, that are injected into every page
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/bookmark.c new/vimb-3.5.0/src/bookmark.c
--- old/vimb-3.4.0/src/bookmark.c 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/bookmark.c 2019-07-29 22:03:20.000000000 +0200
@@ -236,7 +236,12 @@
static GList *load(const char *file)
{
- return util_file_to_unique_list(file, (Util_Content_Func)line_to_bookmark, 0);
+ char **lines;
+ GList *list;
+ lines = util_get_lines(file);
+ list = util_strv_to_unique_list(lines, (Util_Content_Func)line_to_bookmark, 0);
+ g_strfreev(lines);
+ return list;
}
/**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/ex.c new/vimb-3.5.0/src/ex.c
--- old/vimb-3.4.0/src/ex.c 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/ex.c 2019-07-29 22:03:20.000000000 +0200
@@ -140,6 +140,7 @@
static void on_eval_script_finished(GDBusProxy *proxy, GAsyncResult *result, Client *c);
static VbCmdResult ex_clearcache(Client *c, const ExArg *arg);
static VbCmdResult ex_hardcopy(Client *c, const ExArg *arg);
+static void print_failed_cb(WebKitPrintOperation* op, GError *err, Client *c);
static VbCmdResult ex_map(Client *c, const ExArg *arg);
static VbCmdResult ex_unmap(Client *c, const ExArg *arg);
static VbCmdResult ex_normal(Client *c, const ExArg *arg);
@@ -858,12 +859,17 @@
return CMD_SUCCESS;
}
+/**
+ * Opens the gtk print dialog.
+ */
static VbCmdResult ex_hardcopy(Client *c, const ExArg *arg)
{
WebKitPrintOperation *op = webkit_print_operation_new(c->webview);
GtkPrintSettings *settings = gtk_print_settings_new();
-
gtk_print_settings_set(settings, GTK_PRINT_SETTINGS_OUTPUT_BASENAME, c->state.title);
+
+ g_signal_connect(op, "failed", G_CALLBACK(print_failed_cb), c);
+
webkit_print_operation_set_print_settings(op, settings);
webkit_print_operation_run_dialog(op, NULL);
g_object_unref(op);
@@ -872,6 +878,14 @@
return CMD_SUCCESS;
}
+/**
+ * Callback called when printing failed.
+ */
+static void print_failed_cb(WebKitPrintOperation* op, GError *err, Client *c)
+{
+ vb_echo(c, MSG_ERROR, FALSE, "print failed: %s", err->message);
+}
+
static VbCmdResult ex_map(Client *c, const ExArg *arg)
{
if (!arg->lhs->len || !arg->rhs->len) {
@@ -956,7 +970,7 @@
return command_queue(c, &a)
? CMD_SUCCESS | CMD_KEEPINPUT
- : CMD_ERROR | CMD_KEEPINPUT;
+ : CMD_ERROR;
}
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/file-storage.c new/vimb-3.5.0/src/file-storage.c
--- old/vimb-3.4.0/src/file-storage.c 1970-01-01 01:00:00.000000000 +0100
+++ new/vimb-3.5.0/src/file-storage.c 2019-07-29 22:03:20.000000000 +0200
@@ -0,0 +1,151 @@
+/**
+ * vimb - a webkit based vim like browser.
+ *
+ * Copyright (C) 2012-2019 Daniel Carl
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU 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 <glib.h>
+#include <stdio.h>
+#include <sys/file.h>
+#include <glib/gstdio.h>
+
+#include "file-storage.h"
+
+struct filestorage {
+ char *file_path;
+ gboolean readonly;
+ GString *str;
+};
+
+/**
+ * Create new file storage instance for given directory and filename. If the
+ * file does not exists in the directory and give mode is not 0 the file is
+ * created with the given mode.
+ *
+ * The returned FileStorage must be freed by file_storage_free().
+ *
+ * @dir: Directory in which the file is searched.
+ * @filename: Filename to built the absolute path with.
+ * @mode: Mode (file permission as chmod(2)) used for the file when
+ * creating it. If 0 the file is not created and the storage is
+ * used in read only mode - no data written to the file.
+ */
+FileStorage *file_storage_new(const char *dir, const char *filename, gboolean readonly)
+{
+ FileStorage *storage;
+
+ storage = g_slice_new(FileStorage);
+ storage->readonly = readonly;
+ storage->file_path = g_build_filename(dir, filename, NULL);
+
+ /* Use gstring as storage in case when the file is used read only. */
+ if (storage->readonly) {
+ storage->str = g_string_new(NULL);
+ } else {
+ storage->str = NULL;
+ }
+
+ return storage;
+}
+
+/**
+ * Free memory for given file storage.
+ */
+void file_storage_free(FileStorage *storage)
+{
+ if (storage) {
+ g_free(storage->file_path);
+ if (storage->str) {
+ g_string_free(storage->str, TRUE);
+ }
+ g_slice_free(FileStorage, storage);
+ }
+}
+
+/**
+ * Append new data to file.
+ *
+ * @fileStorage: FileStorage to append the data to
+ * @format: Format string used to process va_list
+ */
+gboolean file_storage_append(FileStorage *storage, const char *format, ...)
+{
+ FILE *f;
+ va_list args;
+
+ g_assert(storage);
+
+ /* Write data to in memory list in case the file storage is read only. */
+ if (storage->readonly) {
+ va_start(args, format);
+ g_string_append_vprintf(storage->str, format, args);
+ va_end(args);
+ return TRUE;
+ }
+ if ((f = fopen(storage->file_path, "a+"))) {
+ flock(fileno(f), LOCK_EX);
+ va_start(args, format);
+ vfprintf(f, format, args);
+ va_end(args);
+ flock(fileno(f), LOCK_UN);
+ fclose(f);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+/**
+ * Retrieves all the lines from file storage.
+ *
+ * The result have to be freed by g_strfreev().
+ */
+char **file_storage_get_lines(FileStorage *storage)
+{
+ char *fullcontent = NULL;
+ char *content = NULL;
+ char **lines = NULL;
+
+ g_file_get_contents(storage->file_path, &content, NULL, NULL);
+
+ if (storage->str && storage->str->len) {
+ if (content) {
+ fullcontent = g_strconcat(content, storage->str->str, NULL);
+ lines = g_strsplit(fullcontent, "\n", -1);
+ g_free(fullcontent);
+ } else {
+ lines = g_strsplit(storage->str->str, "\n", -1);
+ }
+ } else {
+ lines = g_strsplit(content ? content : "", "\n", -1);
+ }
+
+ if (content) {
+ g_free(content);
+ }
+
+ return lines;
+}
+
+const char *file_storage_get_path(FileStorage *storage)
+{
+ return storage->file_path;
+}
+
+gboolean file_storage_is_readonly(FileStorage *storage)
+{
+ return storage->readonly;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/file-storage.h new/vimb-3.5.0/src/file-storage.h
--- old/vimb-3.4.0/src/file-storage.h 1970-01-01 01:00:00.000000000 +0100
+++ new/vimb-3.5.0/src/file-storage.h 2019-07-29 22:03:20.000000000 +0200
@@ -0,0 +1,33 @@
+/**
+ * vimb - a webkit based vim like browser.
+ *
+ * Copyright (C) 2012-2019 Daniel Carl
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU 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/.
+ */
+
+#ifndef _FILE_STORAGE_H
+#define _FILE_STORAGE_H
+
+#include <glib.h>
+
+typedef struct filestorage FileStorage;
+FileStorage *file_storage_new(const char *dir, const char *filename, int mode);
+void file_storage_free(FileStorage *storage);
+gboolean file_storage_append(FileStorage *storage, const char *format, ...);
+char **file_storage_get_lines(FileStorage *storage);
+const char *file_storage_get_path(FileStorage *storage);
+gboolean file_storage_is_readonly(FileStorage *storage);
+
+#endif /* end of include guard: _FILE_STORAGE_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/hints.c new/vimb-3.5.0/src/hints.c
--- old/vimb-3.4.0/src/hints.c 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/hints.c 2019-07-29 22:03:20.000000000 +0200
@@ -308,16 +308,28 @@
char *value = NULL;
if (!return_value) {
- return FALSE;
+ goto error;
}
g_variant_get(return_value, "(bs)", &success, &value);
if (!success || !strncmp(value, "ERROR:", 6)) {
- return FALSE;
+ goto error;
}
-
- /* following return values mark fired hints */
- if (!strncmp(value, "DONE:", 5)) {
+ if (!strncmp(value, "OVER:", 5)) {
+ /* If focused elements src is given fire mouse-target-changed signal
+ * to show its uri in the statusbar. */
+ if (*(value + 7)) {
+ /* We get OVER:{I,A}:element-url so we use byte 6 to check for the
+ * hinted element type image I or link A. */
+ if (*(value + 5) == 'I') {
+ vb_statusbar_show_hover_url(c, LINK_TYPE_IMAGE, value + 7);
+ } else {
+ vb_statusbar_show_hover_url(c, LINK_TYPE_LINK, value + 7);
+ }
+ } else {
+ goto error;
+ }
+ } else if (!strncmp(value, "DONE:", 5)) {
fire_timeout(c, FALSE);
/* Change to normal mode only if we are currently in command mode and
* we are not in g-mode hinting. This is required to not switch to
@@ -397,6 +409,10 @@
}
return TRUE;
+
+error:
+ vb_statusbar_show_hover_url(c, LINK_TYPE_NONE, NULL);
+ return FALSE;
}
static void fire_timeout(Client *c, gboolean on)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/history.c new/vimb-3.5.0/src/history.c
--- old/vimb-3.4.0/src/history.c 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/history.c 2019-07-29 22:03:20.000000000 +0200
@@ -27,8 +27,9 @@
#include "history.h"
#include "main.h"
#include "util.h"
+#include "file-storage.h"
-#define HIST_FILE(t) (vb.files[file_map[t]])
+#define HIST_STORAGE(t) (vb.storage[storage_map[t]])
typedef struct {
char *first;
char *second;
@@ -37,14 +38,14 @@
static gboolean history_item_contains_all_tags(History *item, char **query, guint qlen);
static void free_history(History *item);
static History *line_to_history(const char *uri, const char *title);
-static GList *load(const char *file);
+static GList *load(FileStorage *s);
static void write_to_file(GList *list, const char *file);
/* map history types to files */
-static const int file_map[HISTORY_LAST] = {
- FILES_COMMAND,
- FILES_SEARCH,
- FILES_HISTORY
+static const int storage_map[HISTORY_LAST] = {
+ STORAGE_COMMAND,
+ STORAGE_SEARCH,
+ STORAGE_HISTORY
};
extern struct Vimb vb;
@@ -53,18 +54,18 @@
*/
void history_add(Client *c, HistoryType type, const char *value, const char *additional)
{
- const char *file;
+ FileStorage *s;
/* Don't write a history entry if the history max size is set to 0. */
if (!vb.config.history_max) {
return;
}
- file = HIST_FILE(type);
+ s = HIST_STORAGE(type);
if (additional) {
- util_file_append(file, "%s\t%s\n", value, additional);
+ file_storage_append(s, "%s\t%s\n", value, additional);
} else {
- util_file_append(file, "%s\n", value);
+ file_storage_append(s, "%s\n", value);
}
}
@@ -74,7 +75,7 @@
*/
void history_cleanup(void)
{
- const char *file;
+ FileStorage *s;
GList *list;
/* don't cleanup the history file if history max size is 0 */
@@ -83,10 +84,12 @@
}
for (HistoryType i = HISTORY_FIRST; i < HISTORY_LAST; i++) {
- file = HIST_FILE(i);
- list = load(file);
- write_to_file(list, file);
- g_list_free_full(list, (GDestroyNotify)free_history);
+ s = HIST_STORAGE(i);
+ if (!file_storage_is_readonly(s)) {
+ list = load(s);
+ write_to_file(list, file_storage_get_path(s));
+ g_list_free_full(list, (GDestroyNotify)free_history);
+ }
}
}
@@ -99,7 +102,7 @@
GtkTreeIter iter;
History *item;
- src = load(HIST_FILE(type));
+ src = load(HIST_STORAGE(type));
src = g_list_reverse(src);
if (!input || !*input) {
/* without any tags return all items */
@@ -168,12 +171,12 @@
switch (type) {
case INPUT_COMMAND:
- src = load(HIST_FILE(HISTORY_COMMAND));
+ src = load(HIST_STORAGE(HISTORY_COMMAND));
break;
case INPUT_SEARCH_FORWARD:
case INPUT_SEARCH_BACKWARD:
- src = load(HIST_FILE(HISTORY_SEARCH));
+ src = load(HIST_STORAGE(HISTORY_SEARCH));
break;
default:
@@ -241,10 +244,12 @@
*
* Returned list must be freed with (GDestroyNotify)free_history.
*/
-static GList *load(const char *file)
+static GList *load(FileStorage *s)
{
- return util_file_to_unique_list(
- file, (Util_Content_Func)line_to_history, vb.config.history_max
+ return util_strv_to_unique_list(
+ file_storage_get_lines(s),
+ (Util_Content_Func)line_to_history,
+ vb.config.history_max
);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/main.c new/vimb-3.5.0/src/main.c
--- old/vimb-3.4.0/src/main.c 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/main.c 2019-07-29 22:03:20.000000000 +0200
@@ -46,6 +46,7 @@
#include "shortcut.h"
#include "util.h"
#include "autocmd.h"
+#include "file-storage.h"
static void client_destroy(Client *c);
static Client *client_new(WebKitWebView *webview);
@@ -63,6 +64,9 @@
static void on_webctx_init_web_extension(WebKitWebContext *webctx, gpointer data);
static gboolean on_webdownload_decide_destination(WebKitDownload *download,
gchar *suggested_filename, Client *c);
+static void on_webdownload_response_received(WebKitDownload *download,
+ GParamSpec *ps, Client *c);
+static void spawn_download_command(Client *c, WebKitURIResponse *response);
static void on_webdownload_failed(WebKitDownload *download,
GError *error, Client *c);
static void on_webdownload_finished(WebKitDownload *download, Client *c);
@@ -639,6 +643,39 @@
}
/**
+ * Show the given url on the left of statusbar.
+ */
+void vb_statusbar_show_hover_url(Client *c, VbLinkType type, const char *uri)
+{
+ char *sanitized_uri,
+ *msg;
+ const char *type_label;
+
+ /* No uri given - show the current URI. */
+ if (!uri || !*uri) {
+ update_urlbar(c);
+ return;
+ }
+
+ switch (type) {
+ case LINK_TYPE_LINK:
+ type_label = "Link: ";
+ break;
+ case LINK_TYPE_IMAGE:
+ type_label = "Image: ";
+ break;
+ default:
+ return;
+ }
+
+ sanitized_uri = util_sanitize_uri(uri);
+ msg = g_strconcat(type_label, uri, NULL);
+ gtk_label_set_text(GTK_LABEL(c->statusbar.left), msg);
+ g_free(msg);
+ g_free(sanitized_uri);
+}
+
+/**
* Destroys given client and removed it from client queue. If no client is
* there in queue, quit the gtk main loop.
*/
@@ -990,6 +1027,7 @@
#ifndef FEATURE_NO_XEMBED
+ (vb.embed ? 2 : 0)
#endif
+ + (vb.incognito ? 1 : 0)
+ (vb.profile ? 2 : 0)
+ (vb.no_maximize ? 1 : 0),
sizeof(char *)
@@ -1009,6 +1047,9 @@
cmd[i++] = xid;
}
#endif
+ if (vb.incognito) {
+ cmd[i++] = "-i";
+ }
if (vb.profile) {
cmd[i++] = "-p";
cmd[i++] = vb.profile;
@@ -1037,15 +1078,19 @@
autocmd_run(c, AU_DOWNLOAD_STARTED, uri, NULL);
#endif
- g_signal_connect(download, "decide-destination", G_CALLBACK(on_webdownload_decide_destination), c);
- g_signal_connect(download, "failed", G_CALLBACK(on_webdownload_failed), c);
- g_signal_connect(download, "finished", G_CALLBACK(on_webdownload_finished), c);
- g_signal_connect(download, "received-data", G_CALLBACK(on_webdownload_received_data), c);
+ if (GET_BOOL(c, "download-use-external")) {
+ g_signal_connect(download, "notify::response", G_CALLBACK(on_webdownload_response_received), c);
+ } else {
+ g_signal_connect(download, "decide-destination", G_CALLBACK(on_webdownload_decide_destination), c);
+ g_signal_connect(download, "failed", G_CALLBACK(on_webdownload_failed), c);
+ g_signal_connect(download, "finished", G_CALLBACK(on_webdownload_finished), c);
+ g_signal_connect(download, "received-data", G_CALLBACK(on_webdownload_received_data), c);
- c->state.downloads = g_list_append(c->state.downloads, download);
+ c->state.downloads = g_list_append(c->state.downloads, download);
- /* to reflect the correct download count */
- vb_statusbar_update(c);
+ /* to reflect the correct download count */
+ vb_statusbar_update(c);
+ }
}
/**
@@ -1087,6 +1132,48 @@
return vb_download_set_destination(c, download, suggested_filename, NULL);
}
+static void on_webdownload_response_received(WebKitDownload *download,
+ GParamSpec *ps, Client *c)
+{
+ spawn_download_command(c, webkit_download_get_response(download));
+ webkit_download_cancel(download);
+}
+
+static void spawn_download_command(Client *c, WebKitURIResponse *response)
+{
+ char *cmd;
+ char **argv, **envp;
+ int argc;
+ GError *error = NULL;
+
+ cmd = g_strdup_printf(GET_CHAR(c, "download-command"),
+ webkit_uri_response_get_uri(response));
+
+ if (!g_shell_parse_argv(cmd, &argc, &argv, &error)) {
+ g_warning("Could not parse download-command '%s': %s",
+ cmd,
+ error->message);
+ g_error_free(error);
+ g_free(cmd);
+ return;
+ }
+
+ envp = g_get_environ();
+ envp = g_environ_setenv(envp, "VIMB_DOWNLOAD_PATH",
+ GET_CHAR(c, "download-path"), TRUE);
+
+ if (g_spawn_async(NULL, argv, envp, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error)) {
+ vb_echo(c, MSG_NORMAL, FALSE, "Download started");
+ } else {
+ vb_echo(c, MSG_ERROR, TRUE, "Could not start download");
+ g_warning("%s", error->message);
+ g_clear_error(&error);
+ }
+ g_free(cmd);
+ g_strfreev(envp);
+ g_strfreev(argv);
+}
+
/**
* Callback for the webkit download failed signal.
* This signal is emitted when an error occurs during the download operation.
@@ -1347,18 +1434,25 @@
WebKitLoadEvent event, Client *c)
{
GTlsCertificateFlags tlsflags;
+ const char *raw_uri;
char *uri = NULL;
+ raw_uri = webkit_web_view_get_uri(webview);
+ if (raw_uri) {
+ uri = util_sanitize_uri(raw_uri);
+ }
+
switch (event) {
case WEBKIT_LOAD_STARTED:
#ifdef FEATURE_AUTOCMD
- autocmd_run(c, AU_LOAD_STARTED, webkit_web_view_get_uri(webview), NULL);
+ autocmd_run(c, AU_LOAD_STARTED, raw_uri, NULL);
#endif
/* update load progress in statusbar */
c->state.progress = 0;
vb_statusbar_update(c);
- uri = util_sanitize_uri(webkit_web_view_get_uri(webview));
- set_title(c, uri);
+ if (uri) {
+ set_title(c, uri);
+ }
/* Make sure hinting is cleared before the new page is loaded.
* Without that vimb would still be in hinting mode after hinting
* was started and some links was clicked my mouse. Even if there
@@ -1379,13 +1473,12 @@
* right place to remove the flag. */
c->mode->flags &= ~FLAG_IGNORE_FOCUS;
#ifdef FEATURE_AUTOCMD
- autocmd_run(c, AU_LOAD_COMMITTED, webkit_web_view_get_uri(webview), NULL);
+ autocmd_run(c, AU_LOAD_COMMITTED, raw_uri, NULL);
#endif
/* save the current URI in register % */
- uri = util_sanitize_uri(webkit_web_view_get_uri(webview));
vb_register_add(c, '%', uri);
/* check if tls is on and the page is trusted */
- if (g_str_has_prefix(uri, "https://")) {
+ if (uri && g_str_has_prefix(uri, "https://")) {
if (webkit_web_view_get_tls_info(webview, NULL, &tlsflags) && tlsflags) {
set_statusbar_style(c, STATUS_SSL_INVALID);
} else {
@@ -1405,12 +1498,11 @@
break;
case WEBKIT_LOAD_FINISHED:
- uri = util_sanitize_uri(webkit_web_view_get_uri(webview));
#ifdef FEATURE_AUTOCMD
- autocmd_run(c, AU_LOAD_FINISHED, webkit_web_view_get_uri(webview), NULL);
+ autocmd_run(c, AU_LOAD_FINISHED, raw_uri, NULL);
#endif
c->state.progress = 100;
- if (strncmp(uri, "about:", 6)) {
+ if (uri && strncmp(uri, "about:", 6)) {
history_add(c, HISTORY_URL, uri, webkit_web_view_get_title(webview));
}
break;
@@ -1429,9 +1521,6 @@
static void on_webview_mouse_target_changed(WebKitWebView *webview,
WebKitHitTestResult *result, guint modifiers, Client *c)
{
- char *msg;
- char *uri;
-
/* Save the hitTestResult to have this later available for events that
* don't support this. */
if (c->state.hit_test_result) {
@@ -1440,20 +1529,14 @@
c->state.hit_test_result = g_object_ref(result);
if (webkit_hit_test_result_context_is_link(result)) {
- uri = util_sanitize_uri(webkit_hit_test_result_get_link_uri(result));
- msg = g_strconcat("Link: ", uri, NULL);
- gtk_label_set_text(GTK_LABEL(c->statusbar.left), msg);
- g_free(msg);
- g_free(uri);
+ vb_statusbar_show_hover_url(c, LINK_TYPE_LINK,
+ webkit_hit_test_result_get_link_uri(result));
} else if (webkit_hit_test_result_context_is_image(result)) {
- uri = util_sanitize_uri(webkit_hit_test_result_get_image_uri(result));
- msg = g_strconcat("Image: ", uri, NULL);
- gtk_label_set_text(GTK_LABEL(c->statusbar.left), msg);
- g_free(msg);
- g_free(uri);
+ vb_statusbar_show_hover_url(c, LINK_TYPE_LINK,
+ webkit_hit_test_result_get_image_uri(result));
} else {
/* No link under cursor - show the current URI. */
- update_urlbar(c);
+ vb_statusbar_show_hover_url(c, LINK_TYPE_NONE, NULL);
}
}
@@ -1492,6 +1575,7 @@
if (c->state.uri) {
g_free(c->state.uri);
}
+
c->state.uri = util_sanitize_uri(webkit_web_view_get_uri(c->webview));
update_urlbar(c);
@@ -1689,6 +1773,9 @@
/* free memory of other components */
util_cleanup();
+ for (i = 0; i < STORAGE_LAST; i++) {
+ file_storage_free(vb.storage[i]);
+ }
for (i = 0; i < FILES_LAST; i++) {
if (vb.files[i]) {
g_free(vb.files[i]);
@@ -1715,25 +1802,32 @@
vb.files[FILES_CONFIG] = g_strdup(rp);
free(rp);
} else {
- vb.files[FILES_CONFIG] = util_get_filepath(path, "config", FALSE, 0600);
+ vb.files[FILES_CONFIG] = g_build_filename(path, "config", NULL);
}
/* Setup those files that are use multiple time during runtime */
- vb.files[FILES_CLOSED] = util_get_filepath(path, "closed", TRUE, 0600);
- vb.files[FILES_COOKIE] = util_get_filepath(path, "cookies.db", TRUE, 0600);
- vb.files[FILES_USER_STYLE] = util_get_filepath(path, "style.css", FALSE, 0600);
- vb.files[FILES_SCRIPT] = util_get_filepath(path, "scripts.js", FALSE, 0600);
- vb.files[FILES_HISTORY] = util_get_filepath(path, "history", TRUE, 0600);
- vb.files[FILES_COMMAND] = util_get_filepath(path, "command", TRUE, 0600);
- vb.files[FILES_BOOKMARK] = util_get_filepath(path, "bookmark", TRUE, 0600);
- vb.files[FILES_QUEUE] = util_get_filepath(path, "queue", TRUE, 0600);
- vb.files[FILES_SEARCH] = util_get_filepath(path, "search", TRUE, 0600);
+ if (!vb.incognito) {
+ vb.files[FILES_CLOSED] = g_build_filename(path, "closed", NULL);
+ vb.files[FILES_COOKIE] = g_build_filename(path, "cookies.db", NULL);
+ }
+ vb.files[FILES_BOOKMARK] = g_build_filename(path, "bookmark", NULL);
+ vb.files[FILES_QUEUE] = g_build_filename(path, "queue", NULL);
+ vb.files[FILES_SCRIPT] = g_build_filename(path, "scripts.js", NULL);
+ vb.files[FILES_USER_STYLE] = g_build_filename(path, "style.css", NULL);
+
+ vb.storage[STORAGE_HISTORY] = file_storage_new(path, "history", vb.incognito);
+ vb.storage[STORAGE_COMMAND] = file_storage_new(path, "command", vb.incognito);
+ vb.storage[STORAGE_SEARCH] = file_storage_new(path, "search", vb.incognito);
g_free(path);
/* Use seperate rendering processed for the webview of the clients in the
* current instance. This must be called as soon as possible according to
* the documentation. */
- ctx = webkit_web_context_get_default();
+ if (vb.incognito) {
+ ctx = webkit_web_context_new_ephemeral();
+ } else {
+ ctx = webkit_web_context_get_default();
+ }
webkit_web_context_set_process_model(ctx, WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
webkit_web_context_set_cache_model(ctx, WEBKIT_CACHE_MODEL_WEB_BROWSER);
@@ -1988,6 +2082,7 @@
GOptionEntry opts[] = {
{"config", 'c', 0, G_OPTION_ARG_FILENAME, &vb.configfile, "Custom configuration file", NULL},
{"embed", 'e', 0, G_OPTION_ARG_STRING, &winid, "Reparents to window specified by xid", NULL},
+ {"incognito", 'i', 0, G_OPTION_ARG_NONE, &vb.incognito, "Run with user data read-only", NULL},
{"profile", 'p', 0, G_OPTION_ARG_CALLBACK, (GOptionArgFunc*)profileOptionArgFunc, "Profile name", NULL},
{"version", 'v', 0, G_OPTION_ARG_NONE, &ver, "Print version", NULL},
{"no-maximize", 0, 0, G_OPTION_ARG_NONE, &vb.no_maximize, "Do no attempt to maximize window", NULL},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/main.h new/vimb-3.5.0/src/main.h
--- old/vimb-3.4.0/src/main.h 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/main.h 2019-07-29 22:03:20.000000000 +0200
@@ -26,6 +26,7 @@
#include <webkit2/webkit2.h>
#include "shortcut.h"
#include "handler.h"
+#include "file-storage.h"
#include "config.h"
@@ -105,17 +106,29 @@
enum {
FILES_BOOKMARK,
FILES_CLOSED,
- FILES_COMMAND,
FILES_CONFIG,
FILES_COOKIE,
- FILES_HISTORY,
FILES_QUEUE,
FILES_SCRIPT,
- FILES_SEARCH,
FILES_USER_STYLE,
FILES_LAST
};
+enum {
+ STORAGE_CLOSED,
+ STORAGE_COMMAND,
+ STORAGE_CONFIG,
+ STORAGE_HISTORY,
+ STORAGE_SEARCH,
+ STORAGE_LAST
+};
+
+typedef enum {
+ LINK_TYPE_NONE,
+ LINK_TYPE_LINK,
+ LINK_TYPE_IMAGE,
+} VbLinkType;
+
typedef struct Client Client;
typedef struct State State;
typedef struct Map Map;
@@ -262,6 +275,7 @@
GHashTable *modes; /* all available browser main modes */
char *configfile; /* config file given as option on startup */
char *files[FILES_LAST];
+ FileStorage *storage[STORAGE_LAST];
char *profile; /* profile name */
struct {
guint history_max;
@@ -269,6 +283,7 @@
} config;
GtkCssProvider *style_provider;
gboolean no_maximize;
+ gboolean incognito;
};
gboolean vb_download_set_destination(Client *c, WebKitDownload *download,
@@ -290,6 +305,7 @@
void vb_register_add(Client *c, char buf, const char *value);
const char *vb_register_get(Client *c, char buf);
void vb_statusbar_update(Client *c);
+void vb_statusbar_show_hover_url(Client *c, VbLinkType type, const char *uri);
void vb_gui_style_update(Client *c, const char *name, const char *value);
#endif /* end of include guard: _MAIN_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/scripts/hints.css new/vimb-3.5.0/src/scripts/hints.css
--- old/vimb-3.4.0/src/scripts/hints.css 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/scripts/hints.css 2019-07-29 22:03:20.000000000 +0200
@@ -1,5 +1,4 @@
span[vimbhint^='label']{
- -webkit-transform:translate(-4px,-4px);
background-color:#fff;
border:1px solid #444;
color:#000;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/scripts/hints.js new/vimb-3.5.0/src/scripts/hints.js
--- old/vimb-3.4.0/src/scripts/hints.js 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/scripts/hints.js 2019-07-29 22:03:20.000000000 +0200
@@ -175,8 +175,8 @@
label = labelTmpl.cloneNode(false);
label.style.display = "none";
- label.style.left = rect.left + "px";
- label.style.top = rect.top + "px";
+ label.style.left = Math.max(rect.left - 4, 0) + "px";
+ label.style.top = Math.max(rect.top - 4, 0) + "px";
/* if hinted element is an image - show title or alt of the image in hint label */
/* this allows to see how to filter for the image */
@@ -348,7 +348,7 @@
idx = 0;
}
}
- focusHint(idx);
+ return focusHint(idx);
}
function fire() {
@@ -423,8 +423,11 @@
}
/* get the new active hint */
if ((activeHint = validHints[newIdx])) {
+ var e = activeHint.e;
activeHint.focus();
- mouseEvent(activeHint.e, "mouseover");
+ mouseEvent(e, "mouseover");
+
+ return "OVER:" + (e instanceof HTMLImageElement ? "I:" : "A:") + getSrc(e);
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/setting.c new/vimb-3.5.0/src/setting.c
--- old/vimb-3.4.0/src/setting.c 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/setting.c 2019-07-29 22:03:20.000000000 +0200
@@ -116,7 +116,6 @@
setting_add(c, "plugins", TYPE_BOOLEAN, &on, webkit, 0, "enable-plugins");
setting_add(c, "prevent-newwindow", TYPE_BOOLEAN, &off, internal, 0, &c->config.prevent_newwindow);
setting_add(c, "print-backgrounds", TYPE_BOOLEAN, &on, webkit, 0, "print-backgrounds");
- setting_add(c, "private-browsing", TYPE_BOOLEAN, &off, webkit, 0, "enable-private-browsing");
setting_add(c, "sans-serif-font", TYPE_CHAR, &"sans-serif", webkit, 0, "sans-serif-font-family");
setting_add(c, "scripts", TYPE_BOOLEAN, &on, webkit, 0, "enable-javascript");
setting_add(c, "serif-font", TYPE_CHAR, &"serif", webkit, 0, "serif-font-family");
@@ -150,6 +149,8 @@
i = 100;
setting_add(c, "default-zoom", TYPE_INTEGER, &i, default_zoom, 0, NULL);
setting_add(c, "download-path", TYPE_CHAR, &"~/", NULL, 0, NULL);
+ setting_add(c, "download-command", TYPE_CHAR, &"/bin/sh -c \"curl -sLJOC - -e '$VIMB_URI' %s\"", NULL, 0, NULL);
+ setting_add(c, "download-use-external", TYPE_BOOLEAN, &off, NULL, 0, NULL);
setting_add(c, "incsearch", TYPE_BOOLEAN, &off, internal, 0, &c->config.incsearch);
i = 10;
/* TODO should be global and not overwritten by a new client */
@@ -158,7 +159,7 @@
setting_add(c, "spell-checking", TYPE_BOOLEAN, &off, webkit_spell_checking, 0, NULL);
setting_add(c, "spell-checking-languages", TYPE_CHAR, &"en_US", webkit_spell_checking_language, FLAG_LIST|FLAG_NODUP, NULL);
- /* gui style settings vimb3 */
+ /* gui style settings vimb */
setting_add(c, "completion-css", TYPE_CHAR, &"color:#fff;background-color:#656565;font:" SETTING_GUI_FONT_NORMAL, gui_style, 0, NULL);
setting_add(c, "completion-hover-css", TYPE_CHAR, &"background-color:#777;", gui_style, 0, NULL);
setting_add(c, "completion-selected-css", TYPE_CHAR, &"color:#f6f3e8;background-color:#888;", gui_style, 0, NULL);
@@ -672,7 +673,7 @@
ucm = webkit_web_view_get_user_content_manager(c->webview);
- if (enabled && vb.files[FILES_USER_STYLE]) {
+ if (enabled) {
if (g_file_get_contents(vb.files[FILES_USER_STYLE], &source, NULL, NULL)) {
style = webkit_user_style_sheet_new(
source, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES,
@@ -683,7 +684,7 @@
webkit_user_style_sheet_unref(style);
g_free(source);
} else {
- g_warning("Could not reed style file: %s", vb.files[FILES_USER_STYLE]);
+ g_message("Could not reed style file: %s", vb.files[FILES_USER_STYLE]);
}
} else {
webkit_user_content_manager_remove_all_style_sheets(ucm);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/util.c new/vimb-3.5.0/src/util.c
--- old/vimb-3.4.0/src/util.c 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/util.c 2019-07-29 22:03:20.000000000 +0200
@@ -430,41 +430,6 @@
}
/**
- * Buil the path from given directory and filename and checks if the file
- * exists. If the file does not exists and the create option is not set, this
- * function returns NULL.
- * If the file exists or the create option was given the full generated path
- * is returned as newly allocated string.
- *
- * The return value must be freed with g_free.
- *
- * @dir: Directory in which the file is searched.
- * @filename: Filename to built the absolute path with.
- * @create: If TRUE, the file is created if it does not already exist.
- * @mode: Mode (file permission as chmod(2)) used for the file when creating it.
- */
-char *util_get_filepath(const char *dir, const char *filename, gboolean create, int mode)
-{
- char *fullpath;
-
- /* Built the full path out of config dir and given file name. */
- fullpath = g_build_filename(dir, filename, NULL);
-
- if (g_file_test(fullpath, G_FILE_TEST_IS_REGULAR)) {
- return fullpath;
- } else if (create) {
- /* If create option was given - create the file. */
- fclose(fopen(fullpath, "a"));
- g_chmod(fullpath, mode);
- return fullpath;
- }
-
- g_free(fullpath);
- return NULL;
-}
-
-
-/**
* Retrieves the file content as lines.
*
* The result have to be freed by g_strfreev().
@@ -478,7 +443,7 @@
return NULL;
}
- if ((content = util_get_file_contents(filename, NULL))) {
+ if (g_file_get_contents(filename, &content, NULL, NULL)) {
/* split the file content into lines */
lines = g_strsplit(content, "\n", -1);
g_free(content);
@@ -491,20 +456,18 @@
* based on the lines comparing all chars until the next <tab> char or end of
* line.
*
- * @filename: file to read items from
* @func: Function to parse a single line to item.
* @max_items: maximum number of items that are returned, use 0 for
* unlimited items
*/
-GList *util_file_to_unique_list(const char *filename, Util_Content_Func func,
+GList *util_strv_to_unique_list(char **lines, Util_Content_Func func,
guint max_items)
{
- char *line, **lines;
+ char *line;
int i, len;
GList *gl = NULL;
GHashTable *ht;
- lines = util_get_lines(filename);
if (!lines) {
return NULL;
}
@@ -556,7 +519,6 @@
}
}
- g_strfreev(lines);
g_hash_table_destroy(ht);
return gl;
@@ -821,7 +783,7 @@
/**
* Strips password from a uri.
*
- * Return newly allocated string.
+ * Return newly allocated string or NULL.
*/
char *util_sanitize_uri(const char *uri_str)
{
@@ -829,8 +791,14 @@
char *sanitized_uri;
char *for_display;
+ if (!uri_str) {
+ return NULL;
+ }
#if WEBKIT_CHECK_VERSION(2, 24, 0)
for_display = webkit_uri_for_display(uri_str);
+ if (!for_display) {
+ for_display = g_strdup(uri_str);
+ }
#else
for_display = g_strdup(uri_str);
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/src/util.h new/vimb-3.5.0/src/util.h
--- old/vimb-3.4.0/src/util.h 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/src/util.h 2019-07-29 22:03:20.000000000 +0200
@@ -43,9 +43,8 @@
char *util_get_config_dir(void);
char *util_get_file_contents(const char *filename, gsize *length);
gboolean util_file_set_content(const char *file, const char *contents);
-char *util_get_filepath(const char *dir, const char *filename, gboolean create, int mode);
char **util_get_lines(const char *filename);
-GList *util_file_to_unique_list(const char *filename, Util_Content_Func func,
+GList *util_strv_to_unique_list(char **lines, Util_Content_Func func,
guint max_items);
gboolean util_fill_completion(GtkListStore *store, const char *input, GList *src);
gboolean util_filename_fill_completion(State state, GtkListStore *store, const char *input);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/tests/.gitignore new/vimb-3.5.0/tests/.gitignore
--- old/vimb-3.4.0/tests/.gitignore 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/tests/.gitignore 2019-07-29 22:03:20.000000000 +0200
@@ -1 +1,2 @@
/test-*
+!/test-*.c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/tests/Makefile new/vimb-3.5.0/tests/Makefile
--- old/vimb-3.4.0/tests/Makefile 2019-03-26 23:47:03.000000000 +0100
+++ new/vimb-3.5.0/tests/Makefile 2019-07-29 22:03:20.000000000 +0200
@@ -4,7 +4,8 @@
TEST_PROGS = test-util \
test-shortcut \
- test-handler
+ test-handler \
+ test-file-storage
all: $(TEST_PROGS)
$(Q)LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):." gtester --verbose $(TEST_PROGS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.4.0/tests/test-file-storage.c new/vimb-3.5.0/tests/test-file-storage.c
--- old/vimb-3.4.0/tests/test-file-storage.c 1970-01-01 01:00:00.000000000 +0100
+++ new/vimb-3.5.0/tests/test-file-storage.c 2019-07-29 22:03:20.000000000 +0200
@@ -0,0 +1,147 @@
+/**
+ * vimb - a webkit based vim like browser.
+ *
+ * Copyright (C) 2012-2019 Daniel Carl
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU 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 <src/file-storage.h>
+#include <gio/gio.h>
+#include <stdio.h>
+
+static char *pwd;
+static char *none_existing_file = "_absent.txt";
+static char *created_file = "_created.txt";
+static char *existing_file = "_existent.txt";
+
+static void test_ephemeral_no_file(void)
+{
+ FileStorage *s;
+ char **lines;
+ char *file_path;
+
+ file_path = g_build_filename(pwd, none_existing_file, NULL);
+
+ /* make sure the file does not exist */
+ remove(file_path);
+ s = file_storage_new(pwd, none_existing_file, TRUE);
+ g_assert_nonnull(s);
+ g_assert_cmpstr(file_path, ==, file_storage_get_path(s));
+ g_assert_true(file_storage_is_readonly(s));
+
+ /* empty file storage */
+ lines = file_storage_get_lines(s);
+ g_assert_cmpint(g_strv_length(lines), ==, 0);
+ g_strfreev(lines);
+
+ file_storage_append(s, "-%s\n", "foo");
+ file_storage_append(s, "-%s\n", "bar");
+
+ /* File must not be created on appending data to storage */
+ g_assert_false(g_file_test(file_path, G_FILE_TEST_IS_REGULAR));
+
+ lines = file_storage_get_lines(s);
+ g_assert_cmpint(g_strv_length(lines), ==, 3);
+ g_assert_cmpstr(lines[0], ==, "-foo");
+ g_assert_cmpstr(lines[1], ==, "-bar");
+ g_strfreev(lines);
+ file_storage_free(s);
+ g_free(file_path);
+}
+
+static void test_file_created(void)
+{
+ FileStorage *s;
+ char *file_path;
+
+ file_path = g_build_filename(pwd, created_file, NULL);
+ remove(file_path);
+
+ g_assert_false(g_file_test(file_path, G_FILE_TEST_IS_REGULAR));
+ s = file_storage_new(pwd, created_file, FALSE);
+ g_assert_false(file_storage_is_readonly(s));
+ g_assert_cmpstr(file_path, ==, file_storage_get_path(s));
+
+ /* check that file is created only on first write */
+ g_assert_false(g_file_test(file_path, G_FILE_TEST_IS_REGULAR));
+ file_storage_append(s, "");
+ g_assert_true(g_file_test(file_path, G_FILE_TEST_IS_REGULAR));
+
+ file_storage_free(s);
+ g_free(file_path);
+}
+
+static void test_ephemeral_with_file(void)
+{
+ FileStorage *s;
+ char *file_path;
+ char **lines;
+ char *content = NULL;
+ gboolean result;
+
+ file_path = g_build_filename(pwd, existing_file, NULL);
+
+ s = file_storage_new(pwd, existing_file, TRUE);
+ g_assert_nonnull(s);
+ g_assert_true(file_storage_is_readonly(s));
+ g_assert_cmpstr(file_path, ==, file_storage_get_path(s));
+
+ /* file does not exists yet */
+ lines = file_storage_get_lines(s);
+ g_assert_cmpint(g_strv_length(lines), ==, 0);
+ g_strfreev(lines);
+
+ /* empty file storage but file with two lines */
+ result = g_file_set_contents(file_path, "one\n", -1, NULL);
+ g_assert_true(result);
+ lines = file_storage_get_lines(s);
+ g_assert_cmpint(g_strv_length(lines), ==, 2);
+ g_strfreev(lines);
+
+ file_storage_append(s, "%s\n", "two ephemeral");
+
+ lines = file_storage_get_lines(s);
+ g_assert_cmpint(g_strv_length(lines), ==, 3);
+ g_assert_cmpstr(lines[0], ==, "one");
+ g_assert_cmpstr(lines[1], ==, "two ephemeral");
+ g_strfreev(lines);
+
+ /* now make sure the file was not changed */
+ g_file_get_contents(file_path, &content, NULL, NULL);
+ g_assert_cmpstr(content, ==, "one\n");
+
+ file_storage_free(s);
+ g_free(file_path);
+}
+
+int main(int argc, char *argv[])
+{
+ int result;
+ g_test_init(&argc, &argv, NULL);
+
+ pwd = g_get_current_dir();
+
+ g_test_add_func("/test-file-storage/ephemeral-no-file", test_ephemeral_no_file);
+ g_test_add_func("/test-file-storage/file-created", test_file_created);
+ g_test_add_func("/test-file-storage/ephemeral-with-file", test_ephemeral_with_file);
+
+ result = g_test_run();
+
+ remove(existing_file);
+ remove(created_file);
+ g_free(pwd);
+
+ return result;
+}
1
0
Hello community,
here is the log from the commit of package python2-networkx for openSUSE:Factory checked in at 2019-07-30 12:39:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python2-networkx (Old)
and /work/SRC/openSUSE:Factory/.python2-networkx.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python2-networkx"
Tue Jul 30 12:39:13 2019 rev:2 rq:719716 version:2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python2-networkx/python2-networkx.changes 2019-07-29 17:27:30.678277337 +0200
+++ /work/SRC/openSUSE:Factory/.python2-networkx.new.4126/python2-networkx.changes 2019-07-30 12:39:20.382934232 +0200
@@ -1,0 +2,6 @@
+Mon Jul 29 18:37:55 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Use python2 dependency names.
+- Make sure to provide oldpython names
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python2-networkx.spec ++++++
--- /var/tmp/diff_new_pack.IM8CZw/_old 2019-07-30 12:39:21.150934105 +0200
+++ /var/tmp/diff_new_pack.IM8CZw/_new 2019-07-30 12:39:21.150934105 +0200
@@ -17,6 +17,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define oldpython python
%define skip_python3 1
Name: python2-networkx
Version: 2.2
@@ -37,14 +38,15 @@
BuildRequires: fdupes
BuildRequires: python-rpm-macros
BuildRequires: unzip
-Requires: python-decorator >= 3.4.0
-Recommends: python-PyYAML
-Recommends: python-matplotlib
-Recommends: python-pydot
-Recommends: python-pygraphviz
-Recommends: python-pyparsing
-Recommends: python-scipy
+Requires: python2-decorator >= 3.4.0
+Recommends: python2-PyYAML
+Recommends: python2-matplotlib
+Recommends: python2-pydot
+Recommends: python2-pygraphviz
+Recommends: python2-pyparsing
+Recommends: python2-scipy
BuildArch: noarch
+Provides: %{oldpython}-networkx = %{version}
%python_subpackages
%description
1
0
Hello community,
here is the log from the commit of package python-nibabel for openSUSE:Factory checked in at 2019-07-30 12:39:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-nibabel (Old)
and /work/SRC/openSUSE:Factory/.python-nibabel.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-nibabel"
Tue Jul 30 12:39:09 2019 rev:2 rq:719706 version:2.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-nibabel/python-nibabel.changes 2019-07-28 10:22:01.592568758 +0200
+++ /work/SRC/openSUSE:Factory/.python-nibabel.new.4126/python-nibabel.changes 2019-07-30 12:39:15.166935099 +0200
@@ -1,0 +2,6 @@
+Mon Jul 29 18:56:10 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Add fix_numpy_1_17.patch to fix building with numpy 1.17.0
+ From: gh#/nipy/nibabel#768
+
+-------------------------------------------------------------------
New:
----
fix_numpy_1_17.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-nibabel.spec ++++++
--- /var/tmp/diff_new_pack.xn8MQZ/_old 2019-07-30 12:39:20.266934252 +0200
+++ /var/tmp/diff_new_pack.xn8MQZ/_new 2019-07-30 12:39:20.266934252 +0200
@@ -24,6 +24,8 @@
Url: http://nipy.org/nibabel
Group: Development/Languages/Python
Source: https://files.pythonhosted.org/packages/source/n/nibabel/nibabel-%{version}…
+# PATCH-FIX-UPSTREAM fix_numpy_1_17.patch gh#/nipy/nibabel#768
+Patch1: fix_numpy_1_17.patch
BuildRequires: %{python_module setuptools >= 30.3.0}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -54,6 +56,7 @@
%prep
%setup -q -n nibabel-%{version}
+%patch1 -p1
%build
%python_build
++++++ fix_numpy_1_17.patch ++++++
>From 86b4fbedfb6919fab4e3ffe21536c5df2633c57b Mon Sep 17 00:00:00 2001
From: "Christopher J. Markiewicz" <markiewicz(a)stanford.edu>
Date: Sat, 15 Jun 2019 14:28:04 +0200
Subject: [PATCH] FIX/TEST: Numpy casting rules have gotten more strict, raise
different exception
---
nibabel/tests/test_volumeutils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/nibabel/tests/test_volumeutils.py b/nibabel/tests/test_volumeutils.py
index 06df9eb6a..fcdc5c271 100644
--- a/nibabel/tests/test_volumeutils.py
+++ b/nibabel/tests/test_volumeutils.py
@@ -700,7 +700,7 @@ def test_a2f_non_numeric():
# Some versions of numpy can cast structured types to float, others not
try:
arr.astype(float)
- except ValueError:
+ except (TypeError, ValueError):
pass
else:
back_arr = write_return(arr, fobj, float)
1
0