Hello community, here is the log from the commit of package vdr-plugin-remote for openSUSE:Factory checked in at 2018-03-24 16:15:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/vdr-plugin-remote (Old) and /work/SRC/openSUSE:Factory/.vdr-plugin-remote.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vdr-plugin-remote" Sat Mar 24 16:15:58 2018 rev:15 rq:590425 version:0.7.0 Changes: -------- --- /work/SRC/openSUSE:Factory/vdr-plugin-remote/vdr-plugin-remote.changes 2014-04-22 11:55:52.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.vdr-plugin-remote.new/vdr-plugin-remote.changes 2018-03-24 16:16:11.181753722 +0100 @@ -1,0 +2,19 @@ +Thu Mar 22 20:46:34 UTC 2018 - [email protected] + +- update to version 0.7.0 (2015-09-20) + - Fix a random crash when terminating the tcp remote. + - Use plgcfg from pkg-config (thanks to Ville Skytt344). + - Support VDR version 2.3.1+. +- changes from version 0.6.0: + - Use Repeat Delay/Repeat Delta settings (VDR->Setup-> + Miscellaneous). + - Support event type 2 (mouse wheel, rotary-encoder) as a remote + control (thanks to Thomas Reufer). + - Improved OSD emulation: + o Reworked tabulator processing. + o Optimal use of limited screen width. + o Avoid display errors with VDR 2.2.0. + o Fixed misaligned output caused by multi-byte characters. + o Some speed improvements. + +------------------------------------------------------------------- Old: ---- vdr-remote-0.5.0.tgz New: ---- vdr-remote-0.7.0.tgz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ vdr-plugin-remote.spec ++++++ --- /var/tmp/diff_new_pack.Vh8dRh/_old 2018-03-24 16:16:12.193717243 +0100 +++ /var/tmp/diff_new_pack.Vh8dRh/_new 2018-03-24 16:16:12.197717099 +0100 @@ -1,7 +1,7 @@ # # spec file for package vdr-plugin-remote # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2018 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 @@ -16,7 +16,7 @@ # -%define pluginversion 0.5.0 +%define pluginversion 0.7.0 %define pluginname remote %define pluginurl http://www.escape-edv.de/endriss/vdr # @@ -27,7 +27,7 @@ Version: %{pluginversion} Release: 0 Summary: VDR %{pluginname} plugin -License: GPL-2.0+ +License: GPL-2.0-or-later Group: Hardware/TV Url: %{pluginurl} Source: %{plugintarball} ++++++ vdr-remote-0.5.0.tgz -> vdr-remote-0.7.0.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/CONTRIBUTORS new/remote-0.7.0/CONTRIBUTORS --- old/remote-0.5.0/CONTRIBUTORS 2012-12-26 02:36:47.000000000 +0100 +++ new/remote-0.7.0/CONTRIBUTORS 2015-09-20 01:54:53.000000000 +0200 @@ -9,6 +9,7 @@ Ville Skytt� <ville dot skytta at iki dot fi> for translating OSD texts to the Finnish language + for providing a patch to use plgcfg from pkg-config Ronny Kornexl <ronny dot kornexl at online dot de> for reporting that cTtyStatus::Recording() and cTtyStatus::Replaying() @@ -29,5 +30,8 @@ Joachim Selinger <selinger at idefix dot s dot bawue dot de> for suggesting to implement selection of the input device by path. -Tobias Grimm tobias dot grimm at e-tobi dot net +Tobias Grimm <tobias dot grimm at e-tobi dot net> for providing a better gettext detection using i18n.h. + +Thomas Reufer <thomas at reufer dot ch> + for adding support for event type 2 (mouse wheel, rotary-encoder). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/HISTORY new/remote-0.7.0/HISTORY --- old/remote-0.5.0/HISTORY 2012-12-26 02:54:17.000000000 +0100 +++ new/remote-0.7.0/HISTORY 2015-09-20 01:56:35.000000000 +0200 @@ -130,3 +130,19 @@ - Access /proc/av7110_ir in write-only mode (required by kernel 2.6.34+). - Adopt Makefile for vdr 1.7.34+. + +2015-04-12: Version 0.6.0 +- Use Repeat Delay/Repeat Delta settings (VDR->Setup->Miscellaneous). +- Support event type 2 (mouse wheel, rotary-encoder) as a remote control + (thanks to Thomas Reufer). +- Improved OSD emulation: + o Reworked tabulator processing. + o Optimal use of limited screen width. + o Avoid display errors with VDR 2.2.0. + o Fixed misaligned output caused by multi-byte characters. + o Some speed improvements. + +2015-09-20: Version 0.7.0 +- Fix a random crash when terminating the tcp remote. +- Use plgcfg from pkg-config (thanks to Ville Skytt�). +- Support VDR version 2.3.1+. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/Makefile new/remote-0.7.0/Makefile --- old/remote-0.5.0/Makefile 2012-12-26 02:16:57.000000000 +0100 +++ new/remote-0.7.0/Makefile 2015-09-20 01:39:34.000000000 +0200 @@ -1,7 +1,7 @@ # # Remote Control plugin for the Video Disk Recorder # -# Copyright (C) 2002-2010 Oliver Endriss <[email protected]> +# Copyright (C) 2002-2015 Oliver Endriss <[email protected]> # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -34,6 +34,7 @@ PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc)) LIBDIR = $(DESTDIR)$(call PKGCFG,libdir) LOCDIR = $(DESTDIR)$(call PKGCFG,locdir) +PLGCFG = $(call PKGCFG,plgcfg) # TMPDIR ?= /tmp @@ -90,6 +91,11 @@ i18n install-i18n: endif + +else # compatibility section + +-include $(PLGCFG) + endif # compatibility section ### The name of the distribution archive: @@ -119,6 +125,7 @@ ifneq ($(OLD_I18N),) OBJS += i18n.o endif +OBJS += compat.o ### The main target: @@ -191,6 +198,6 @@ env: @echo "Configuration:" @echo " APIVERSION $(APIVERSION)" - @echo " CXX $(CXX) CXXFLAGS $(CXXFLAGS)" + @echo " CXX $(CXX) CXXFLAGS $(CXXFLAGS) LDFLAGS $(LDFLAGS)" @echo " VDRDIR $(VDRDIR) LIBDIR $(LIBDIR) LOCDIR $(LOCDIR)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/README new/remote-0.7.0/README --- old/remote-0.5.0/README 2012-12-26 03:53:56.000000000 +0100 +++ new/remote-0.7.0/README 2015-09-20 01:45:55.000000000 +0200 @@ -1,7 +1,7 @@ remote - Remote Control plugin for the Video Disk Recorder (VDR) ================================================================ -Version: 0.5.0 +Version: 0.7.0 Written by: Oliver Endriss <[email protected]> @@ -24,7 +24,7 @@ - Built-in remote control port of the av711x-based DVB cards (SD full-featured cards), e.g. DVB-S Nexus. - Remote control port of some budget cards, e.g. Nova-CI. - - Other input devices. + - Other input devices (rotary-encoder, wheel mouse). See file FAQ for a list of cards which have been reported to work. (b) keyboard (tty driver): /dev/console, /dev/ttyX @@ -33,17 +33,13 @@ (d) LIRC -Notes: -[1] supported by DVB and dvb-kernel -[2] supported by dvb-kernel only - Installation: ------------- The Remote Control plugin is installed the same way as any other plugin: - cd VDR/PLUGINS/src -- tar xfz vdr-remote-0.5.0.tgz -- ln -s remote-0.5.0 remote +- tar xfz vdr-remote-0.7.0.tgz +- ln -s remote-0.7.0 remote - cd ../.. - make plugins @@ -94,7 +90,7 @@ Notes: [3] There is a restriction: - By default, /proc/av7110 is owned by root with permissions -rw-r-r- (0644). + By default, /proc/av7110 is owned by root with permissions --w------- (0200). Therefore, the new autodetect feature can be used only, - if vdr runs as root or diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/compat.c new/remote-0.7.0/compat.c --- old/remote-0.5.0/compat.c 1970-01-01 01:00:00.000000000 +0100 +++ new/remote-0.7.0/compat.c 2015-09-20 03:38:20.000000000 +0200 @@ -0,0 +1,119 @@ +/* + * Remote Control plugin for the Video Disk Recorder + * + * compat.h: Compatibility stuff + * + * Copyright (C) 2015 Oliver Endriss <[email protected]> + * + * cSocketRemote was copied from cSocket (svdrp.c, VDR 2.2.0): + * Copyright (C) 2000, 2003, 2006, 2008, 2013 Klaus Schmidinger + * + * 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 2 + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + */ + +#include <vdr/config.h> +#include "compat.h" + +#if VDRVERSNUM >= 20300 +// --- cSocket --------------------------------------------------------------- + +cSocketRemote::cSocketRemote(int Port, int Queue) +{ + port = Port; + sock = -1; + queue = Queue; +} + +cSocketRemote::~cSocketRemote() +{ + Close(); +} + +void cSocketRemote::Close(void) +{ + if (sock >= 0) { + close(sock); + sock = -1; + } +} + +bool cSocketRemote::Open(void) +{ + if (sock < 0) { + // create socket: + sock = socket(PF_INET, SOCK_STREAM, 0); + if (sock < 0) { + LOG_ERROR; + port = 0; + return false; + } + // allow it to always reuse the same port: + int ReUseAddr = 1; + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &ReUseAddr, sizeof(ReUseAddr)); + // + struct sockaddr_in name; + name.sin_family = AF_INET; + name.sin_port = htons(port); + name.sin_addr.s_addr = SVDRPhosts.LocalhostOnly() ? htonl(INADDR_LOOPBACK) : htonl(INADDR_ANY); + if (bind(sock, (struct sockaddr *)&name, sizeof(name)) < 0) { + LOG_ERROR; + Close(); + return false; + } + // make it non-blocking: + int oldflags = fcntl(sock, F_GETFL, 0); + if (oldflags < 0) { + LOG_ERROR; + return false; + } + oldflags |= O_NONBLOCK; + if (fcntl(sock, F_SETFL, oldflags) < 0) { + LOG_ERROR; + return false; + } + // listen to the socket: + if (listen(sock, queue) < 0) { + LOG_ERROR; + return false; + } + } + return true; +} + +int cSocketRemote::Accept(void) +{ + if (Open()) { + struct sockaddr_in clientname; + uint size = sizeof(clientname); + int newsock = accept(sock, (struct sockaddr *)&clientname, &size); + if (newsock > 0) { + bool accepted = SVDRPhosts.Acceptable(clientname.sin_addr.s_addr); + if (!accepted) { + const char *s = "Access denied!\n"; + if (write(newsock, s, strlen(s)) < 0) + LOG_ERROR; + close(newsock); + newsock = -1; + } + isyslog("connect from %s, port %hu - %s", inet_ntoa(clientname.sin_addr), ntohs(clientname.sin_port), accepted ? "accepted" : "DENIED"); + } + else if (errno != EINTR && errno != EAGAIN) + LOG_ERROR; + return newsock; + } + return -1; +} +#endif // VDRVERSNUM >= 20300 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/compat.h new/remote-0.7.0/compat.h --- old/remote-0.5.0/compat.h 1970-01-01 01:00:00.000000000 +0100 +++ new/remote-0.7.0/compat.h 2015-09-20 03:39:14.000000000 +0200 @@ -0,0 +1,52 @@ +/* + * Remote Control plugin for the Video Disk Recorder + * + * compat.h: Compatibility stuff + * + * Copyright (C) 2015 Oliver Endriss <[email protected]> + * + * cSocketRemote was copied from cSocket (svdrp.h, VDR 2.2.0): + * Copyright (C) 2000, 2003, 2006, 2008, 2013 Klaus Schmidinger + * + * 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 2 + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + */ + +#ifndef __PLUGIN_REMOTE_COMPAT_H +#define __PLUGIN_REMOTE_COMPAT_H + +#if VDRVERSNUM >= 20300 + +class cSocketRemote { +private: + int port; + int sock; + int queue; + void Close(void); +public: + cSocketRemote(int Port, int Queue = 1); + ~cSocketRemote(); + bool Open(void); + int Accept(void); + }; + +#else // VDRVERSNUM >= 20300 + +#include <vdr/svdrp.h> +typedef cSocket cSocketRemote; + +#endif // VDRVERSNUM >= 20300 + +#endif //__PLUGIN_REMOTE_COMPAT_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/misc/remote.conf.event5.wheelmouse new/remote-0.7.0/misc/remote.conf.event5.wheelmouse --- old/remote-0.5.0/misc/remote.conf.event5.wheelmouse 1970-01-01 01:00:00.000000000 +0100 +++ new/remote-0.7.0/misc/remote.conf.event5.wheelmouse 2015-04-12 03:42:09.000000000 +0200 @@ -0,0 +1,5 @@ +remote-event5.0 0000000100010112 +remote-event5.7 0000000100010110 +remote-event5.9 0000000100010111 +remote-event5.4 0000000100020008 +remote-event5.6 FFFFFFFF00020008 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/misc/remote.conf.event5.wheelmouse.readme new/remote-0.7.0/misc/remote.conf.event5.wheelmouse.readme --- old/remote-0.5.0/misc/remote.conf.event5.wheelmouse.readme 1970-01-01 01:00:00.000000000 +0100 +++ new/remote-0.7.0/misc/remote.conf.event5.wheelmouse.readme 2015-04-12 04:09:35.000000000 +0200 @@ -0,0 +1,14 @@ +Configuration for a rotary-encoder/wheel mouse +============================================== + +Notes: +- This is an example how a standard wheel mouse can be used to move editing marks. +- See http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/125341-schneiden-wie-die-profis + +vdr key code mouse action vdr action +------------------------------------------------------------------------------------- +remote-event5.0 0000000100010112 press wheel (middle button) toggle mark +remote-event5.7 0000000100010110 press left button previous mark +remote-event5.9 0000000100010111 press right button next mark +remote-event5.4 0000000100020008 turn wheel up move mark left +remote-event5.6 FFFFFFFF00020008 turn wheel down move mark right diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/po/de_DE.po new/remote-0.7.0/po/de_DE.po --- old/remote-0.5.0/po/de_DE.po 2012-12-26 04:12:47.000000000 +0100 +++ new/remote-0.7.0/po/de_DE.po 2015-09-20 18:32:01.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Remote Control plugin 0.4.0\n" "Report-Msgid-Bugs-To: <[email protected]>\n" -"POT-Creation-Date: 2012-05-27 17:56+0200\n" +"POT-Creation-Date: 2015-09-15 18:54+0200\n" "PO-Revision-Date: 2007-10-05 06:58+0200\n" "Last-Translator: Oliver Endriss <[email protected]>, 2002-2007\n" "Language-Team: <[email protected]>\n" @@ -16,47 +16,36 @@ "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -#: remote.c:52 msgid "Remote control" msgstr "Fernbedienung" -#: remote.c:233 remote.c:777 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: remote.c:255 msgid "Error uploading keymap" msgstr "Fehler beim Laden der Tastenbelegung" -#: remote.c:336 msgid "Press any key to use pre-loaded keymap" msgstr "Taste dr�cken, um zuvor geladene Keymap zu verwenden" -#: remote.c:341 msgid "User-supplied keymap will be used" msgstr "Benutzerdefinierte Keymap wird verwendet" -#: remote.c:347 msgid "Remote control test - press and hold down any key" msgstr "Test der Fernbedienung - beliebige Taste gedr�ckt halten" -#: remote.c:366 msgid "RC5 protocol detected" msgstr "RC5-Protokoll erkannt" -#: remote.c:390 msgid "RC5 protocol detected (inverted signal)" msgstr "RC5-Protokoll erkannt (invertiertes Signal)" -#: remote.c:401 msgid "RCMM protocol detected" msgstr "RCMM-Protokoll erkannt" -#: remote.c:412 msgid "RCMM protocol detected (inverted signal)" msgstr "RCMM-Protokoll erkannt (invertiertes Signal)" -#: remote.c:420 msgid "No remote control detected" msgstr "Keine Fernbedienung erkannt" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/po/fi_FI.po new/remote-0.7.0/po/fi_FI.po --- old/remote-0.5.0/po/fi_FI.po 2012-12-26 04:12:47.000000000 +0100 +++ new/remote-0.7.0/po/fi_FI.po 2015-09-20 18:32:01.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Remote Control plugin 0.4.0\n" "Report-Msgid-Bugs-To: <[email protected]>\n" -"POT-Creation-Date: 2012-05-27 17:56+0200\n" +"POT-Creation-Date: 2015-09-15 18:54+0200\n" "PO-Revision-Date: 2007-10-05 06:58+0200\n" "Last-Translator: Ville Skytt� <ville dot skytta at iki dot fi>, 2004\n" "Language-Team: <[email protected]>\n" @@ -16,47 +16,36 @@ "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -#: remote.c:52 msgid "Remote control" msgstr "Kaukos��din" -#: remote.c:233 remote.c:777 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: remote.c:255 msgid "Error uploading keymap" msgstr "N�pp�inkartan lataaminen ep�onnistui" -#: remote.c:336 msgid "Press any key to use pre-loaded keymap" msgstr "Paina mit� tahansa n�pp�int� k�ytt��ksesi oletusn�pp�inkarttaa" -#: remote.c:341 msgid "User-supplied keymap will be used" msgstr "K�ytet��n k�ytt�j�n m��rittelem�� n�pp�inkarttaa" -#: remote.c:347 msgid "Remote control test - press and hold down any key" msgstr "Kaukos��dintesti - paina ja pid� alhaalla jotain kaukos��timen n�pp�int�" -#: remote.c:366 msgid "RC5 protocol detected" msgstr "RC5-yhteysk�yt�nt� tunnistettu" -#: remote.c:390 msgid "RC5 protocol detected (inverted signal)" msgstr "RC5-yhteysk�yt�nt� tunnistettu (k��nteinen signaali)" -#: remote.c:401 msgid "RCMM protocol detected" msgstr "RCMM-yhteysk�yt�nt� tunnistettu" -#: remote.c:412 msgid "RCMM protocol detected (inverted signal)" msgstr "RCMM-yhteysk�yt�nt� tunnistettu (k��nteinen signaali)" -#: remote.c:420 msgid "No remote control detected" msgstr "Kaukos��dint� ei tunnistettu" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/po/fr_FR.po new/remote-0.7.0/po/fr_FR.po --- old/remote-0.5.0/po/fr_FR.po 2012-12-26 04:12:47.000000000 +0100 +++ new/remote-0.7.0/po/fr_FR.po 2015-09-20 18:32:01.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Remote Control plugin 0.4.0\n" "Report-Msgid-Bugs-To: <[email protected]>\n" -"POT-Creation-Date: 2012-05-27 17:56+0200\n" +"POT-Creation-Date: 2015-09-15 18:54+0200\n" "PO-Revision-Date: 2007-10-05 06:58+0200\n" "Last-Translator: Pierre Briec <eclipse dot vdr at gmail dot com>, 2006\n" "Language-Team: <[email protected]>\n" @@ -16,47 +16,36 @@ "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -#: remote.c:52 msgid "Remote control" msgstr "T�l�commande" -#: remote.c:233 remote.c:777 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: remote.c:255 msgid "Error uploading keymap" msgstr "Erreur chargement tables de touches" -#: remote.c:336 msgid "Press any key to use pre-loaded keymap" msgstr "Appuyez sur une touche pour utiliser un Keymap pr�charg�" -#: remote.c:341 msgid "User-supplied keymap will be used" msgstr "Keymap personnalis� va �tre utilis�" -#: remote.c:347 msgid "Remote control test - press and hold down any key" msgstr "Test t�l�commande - Appuyer et maintenir une touche enfonc�e" -#: remote.c:366 msgid "RC5 protocol detected" msgstr "Protocole RC5 d�tect�" -#: remote.c:390 msgid "RC5 protocol detected (inverted signal)" msgstr "Protocole RC5 d�tect� (signal invers�)" -#: remote.c:401 msgid "RCMM protocol detected" msgstr "Protocole RCMM d�tect�" -#: remote.c:412 msgid "RCMM protocol detected (inverted signal)" msgstr "Protocole RCMM d�tect� (signal invers�)" -#: remote.c:420 msgid "No remote control detected" msgstr "Aucune t�l�commande d�tect�e" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/po/it_IT.po new/remote-0.7.0/po/it_IT.po --- old/remote-0.5.0/po/it_IT.po 2012-12-26 04:12:47.000000000 +0100 +++ new/remote-0.7.0/po/it_IT.po 2015-09-20 18:32:01.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Remote Control plugin 0.4.0\n" "Report-Msgid-Bugs-To: <[email protected]>\n" -"POT-Creation-Date: 2012-12-26 02:52+0100\n" +"POT-Creation-Date: 2015-09-15 18:54+0200\n" "PO-Revision-Date: 2007-12-29 02:22+0100\n" "Last-Translator: Gringo <[email protected]>\n" "Language-Team: <[email protected]>\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/po/pl_PL.po new/remote-0.7.0/po/pl_PL.po --- old/remote-0.5.0/po/pl_PL.po 2012-12-26 04:12:47.000000000 +0100 +++ new/remote-0.7.0/po/pl_PL.po 2015-09-20 18:32:02.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Remote Control plugin 0.4.0\n" "Report-Msgid-Bugs-To: <[email protected]>\n" -"POT-Creation-Date: 2012-05-27 17:56+0200\n" +"POT-Creation-Date: 2015-09-15 18:54+0200\n" "PO-Revision-Date: 2007-10-05 06:58+0200\n" "Last-Translator: Jakub Wolnicki, 2006\n" "Language-Team: <[email protected]>\n" @@ -16,47 +16,36 @@ "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -#: remote.c:52 msgid "Remote control" msgstr "Zdalne sterowanie" -#: remote.c:233 remote.c:777 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: remote.c:255 msgid "Error uploading keymap" msgstr "Blad przy przesylaniu mapy klawiszy" -#: remote.c:336 msgid "Press any key to use pre-loaded keymap" msgstr "Nacisnij dowolny klawisz, aby uzyc zaladowanej mapy klawiszy" -#: remote.c:341 msgid "User-supplied keymap will be used" msgstr "Uzyta zostanie mapa klawiszy, zdefinowana przez uzytkownika" -#: remote.c:347 msgid "Remote control test - press and hold down any key" msgstr "Test zdalnego sterowania - nacisnij i przytrzymaj dowolny klawisz" -#: remote.c:366 msgid "RC5 protocol detected" msgstr "Wykryto protokol RC5" -#: remote.c:390 msgid "RC5 protocol detected (inverted signal)" msgstr "Wykryto protokol RC5 (sygnal odwrocony)" -#: remote.c:401 msgid "RCMM protocol detected" msgstr "Wykryto protokol RCMM" -#: remote.c:412 msgid "RCMM protocol detected (inverted signal)" msgstr "Wykryto protokol RCMM (sygnal odwrocony)" -#: remote.c:420 msgid "No remote control detected" msgstr "Nie znaleziono zdalnego sterowania" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/po/ru_RU.po new/remote-0.7.0/po/ru_RU.po --- old/remote-0.5.0/po/ru_RU.po 2012-12-26 04:12:47.000000000 +0100 +++ new/remote-0.7.0/po/ru_RU.po 2015-09-20 18:32:02.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Remote Control plugin 0.4.0\n" "Report-Msgid-Bugs-To: <[email protected]>\n" -"POT-Creation-Date: 2012-05-27 17:56+0200\n" +"POT-Creation-Date: 2015-09-15 18:54+0200\n" "PO-Revision-Date: 2007-10-05 06:58+0200\n" "Last-Translator: Waldemar Nikel, 2006\n" "Language-Team: <[email protected]>\n" @@ -16,47 +16,36 @@ "Content-Type: text/plain; charset=ISO-8859-5\n" "Content-Transfer-Encoding: 8bit\n" -#: remote.c:52 msgid "Remote control" msgstr "����� ����������" -#: remote.c:233 remote.c:777 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: remote.c:255 msgid "Error uploading keymap" msgstr "������ ��� �������� ���������" -#: remote.c:336 msgid "Press any key to use pre-loaded keymap" msgstr "������� ����� ������ ��� ������������� ����� ���������� ���������" -#: remote.c:341 msgid "User-supplied keymap will be used" msgstr "����� �������������� ��������� ������������" -#: remote.c:347 msgid "Remote control test - press and hold down any key" msgstr "�������� ������ - ������� � �������� ����� ������" -#: remote.c:366 msgid "RC5 protocol detected" msgstr "������� �������� RC5" -#: remote.c:390 msgid "RC5 protocol detected (inverted signal)" msgstr "������� �������� RC5 (� ��������������� �������)" -#: remote.c:401 msgid "RCMM protocol detected" msgstr "������� �������� RCMM" -#: remote.c:412 msgid "RCMM protocol detected (inverted signal)" msgstr "������� �������� RCMM (� ��������������� �������)" -#: remote.c:420 msgid "No remote control detected" msgstr "����� ���������� �� �������" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/remote.c new/remote-0.7.0/remote.c --- old/remote-0.5.0/remote.c 2012-12-26 02:50:33.000000000 +0100 +++ new/remote-0.7.0/remote.c 2015-09-20 01:45:12.000000000 +0200 @@ -3,7 +3,7 @@ * * remote.c: main source file * - * Copyright (C) 2002-2012 Oliver Endriss <[email protected]> + * Copyright (C) 2002-2015 Oliver Endriss <[email protected]> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -48,7 +48,7 @@ #define AV7110_PARM_INVERSION "/sys/module/dvb_ttpci/parameters/ir_inversion" #endif -static const char *VERSION = "0.5.0"; +static const char *VERSION = "0.7.0"; static const char *DESCRIPTION = trNOOP("Remote control"); @@ -137,6 +137,10 @@ Put(code); DSYSLOG("%s: press %016llx\n", device, code); lastcode = code; +#if APIVERSNUM >= 10741 + repeatdelay = Setup.RcRepeatDelay; + repeatfreq = Setup.RcRepeatDelta; +#endif #if VDRVERSNUM <= 10317 last = first = now; #else @@ -443,11 +447,11 @@ do n = read(fh, &ev, sizeof ev); - while (n == sizeof ev && ev.type != 1); + while (n == sizeof ev && ev.type != 1 && ev.type != 2); if (n == sizeof ev) { - if (ev.value) + if (ev.value && ev.type == 1) ev.value = 1; code = ((uint64_t)ev.value << 32) | ((uint64_t)ev.type << 16) | (uint64_t)ev.code; } @@ -509,6 +513,7 @@ // --------------------------------------------------------------------------- { struct termios t; + memset(&tm, 0, sizeof tm); if (!tcgetattr(f, &tm)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/remotetcp.c new/remote-0.7.0/remotetcp.c --- old/remote-0.5.0/remotetcp.c 2012-12-26 02:50:40.000000000 +0100 +++ new/remote-0.7.0/remotetcp.c 2015-09-20 03:57:27.000000000 +0200 @@ -3,7 +3,7 @@ * * remotetcp.c: tcp/telnet remote control * - * Copyright (C) 2002-2012 Oliver Endriss <[email protected]> + * Copyright (C) 2002-2015 Oliver Endriss <[email protected]> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -46,10 +46,16 @@ } if (fh != -1) + { close(fh); + fh = -1; + } if (csock) + { delete csock; + csock = NULL; + } } @@ -59,7 +65,7 @@ { int port; sscanf (device, "tcp:%d", &port); - csock = new cSocket(port); + csock = new cSocketRemote(port); if (! csock) { esyslog("error creating socket"); @@ -77,6 +83,9 @@ while (fh < 0) { usleep(100000); + if (csock == NULL) + return INVALID_KEY; + fh = csock->Accept(); if (fh >= 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/remotetcp.h new/remote-0.7.0/remotetcp.h --- old/remote-0.5.0/remotetcp.h 2012-12-26 02:49:51.000000000 +0100 +++ new/remote-0.7.0/remotetcp.h 2015-09-20 03:57:56.000000000 +0200 @@ -3,7 +3,7 @@ * * remotetcp.h: tcp/telnet remote control * - * Copyright (C) 2002-2012 Oliver Endriss <[email protected]> + * Copyright (C) 2002-2015 Oliver Endriss <[email protected]> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -26,7 +26,7 @@ #define __PLUGIN_REMOTETCP_H -#include <vdr/svdrp.h> +#include "compat.h" #include "remote.h" @@ -36,7 +36,7 @@ { private: cTtyStatus *cstatus; - cSocket *csock; + cSocketRemote *csock; protected: virtual uint64_t getKey(void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/ttystatus.c new/remote-0.7.0/ttystatus.c --- old/remote-0.5.0/ttystatus.c 2012-12-26 02:50:48.000000000 +0100 +++ new/remote-0.7.0/ttystatus.c 2015-04-11 13:56:39.000000000 +0200 @@ -3,7 +3,7 @@ * * ttystatus.c: tty osd emulation * - * Copyright (C) 2002-2012 Oliver Endriss <[email protected]> + * Copyright (C) 2002-2015 Oliver Endriss <[email protected]> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -24,72 +24,97 @@ #include <vdr/plugin.h> #include <vdr/status.h> +#include <wchar.h> #include "ttystatus.h" -void cTtyStatus::display(const char *buf) +void cTtyStatus::dprintf(const char *Text) { - int n = strlen(buf); - int tabs = 0; - int tabstop = 30; - int pos = 0; + char *text = strdup(Text); - for (int i = 0; i < n; i++) + if (text) { - if (buf[i] == '\t') - tabs++; + for (int i = 0; i < (int)strlen(text); i++) + { + switch(text[i]) + { + case '\t': + text[i] = '|'; + break; + } + } + printf("%s: '%s'\n", __func__, text); + free(text); } +} - if (tabs == 1) - tabstop = 40; - else if (tabs == 2) - tabstop = 10; - else if (tabs == 3) - tabstop = 8; - else - tabstop = 4; - - for (int i = 0; i < n && pos < 80; i++) + +void cTtyStatus::display(const char *buf, const bool fillEOL, const int limit) +{ + int n = strlen(buf); + int pos = 0; + int t = 0; + mbstate_t ps; + static const char blanks[] = " "; + + memset(&ps, 0, sizeof ps); + + for (int i = 0; i < n && pos < limit; ) { switch (buf[i]) { case '\t': do { - write(fd, " ", 1); + write(fd, blanks, 1); pos++; } - while (pos % tabstop != 0); + while (t < numTabs && pos <= tabPos[t] + t+1); + if (t < numTabs) + t++; + i++; break; case '\n': write(fd, "\r\n", 2); + i++; break; default: - write(fd, buf+i, 1); +#if 1 + // first calculate number of bytes, then perform a single 'write' + const char *p = buf+i; + int l = 0; + while (*p != '\t' && *p != '\n' && pos < limit) + { + int l2 = mbrlen(p, MB_CUR_MAX, &ps); + if (l2 == 0) + break; + if (l2 < 0) + l2 = 1; + p += l2; + l += l2; + pos++; + } +#else + // simple but suboptimal: one 'write' for each character + int l = mbrlen(buf+i, MB_CUR_MAX, &ps); + if (l < 0) + l = 1; pos++; +#endif + write(fd, buf+i, l); + i += l; break; } } -} - -void cTtyStatus::display2(const char *buf) -{ - for (size_t i = 0; i < strlen(buf); i++) + while (fillEOL && pos < limit) { - switch(buf[i]) - { - case '\n': - write(fd, "\r\n", 2); - break; - - default: - write(fd, buf+i, 1); - break; - } - } + n = min(limit-pos, (int)sizeof(blanks)-1); + write(fd, blanks, n); + pos += n; + } } @@ -98,35 +123,35 @@ switch(col) { case WHITE_BLACK: - print("\e[1m\e[37m\e[40m"); + display("\e[1m\e[37m\e[40m"); break; case YELLOW_BLACK: - print("\e[1m\e[33m\e[40m"); + display("\e[1m\e[33m\e[40m"); break; case CYAN_BLACK: - print("\e[1m\e[36m\e[40m"); + display("\e[1m\e[36m\e[40m"); break; case BLACK_CYAN: - print("\e[0m\e[30m\e[46m"); + display("\e[0m\e[30m\e[46m"); break; case BLACK_RED: - print("\e[0m\e[30m\e[41m"); + display("\e[0m\e[30m\e[41m"); break; case BLACK_GREEN: - print("\e[0m\e[30m\e[42m"); + display("\e[0m\e[30m\e[42m"); break; case BLACK_YELLOW: - print("\e[0m\e[30m\e[43m"); + display("\e[0m\e[30m\e[43m"); break; case WHITE_BLUE: - print("\e[1m\e[37m\e[44m"); + display("\e[1m\e[37m\e[44m"); break; } } @@ -220,7 +245,8 @@ clear_screen(); set_color(BLACK_CYAN); set_pos(0, 0); - print(" %-80s", Title); + display("", true, 5); + display(Title, true, 75); set_color(WHITE_BLACK); refresh(); set_pos(2, 0); @@ -233,12 +259,13 @@ if (Message) { set_color(BLACK_YELLOW); - print(" %-80s", Message); + display("", true, 5); + display(Message, true, 75); } else { set_color(WHITE_BLACK); - print("%-80s", ""); + display("", true); } refresh(); set_pos(2, 0); @@ -249,20 +276,24 @@ const char *Yellow, const char *Blue) { set_color(Red ? BLACK_RED : WHITE_BLACK); - set_pos(24,0); - print(" %-15s", Red ? Red : ""); + set_pos(24, 0); + display("", true, 5); + display(Red ? Red : "", true, 15); set_color(Green ? BLACK_GREEN: WHITE_BLACK); - set_pos(24,20); - print(" %-15s", Green ? Green : ""); + set_pos(24, 20); + display("", true, 5); + display(Green ? Green : "", true, 15); set_color(Yellow ? BLACK_YELLOW : WHITE_BLACK); - set_pos(24,40); - print(" %-15s", Yellow ? Yellow : ""); + set_pos(24, 40); + display("", true, 5); + display(Yellow ? Yellow : "", true, 15); set_color(Blue ? WHITE_BLUE : WHITE_BLACK); - set_pos(24,60); - print(" %-15s", Blue ? Blue : ""); + set_pos(24, 60); + display("", true, 5); + display(Blue ? Blue : "", true, 15); refresh(); set_pos(2, 0); @@ -331,13 +362,35 @@ first = max(first,0); last = min(first+20,lastIndex); + // Update tab positions in window + memset(tabPos, 0, sizeof tabPos); + numTabs = 0; + for (i = first; i <= last; i++) + { + int n = strlen(lineBuf[i]); + int t = 0; + for (int j = 0; j < n; j++) + { + if (lineBuf[i][j] == '\t' && t < maxTabs) + { + tabPos[t] = max(tabPos[t], j); + t++; + } + } + numTabs = max(numTabs, t); + } +#if 0 + for (i = 0; i < numTabs; i++) + printf("tab %d at position %d\n", i, tabPos[i]); +#endif + set_color(WHITE_BLACK); for (i = first; i <= last; i++) { if (i == currIndex) set_color(BLACK_CYAN); set_pos(2+i-first, 0); - print("%-80s", lineBuf[i]); + display(lineBuf[i], true); if (i == currIndex) set_color(WHITE_BLACK); } @@ -346,6 +399,10 @@ } } + +// +// Note: Used for event decription, recording info etc. +// void cTtyStatus::OsdTextItem(const char *Text, bool Scroll) { // dsyslog("%s: '%s' scroll %d", __FUNCTION__, Text, Scroll); @@ -353,8 +410,8 @@ if (Text) { set_color(CYAN_BLACK); - display2(Text); - display2("\n\n"); + display(Text, false, 0x7fff); + display("\n\n"); refresh(); } else @@ -369,7 +426,7 @@ clear_screen(); set_color(WHITE_BLACK); set_pos(19, 0); - print("%-80s", Text); + display(Text); refresh(); } @@ -387,16 +444,16 @@ { set_color(YELLOW_BLACK); set_pos(line++, 0); - print("%5s ", buffer); + display(buffer, true, 6); set_color(CYAN_BLACK); - print("%s", PresentTitle); + display(PresentTitle); } if (PresentSubtitle) { if (strlen(PresentSubtitle)) { - set_pos(line++, 0); - print("%5s %s", "", PresentSubtitle); + set_pos(line++, 6); + display(PresentSubtitle); } } @@ -405,14 +462,14 @@ { set_color(YELLOW_BLACK); set_pos(line++, 0); - print("%5s ", buffer); + display(buffer, true, 6); set_color(CYAN_BLACK); - print("%s", FollowingTitle); + display(FollowingTitle); } if (FollowingSubtitle) { - set_pos(line++, 0); - print("%5s %s", "", FollowingSubtitle); + set_pos(line++, 6); + display(FollowingSubtitle); } refresh(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/remote-0.5.0/ttystatus.h new/remote-0.7.0/ttystatus.h --- old/remote-0.5.0/ttystatus.h 2012-12-26 02:49:59.000000000 +0100 +++ new/remote-0.7.0/ttystatus.h 2015-04-11 02:45:08.000000000 +0200 @@ -3,7 +3,7 @@ * * ttystatus.h: tty osd emulation * - * Copyright (C) 2002-2012 Oliver Endriss <[email protected]> + * Copyright (C) 2002-2015 Oliver Endriss <[email protected]> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -39,10 +39,10 @@ #include <vdr/status.h> -#define clear_screen() { set_color(WHITE_BLACK); print("\e[2J"); } +#define clear_screen() { set_color(WHITE_BLACK); display("\e[2J"); } #define refresh() #define set_pos(y,x) print("\e[%d;%dH", y+1, x+1); -#define print(fmt...) { char buf[100]; snprintf(buf,100, fmt); display(buf); } +#define print(fmt...) { char buf[140]; snprintf(buf,sizeof buf,fmt); display(buf); } /****************************************************************************/ @@ -54,11 +54,13 @@ int numEntries; int lastIndex; int currIndex; - int tabstop; + static const int maxTabs = 10; + int numTabs; + int tabPos[maxTabs]; protected: - virtual void display(const char *buf); - virtual void display2(const char *buf); + void dprintf(const char *Text); + virtual void display(const char *buf, const bool fillEOL = false, const int limit = 80); virtual void set_color(int col); #if VDRVERSNUM <= 10337 virtual void Replaying(const cControl *Control, const char *Name);
