Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pianobar for openSUSE:Factory checked in at 2022-07-13 13:45:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pianobar (Old) and /work/SRC/openSUSE:Factory/.pianobar.new.1523 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pianobar" Wed Jul 13 13:45:40 2022 rev:6 rq:988944 version:2022.04.01 Changes: -------- --- /work/SRC/openSUSE:Factory/pianobar/pianobar.changes 2021-04-14 10:11:44.141570344 +0200 +++ /work/SRC/openSUSE:Factory/.pianobar.new.1523/pianobar.changes 2022-07-13 13:46:03.958089527 +0200 @@ -1,0 +2,9 @@ +Tue Jul 12 20:50:08 UTC 2022 - Bj??rn Lie <bjorn....@gmail.com> + +- Update to version 2022.04.01: + * Fix compilation with ffmpeg 5.0 and replace deprecated function + * Improved retry handling with unreliable HTTP proxies + * Minor UI improvements +- Update source url to main site. + +------------------------------------------------------------------- Old: ---- pianobar-2020.11.28.tar.gz New: ---- pianobar-2022.04.01.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pianobar.spec ++++++ --- /var/tmp/diff_new_pack.145dIf/_old 2022-07-13 13:46:04.442090215 +0200 +++ /var/tmp/diff_new_pack.145dIf/_new 2022-07-13 13:46:04.446090220 +0200 @@ -1,7 +1,7 @@ # # spec file for package pianobar # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # Copyright (c) 2016 Packman team: http://packman.links2linux.org/ # # All modifications and additions to the file contributed by third parties @@ -18,13 +18,13 @@ Name: pianobar -Version: 2020.11.28 +Version: 2022.04.01 Release: 0 Summary: Pandora Player License: MIT Group: Productivity/Multimedia/Sound/Utilities URL: https://6xq.net/pianobar -Source0: https://github.com/PromyLOPh/pianobar/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source0: %{url}/pianobar-2022.04.01.tar.bz2 BuildRequires: libgcrypt-devel BuildRequires: pkgconfig BuildRequires: pkgconfig(ao) @@ -58,7 +58,7 @@ make install PREFIX=%{_prefix} DESTDIR=%{buildroot} %files -%doc README.md +%doc README.rst %license COPYING %{_bindir}/%{name} %{_mandir}/man1/%{name}.1%{ext_man} ++++++ pianobar-2020.11.28.tar.gz -> pianobar-2022.04.01.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/.github/workflows/build.yml new/pianobar-2022.04.01/.github/workflows/build.yml --- old/pianobar-2020.11.28/.github/workflows/build.yml 2020-11-28 11:32:58.000000000 +0100 +++ new/pianobar-2022.04.01/.github/workflows/build.yml 2022-04-01 13:02:42.000000000 +0200 @@ -13,8 +13,10 @@ steps: - uses: actions/checkout@v2 - - name: deps - run: sudo apt install libao-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libcurl4-gnutls-dev libgcrypt20-dev libjson-c-dev libpth-dev pkg-config build-essential - - name: make + - name: Install dependencies + run: | + sudo apt-get update + sudo apt install libao-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libcurl4-gnutls-dev libgcrypt20-dev libjson-c-dev libpth-dev pkg-config build-essential + - name: Build pianobar run: make diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/ChangeLog new/pianobar-2022.04.01/ChangeLog --- old/pianobar-2020.11.28/ChangeLog 2020-11-28 11:32:58.000000000 +0100 +++ new/pianobar-2022.04.01/ChangeLog 2022-04-01 13:02:42.000000000 +0200 @@ -1,3 +1,10 @@ +Release 2022.04.01 + +- Not a joke +- Fix compilation with ffmpeg 5.0 and replace deprecated function +- Improved retry handling with unreliable HTTP proxies +- Minor UI improvements + Release 2020.11.28 - Support changing station modes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/Makefile new/pianobar-2022.04.01/Makefile --- old/pianobar-2020.11.28/Makefile 2020-11-28 11:32:58.000000000 +0100 +++ new/pianobar-2022.04.01/Makefile 2022-04-01 13:02:42.000000000 +0200 @@ -1,5 +1,6 @@ # makefile of pianobar +PKG_CONFIG?=pkg-config PREFIX:=/usr/local BINDIR:=${PREFIX}/bin LIBDIR:=${PREFIX}/lib @@ -45,20 +46,20 @@ LIBPIANO_RELOBJ:=${LIBPIANO_SRC:.c=.lo} LIBPIANO_INCLUDE:=${LIBPIANO_DIR} -LIBAV_CFLAGS:=$(shell pkg-config --cflags libavcodec libavformat libavutil libavfilter) -LIBAV_LDFLAGS:=$(shell pkg-config --libs libavcodec libavformat libavutil libavfilter) +LIBAV_CFLAGS:=$(shell $(PKG_CONFIG) --cflags libavcodec libavformat libavutil libavfilter) +LIBAV_LDFLAGS:=$(shell $(PKG_CONFIG) --libs libavcodec libavformat libavutil libavfilter) -LIBCURL_CFLAGS:=$(shell pkg-config --cflags libcurl) -LIBCURL_LDFLAGS:=$(shell pkg-config --libs libcurl) +LIBCURL_CFLAGS:=$(shell $(PKG_CONFIG) --cflags libcurl) +LIBCURL_LDFLAGS:=$(shell $(PKG_CONFIG) --libs libcurl) LIBGCRYPT_CFLAGS:= LIBGCRYPT_LDFLAGS:=-lgcrypt -LIBJSONC_CFLAGS:=$(shell pkg-config --cflags json-c 2>/dev/null || pkg-config --cflags json) -LIBJSONC_LDFLAGS:=$(shell pkg-config --libs json-c 2>/dev/null || pkg-config --libs json) +LIBJSONC_CFLAGS:=$(shell $(PKG_CONFIG) --cflags json-c 2>/dev/null || $(PKG_CONFIG) --cflags json) +LIBJSONC_LDFLAGS:=$(shell $(PKG_CONFIG) --libs json-c 2>/dev/null || $(PKG_CONFIG) --libs json) -LIBAO_CFLAGS:=$(shell pkg-config --cflags ao) -LIBAO_LDFLAGS:=$(shell pkg-config --libs ao) +LIBAO_CFLAGS:=$(shell $(PKG_CONFIG) --cflags ao) +LIBAO_LDFLAGS:=$(shell $(PKG_CONFIG) --libs ao) # combine all flags ALL_CFLAGS:=${CFLAGS} -I ${LIBPIANO_INCLUDE} \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/README.md new/pianobar-2022.04.01/README.md --- old/pianobar-2020.11.28/README.md 2020-11-28 11:32:58.000000000 +0100 +++ new/pianobar-2022.04.01/README.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,23 +0,0 @@ -# pianobar - - - -pianobar is a console client for the personalized web radio [Pandora](https://www.pandora.com). - -### Features - -* Play and manage (create, add more music, delete, rename, ...) your stations. -* Rate played songs and let pandora explain why they have been selected. -* Show upcoming songs/song history. -* Configure keybindings. -* last.fm scrobbling support (external application) -* Proxy support for listeners outside the USA. - -### Source Code - -The source code can be downloaded at [github.com](https://github.com/PromyLOPh/pianobar) -or [6xq.net](https://6xq.net/pianobar/). - -### Download/Installation - -There are community provided packages available for most Linux distributions (see your distribution???s package manager), macOS ([MacPorts](https://www.macports.org) or [Homebrew](https://brew.sh)) and *BSD as well as a [native Windows port](https://github.com/thedmd/pianobar-windows). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/README.rst new/pianobar-2022.04.01/README.rst --- old/pianobar-2020.11.28/README.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/pianobar-2022.04.01/README.rst 2022-04-01 13:02:42.000000000 +0200 @@ -0,0 +1,216 @@ +pianobar +======== + +pianobar is a free/open-source, console-based client for the personalized +online radio Pandora_. + +.. _Pandora: http://www.pandora.com + +.. image:: https://6xq.net/pianobar/pianobar-screenshot.png + :target: https://6xq.net/pianobar/pianobar-screenshot.png + :alt: pianobar screenshot + +Features +-------- + +- play and manage (create, add more music, delete, rename, ...) stations +- rate songs and explain why they have been selected +- upcoming songs/song history +- customize keybindings and text output (see `configuration example`_) +- remote control and eventcmd interface (send tracks to last.fm_, for example) +- proxy support for listeners outside the USA + +.. _last.fm: https://www.last.fm +.. _configuration example: https://github.com/PromyLOPh/pianobar/blob/master/contrib/config-example + +Download +-------- + +There are community provided packages available for most Linux distributions +(see your distribution???s package manager), Mac OS X (via homebrew_) +and \*BSD as well as a `native Windows port`_. + +.. _homebrew: http://brew.sh/ +.. _native Windows Port: https://github.com/thedmd/pianobar-windows + +The current pianobar release is 2020.11.28_ (sha256__, sign__). More recent and +experimental code is available at GitHub_ and the local gitweb_. Older releases +are available here: + +- 2020.04.05_ (sha256__, sign__) +- 2019.02.14_ (sha256__, sign__) +- 2019.01.25_ (sha256__, sign__) +- 2018.06.22_ (sha256__, sign__) +- 2017.08.30_ (sha256__, sign__) +- 2016.06.02_ (sha256__, sign__) +- 2015.11.22_ (sha256__, sign__) +- 2014.09.28_ (sha256__, sign__) +- 2014.06.08_ (sha256__, sign__) +- 2013.09.15_ (sha256__, sign__) +- 2013.05.19_ (sha256__, sign__) +- 2012.12.01_ (sha256__, sign__) +- 2012.09.07_ (sha256__, sign__) +- 2012.06.24_ (sha256__, sign__) +- 2012.05.06_ (sha256__, sign__) +- 2012.04.24_ (sha256__, sign__) +- 2012.01.10_ (sha256__, sign__) +- 2011.12.11_ (sha256__, sign__) +- 2011.11.11_ (sha256__, sign__) +- 2011.11.09_ (sha256__, sign__) +- 2011.09.22_ (sha256__, sign__) +- 2011.07.09_ (sha256__, sign__) +- 2011.04.27_ (sha256__, sign__) +- 2011.04.10_ (sha256__, sign__) +- 2011.01.24_ (sha256__) +- 2010.11.06_ (sha1__) +- 2010.10.07_ (sha1__) +- 2010.08.21_ (sha1__) + +.. _2020.11.28: https://6xq.net/pianobar/pianobar-2020.11.28.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2020.11.28.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2020.11.28.tar.bz2.asc +.. _snapshot: http://github.com/PromyLOPh/pianobar/tarball/master +.. _GitHub: http://github.com/PromyLOPh/pianobar/ +.. _gitweb: https://6xq.net/git/lars/pianobar.git/ +.. _2020.04.05: https://6xq.net/pianobar/pianobar-2020.04.05.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2020.04.05.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2020.04.05.tar.bz2.asc +.. _2019.02.14: https://6xq.net/pianobar/pianobar-2019.02.14.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2019.02.14.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2019.02.14.tar.bz2.asc +.. _2019.01.25: https://6xq.net/pianobar/pianobar-2019.01.25.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2019.01.25.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2019.01.25.tar.bz2.asc +.. _2018.06.22: https://6xq.net/pianobar/pianobar-2018.06.22.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2018.06.22.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2018.06.22.tar.bz2.asc +.. _2017.08.30: https://6xq.net/pianobar/pianobar-2017.08.30.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2017.08.30.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2017.08.30.tar.bz2.asc +.. _2016.06.02: https://6xq.net/pianobar/pianobar-2016.06.02.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2016.06.02.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2016.06.02.tar.bz2.asc +.. _2015.11.22: https://6xq.net/pianobar/pianobar-2015.11.22.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2015.11.22.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2015.11.22.tar.bz2.asc +.. _2014.09.28: https://6xq.net/pianobar/pianobar-2014.09.28.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2014.09.28.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2014.09.28.tar.bz2.asc +.. _2014.06.08: https://6xq.net/pianobar/pianobar-2014.06.08.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2014.06.08.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2014.06.08.tar.bz2.asc +.. _2013.09.15: https://6xq.net/pianobar/pianobar-2013.09.15.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2013.09.15.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2013.09.15.tar.bz2.asc +.. _2013.05.19: https://6xq.net/pianobar/pianobar-2013.05.19.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2013.05.19.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2013.05.19.tar.bz2.asc +.. _2012.12.01: https://6xq.net/pianobar/pianobar-2012.12.01.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2012.12.01.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2012.12.01.tar.bz2.asc +.. _2012.09.07: https://6xq.net/pianobar/pianobar-2012.09.07.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2012.09.07.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2012.09.07.tar.bz2.asc +.. _2012.06.24: https://6xq.net/pianobar/pianobar-2012.06.24.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2012.06.24.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2012.06.24.tar.bz2.asc +.. _2012.05.06: https://6xq.net/pianobar/pianobar-2012.05.06.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2012.05.06.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2012.05.06.tar.bz2.asc +.. _2012.04.24: https://6xq.net/pianobar/pianobar-2012.04.24.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2012.04.24.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2012.04.24.tar.bz2.asc +.. _2012.01.10: https://6xq.net/pianobar/pianobar-2012.01.10.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2012.01.10.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2012.01.10.tar.bz2.asc +.. _2011.12.11: https://6xq.net/pianobar/pianobar-2011.12.11.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2011.12.11.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2011.12.11.tar.bz2.asc +.. _2011.11.11: https://6xq.net/pianobar/pianobar-2011.11.11.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2011.11.11.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2011.11.11.tar.bz2.asc +.. _2011.11.09: https://6xq.net/pianobar/pianobar-2011.11.09.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2011.11.09.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2011.11.09.tar.bz2.asc +.. _2011.09.22: https://6xq.net/pianobar/pianobar-2011.09.22.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2011.09.22.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2011.09.22.tar.bz2.asc +.. _2011.07.09: https://6xq.net/pianobar/pianobar-2011.07.09.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2011.07.09.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2011.07.09.tar.bz2.asc +.. _2011.04.27: https://6xq.net/pianobar/pianobar-2011.04.27.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2011.04.27.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2011.04.27.tar.bz2.asc +.. _2011.04.10: https://6xq.net/pianobar/pianobar-2011.04.10.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2011.04.10.tar.bz2.sha256 +__ https://6xq.net/pianobar/pianobar-2011.04.10.tar.bz2.asc +.. _2011.01.24: https://6xq.net/pianobar/pianobar-2011.01.24.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2011.01.24.tar.bz2.sha256 +.. _2010.11.06: https://6xq.net/pianobar/pianobar-2010.11.06.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2010.11.06.tar.bz2.sha1 +.. _2010.10.07: https://6xq.net/pianobar/pianobar-2010.10.07.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2010.10.07.tar.bz2.sha1 +.. _2010.08.21: https://6xq.net/pianobar/pianobar-2010.08.21.tar.bz2 +__ https://6xq.net/pianobar/pianobar-2010.08.21.tar.bz2.sha1 + +FAQ +--- + +The audio output does not work as expected. What can I do? + pianobar uses libao and most problems are related to a broken libao + configuration. Have a look at issue `#167`_ for example. +Can I donate money? Do you have a Flattr/Bitcoin/??? account? + No, money is not necessary to continue working on pianobar. There are many + other ways to support pianobar: Reporting bugs, creating `cool stuff`_ + based on pianobar, blogging about it and the most important one: Keeping + Pandora alive. + +.. _#167: https://github.com/PromyLOPh/pianobar/issues/167 +.. _cool stuff: `addons`_ + +External projects +----------------- + +Addons +++++++ + +control-pianobar_ + Scripts that interact with pianobar entirely through notification bubbles + and hotkeys +pianobar.el_ + Emacs interface for pianobar +`pianobar-mediaplayer2`_ + Control pianobar like any other media player through DBUS/MPRIS. +PianobarNowPlayable_ + Integrate pianobar with the Now Playing feature of macOS + +.. _control-pianobar: http://malabarba.github.io/control-pianobar/ +.. _pianobar.el: https://github.com/agrif/pianobar.el +.. _pianobar-mediaplayer2: https://github.com/ryanswilson59/pianobar-mediaplayer2 +.. _PianobarNowPlayable: https://github.com/iDom818/PianobarNowPlayable + +Clients ++++++++ + +pithos_ + Python/GTK desktop client +pianod_ + Pandora UNIX daemon, based on pianobar +Hermes_ + Pandora Client for OS X + +.. _pithos: http://pithos.github.io/ +.. _pianod: http://deviousfish.com/pianod/ +.. _Hermes: http://hermesapp.org/ + +Standalone devices +++++++++++++++++++ + +PandoraBar_ + Beagleboard-based radio device running pianobar +`Pandora???s Box`_ + Raspberry Pi-based standalone devices running pianobar + +.. _PandoraBar: https://hackaday.com/2012/09/20/how-to-build-your-own-dedicated-pandora-radio/ +.. _Pandora???s Box: http://www.instructables.com/id/Pandoras-Box-An-Internet-Radio-player-made-with/ + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/src/config.h new/pianobar-2022.04.01/src/config.h --- old/pianobar-2020.11.28/src/config.h 2020-11-28 11:32:58.000000000 +0100 +++ new/pianobar-2022.04.01/src/config.h 2022-04-01 13:02:42.000000000 +0200 @@ -3,7 +3,7 @@ /* package name */ #define PACKAGE "pianobar" -#define VERSION "2020.11.28" +#define VERSION "2022.04.01" /* glibc feature test macros, define _before_ including other files */ #define _POSIX_C_SOURCE 200809L diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/src/player.c new/pianobar-2022.04.01/src/player.c --- old/pianobar-2020.11.28/src/player.c 2020-11-28 11:32:58.000000000 +0100 +++ new/pianobar-2022.04.01/src/player.c 2022-04-01 13:02:42.000000000 +0200 @@ -401,12 +401,12 @@ static int play (player_t * const player) { assert (player != NULL); const int64_t minBufferHealth = player->settings->bufferSecs; - - AVPacket pkt; AVCodecContext * const cctx = player->cctx; - av_init_packet (&pkt); - pkt.data = NULL; - pkt.size = 0; + + AVPacket *pkt = av_packet_alloc (); + assert (pkt != NULL); + pkt->data = NULL; + pkt->size = 0; AVFrame *frame = NULL; frame = av_frame_alloc (); @@ -418,15 +418,15 @@ const double timeBase = av_q2d (player->st->time_base); while (!shouldQuit (player) && drainMode != DONE) { if (drainMode == FILL) { - ret = av_read_frame (player->fctx, &pkt); + ret = av_read_frame (player->fctx, pkt); if (ret == AVERROR_EOF) { /* enter drain mode */ drainMode = DRAIN; avcodec_send_packet (cctx, NULL); debugPrint (DEBUG_AUDIO, "decoder entering drain mode after EOF\n"); - } else if (pkt.stream_index != player->streamIdx) { + } else if (pkt->stream_index != player->streamIdx) { /* unused packet */ - av_packet_unref (&pkt); + av_packet_unref (pkt); continue; } else if (ret < 0) { /* error, abort */ @@ -441,7 +441,7 @@ break; } else { /* fill buffer */ - avcodec_send_packet (cctx, &pkt); + avcodec_send_packet (cctx, pkt); } } @@ -490,9 +490,10 @@ } while (bufferHealth > minBufferHealth); } - av_packet_unref (&pkt); + av_packet_unref (pkt); } av_frame_free (&frame); + av_packet_free (&pkt); debugPrint (DEBUG_AUDIO, "decoder is done, waiting for ao player\n"); pthread_join (aoplaythread, NULL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/src/player.h new/pianobar-2022.04.01/src/player.h --- old/pianobar-2020.11.28/src/player.h 2020-11-28 11:32:58.000000000 +0100 +++ new/pianobar-2022.04.01/src/player.h 2022-04-01 13:02:42.000000000 +0200 @@ -34,6 +34,7 @@ #include <ao/ao.h> #include <libavformat/avformat.h> #include <libavfilter/avfilter.h> +#include <libavcodec/avcodec.h> #include <piano.h> #include "settings.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/src/ui.c new/pianobar-2022.04.01/src/ui.c --- old/pianobar-2020.11.28/src/ui.c 2020-11-28 11:32:58.000000000 +0100 +++ new/pianobar-2022.04.01/src/ui.c 2022-04-01 13:02:42.000000000 +0200 @@ -171,6 +171,27 @@ } } +/* Error codes from libcurl, which may be temporary and should be retried. + */ +static bool temporaryCurlError (const CURLcode code) { + switch (code) { + case CURLE_COULDNT_RESOLVE_PROXY: + case CURLE_COULDNT_RESOLVE_HOST: + case CURLE_COULDNT_CONNECT: + case CURLE_WEIRD_SERVER_REPLY: + case CURLE_READ_ERROR: + case CURLE_OPERATION_TIMEDOUT: + case CURLE_SSL_CONNECT_ERROR: + case CURLE_GOT_NOTHING: + case CURLE_SEND_ERROR: + case CURLE_RECV_ERROR: + return true; + + default: + return false; + } +} + #define setAndCheck(k,v) \ httpret = curl_easy_setopt (http, k, v); \ assert (httpret == CURLE_OK); @@ -248,7 +269,7 @@ do { httpret = curl_easy_perform (http); ++retry; - if (httpret == CURLE_OPERATION_TIMEDOUT) { + if (temporaryCurlError (httpret)) { free (buffer.data); buffer.data = NULL; buffer.pos = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pianobar-2020.11.28/src/ui_act.c new/pianobar-2022.04.01/src/ui_act.c --- old/pianobar-2020.11.28/src/ui_act.c 2020-11-28 11:32:58.000000000 +0100 +++ new/pianobar-2022.04.01/src/ui_act.c 2022-04-01 13:02:42.000000000 +0200 @@ -785,7 +785,12 @@ } /* enable submenus depending on data availability */ - strcpy (question, "Delete "); + if (reqData.info.artistSeeds != NULL || + reqData.info.songSeeds != NULL || + reqData.info.stationSeeds != NULL || + reqData.info.feedback != NULL) { + strcpy (question, "Delete "); + } if (reqData.info.artistSeeds != NULL) { strcat (question, "[a]rtist"); *allowedPos++ = 'a'; @@ -814,15 +819,22 @@ strcat (question, "[f]eedback"); *allowedPos++ = 'f'; } - /* station mode is always available */ if (allowedPos != allowedActions) { strcat (question, "? "); } - strcat (question, "Manage [m]ode? "); - *allowedPos++ = 'm'; + /* station mode is not available for QuickMix. */ + if (!selStation->isQuickMix) { + strcat (question, "Manage [m]ode? "); + *allowedPos++ = 'm'; + } *allowedPos = '\0'; + if (allowedPos == allowedActions) { + BarUiMsg (&app->settings, MSG_INFO, "No actions available.\n"); + return; + } + assert (strlen (question) < sizeof (question) / sizeof (*question)); BarUiMsg (&app->settings, MSG_QUESTION, "%s", question);