commit:     fea3b647b4b875c220b9f17d046455133b32095c
Author:     Martin Dummer <martin.dummer <AT> gmx <DOT> net>
AuthorDate: Fri Sep 26 22:21:26 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Oct  3 00:45:35 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fea3b647

media-plugins/vdr-devstatus: add 0.5.0

introduce subslot dependency on media-video/vdr

Signed-off-by: Martin Dummer <martin.dummer <AT> gmx.net>
Part-of: https://github.com/gentoo/gentoo/pull/43952
Closes: https://github.com/gentoo/gentoo/pull/43952
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-plugins/vdr-devstatus/Manifest               |  1 +
 .../vdr-devstatus-0.5.0-dvb-adapter-frontend.patch | 23 +++++++
 .../files/vdr-devstatus-0.5.0-memoryleak.patch     | 74 ++++++++++++++++++++++
 media-plugins/vdr-devstatus/metadata.xml           |  5 +-
 .../vdr-devstatus/vdr-devstatus-0.5.0.ebuild       | 34 ++++++++++
 5 files changed, 136 insertions(+), 1 deletion(-)

diff --git a/media-plugins/vdr-devstatus/Manifest 
b/media-plugins/vdr-devstatus/Manifest
index 556d83bc7b20..682f2aff2ab7 100644
--- a/media-plugins/vdr-devstatus/Manifest
+++ b/media-plugins/vdr-devstatus/Manifest
@@ -1 +1,2 @@
 DIST vdr-devstatus-0.4.1.tgz 22469 BLAKE2B 
36e60b2d754209f5a2e30ff62114575565d9e0acf21e269797b39e9e487831288a7fcf0c12b32d2ed40f4c626ce6f6514169a767035d704a84c33ead25eb65c0
 SHA512 
4dde8cce6b4aaa6e0ce22b2cd5ad718ab04e7e5967a3cb2c05ac64946115b6291d395e36dff38d479e5a7d5c3c296feb4df7f8dce509c15ac0d8cafa179b7177
+DIST vdr-devstatus-0.5.0.tar.gz 22458 BLAKE2B 
fd94c422809c13734ca245641ef012cae8760ef0a3f228f8dbc7cdec30b23a7f4da8258e8960c17bab7ab6324d07f31eed87a76a56f56a8cee5588815641ad28
 SHA512 
c36330ada546ecc4cae23d3b0d4aecdc29992f680c6f381cd66b704190b6f0887bcf8b533bf1b76ecb494399b7291ac678ace57414fd9d894335fcf687eafad9

diff --git 
a/media-plugins/vdr-devstatus/files/vdr-devstatus-0.5.0-dvb-adapter-frontend.patch
 
b/media-plugins/vdr-devstatus/files/vdr-devstatus-0.5.0-dvb-adapter-frontend.patch
new file mode 100644
index 000000000000..2d0f9b5d5dab
--- /dev/null
+++ 
b/media-plugins/vdr-devstatus/files/vdr-devstatus-0.5.0-dvb-adapter-frontend.patch
@@ -0,0 +1,23 @@
+--- a/devstatus.c
++++ b/devstatus.c
+@@ -199,6 +199,10 @@
+ private:
+ public:
+      void deviceinfoAsString(cDevice *d) {
++        cDvbDevice *dvb = dynamic_cast<cDvbDevice *>(d);
++        if (dvb == NULL)
++           return;
++
+         struct dvb_frontend_info m_FrontendInfo;
+         int m_Frontend;
+         // fe_status_t status;
+@@ -208,8 +212,7 @@
+         char* output = NULL;
+ 
+         #define FRONTEND_DEVICE "/dev/dvb/adapter%d/frontend%d"
+-//        cString dev = cString::sprintf(FRONTEND_DEVICE, d->CardIndex() + 1, 
0);
+-        cString dev = cString::sprintf(FRONTEND_DEVICE, d->CardIndex(), 0);
++        cString dev = cString::sprintf(FRONTEND_DEVICE, dvb->Adapter(), 
dvb->Frontend());
+         m_Frontend = open(dev, O_RDONLY | O_NONBLOCK);
+         if (m_Frontend < 0) {
+            return;

diff --git 
a/media-plugins/vdr-devstatus/files/vdr-devstatus-0.5.0-memoryleak.patch 
b/media-plugins/vdr-devstatus/files/vdr-devstatus-0.5.0-memoryleak.patch
new file mode 100644
index 000000000000..fc4d193b8f2b
--- /dev/null
+++ b/media-plugins/vdr-devstatus/files/vdr-devstatus-0.5.0-memoryleak.patch
@@ -0,0 +1,74 @@
+--- a/devstatus.c
++++ b/devstatus.c
+@@ -617,8 +617,8 @@
+ cString cPluginDevstatus::SVDRPCommand(const char *Command, const char 
*Option, int &ReplyCode) {
+   // Process SVDRP commands this plugin implements
+   if(strcasecmp(Command, "DEVSTAT") == 0) {
+-    char* output = NULL;
+-    asprintf(&output, "%s:\n", tr("List of DVB devices"));
++    cString output;
++    output = cString::sprintf("%s:\n", tr("List of DVB devices"));
+     for (int i = 0; i < cDevice::NumDevices(); i++) {
+       cDevice *d = cDevice::GetDevice(i);
+       char* devName = NULL;
+@@ -626,7 +626,7 @@
+       if (d->HasDecoder() || d->IsPrimaryDevice())
+         asprintf(&devInfo, " (%s%s%s)", d->HasDecoder() ? tr("device with 
decoder") : "", (d->HasDecoder() && d->IsPrimaryDevice()) ? ", " : "", 
d->IsPrimaryDevice() ? tr("primary device") : "");
+       asprintf(&devName, "--- %s %d%s ---", tr("Device"), i+1, devInfo ? 
devInfo : "");
+-      asprintf(&output, "%s  %s:\n", output , devName); // add device output 
and there info's
++      output = cString::sprintf("%s  %s:\n", *output , devName); // add 
device output and there info's
+       free(devName);
+       if (devInfo)
+         free(devInfo);
+@@ -638,30 +638,29 @@
+           Name = strdup(r->name);
+           char* itemText = NULL;
+           asprintf(&itemText, "%s %s", DAYDATETIME(r->timer->StartTime()), 
Name);
+-          asprintf(&output, "%s    %s\n", output , itemText);
++          output = cString::sprintf("%s    %s\n", *output , itemText);
+           free(itemText);
+         }
+         Count++;
+       }
+     }
+     if (Count == 0)
+-      asprintf(&output, "%s    %s\n", output, tr("currently no recordings"));
++      output = cString::sprintf("%s    %s\n", *output, tr("currently no 
recordings"));
+     if (i < cDevice::NumDevices())
+-      asprintf(&output, "%s\n", output);
++      output = cString::sprintf("%s\n", *output);
+     }
+     // we use the default reply code here
+-    // return cString::sprintf("%s", output);
+     return output;
+   }
+ 
+   if(strcasecmp(Command, "RECNUMBER") == 0) {
+-    char* output = NULL;
+-    asprintf(&output, "%s:\n", tr("Number of concurrent recordings"));
++    cString output;
++    output = cString::sprintf("%s:\n", tr("Number of concurrent recordings"));
+     for (int i = 0; i < cDevice::NumDevices(); i++) {
+       cDevice *d = cDevice::GetDevice(i);
+       char* devName = NULL;
+       asprintf(&devName, "%s %d", tr("Device"), i+1);
+-      asprintf(&output, "%s %s:", output , devName); // add device output and 
there info's
++      output = cString::sprintf("%s %s:", *output , devName); // add device 
output and there info's
+       free(devName);
+     int Count = 0;
+     for (cRecObj *r = CurrentRecordings.First(); r; r = 
CurrentRecordings.Next(r)){ // add recordings to the output
+@@ -669,12 +668,11 @@
+         Count++;
+       }
+     }
+-    asprintf(&output, "%s %i\n", output, Count);
++    output = cString::sprintf("%s %i\n", *output, Count);
+     if (i < cDevice::NumDevices())
+-      asprintf(&output, "%s\n", output);
++      output = cString::sprintf("%s\n", *output);
+     }
+     // we use the default reply code here
+-    // return cString::sprintf("%s", output);
+     return output;
+   }
+ 

diff --git a/media-plugins/vdr-devstatus/metadata.xml 
b/media-plugins/vdr-devstatus/metadata.xml
index cb1acdaa84f3..a1f70a2d40a3 100644
--- a/media-plugins/vdr-devstatus/metadata.xml
+++ b/media-plugins/vdr-devstatus/metadata.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
-<pkgmetadata>
+       <pkgmetadata>
                <maintainer type="person" proxied="yes">
                        <email>[email protected]</email>
                        <name>Martin Dummer</name>
@@ -13,4 +13,7 @@
                        <email>[email protected]</email>
                        <name>Gentoo VDR Project</name>
                </maintainer>
+       <upstream>
+               <remote-id 
type="github">vdr-projects/vdr-plugin-devstatus</remote-id>
+       </upstream>
 </pkgmetadata>

diff --git a/media-plugins/vdr-devstatus/vdr-devstatus-0.5.0.ebuild 
b/media-plugins/vdr-devstatus/vdr-devstatus-0.5.0.ebuild
new file mode 100644
index 000000000000..1a93b9b393c3
--- /dev/null
+++ b/media-plugins/vdr-devstatus/vdr-devstatus-0.5.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit vdr-plugin-2
+
+DESCRIPTION="VDR plugin: display the usage status of the available DVB devices"
+HOMEPAGE="https://github.com/vdr-projects/vdr-plugin-devstatus/";
+SRC_URI="https://github.com/vdr-projects/vdr-plugin-devstatus/archive/refs/tags/${PV}.tar.gz
 -> ${P}.tar.gz"
+S="${WORKDIR}/vdr-plugin-devstatus-${PV}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="media-video/vdr:="
+RDEPEND="${DEPEND}"
+
+QA_FLAGS_IGNORED="
+       usr/lib/vdr/plugins/libvdr-.*
+       usr/lib64/vdr/plugins/libvdr-.*"
+PATCHES=(
+       "${FILESDIR}/${P}-dvb-adapter-frontend.patch"
+       "${FILESDIR}/${P}-memoryleak.patch"
+)
+
+src_prepare() {
+       # remove untranslated .po files
+       rm 
"${S}"/po/{ca_ES,cs_CZ,da_DK,el_GR,et_EE,hr_HR,hu_HU,nl_NL,nn_NO,pl_PL,pt_PT,ro_RO,sl_SI,sv_SE,tr_TR}.po
 \
+               || die "failed to remove untranslated .po files"
+
+       vdr-plugin-2_src_prepare
+}

Reply via email to