diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 5061c2bb..529046ad 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3449,3 +3449,6 @@ Robert Hannebauer Aitugan Sarbassov for adding 'S58.5E Kazsat 3' to sources.conf + +Sergey Chernyavskiy + for reporting truncated date/time strings in the skins on multi-byte UTF-8 diff --git a/HISTORY b/HISTORY index 6ef6d5bf..655c411d 100644 --- a/HISTORY +++ b/HISTORY @@ -8868,3 +8868,5 @@ Video Disk Recorder Revision History - Fixed building VDR with systemd >= 230 (thanks to Ville Skyttä). - Sorted sources.conf by continous azimuth (thanks to Lucian Muresan). - Added 'S58.5E Kazsat 3' to sources.conf (thanks to Aitugan Sarbassov). +- Fixed truncated date/time strings in the skins on multi-byte UTF-8 systems + (reported by Sergey Chernyavskiy). diff --git a/PLUGINS/src/skincurses/HISTORY b/PLUGINS/src/skincurses/HISTORY index d4673f26..2a2bccb0 100644 --- a/PLUGINS/src/skincurses/HISTORY +++ b/PLUGINS/src/skincurses/HISTORY @@ -135,3 +135,5 @@ VDR Plugin 'skincurses' Revision History - Added cFont::Width(void) to get the default character width and allow stretched font drawing in high level OSDs (dummy for skincurses). +- Fixed truncated date/time strings in the skins on multi-byte UTF-8 systems + (reported by Sergey Chernyavskiy). diff --git a/PLUGINS/src/skincurses/skincurses.c b/PLUGINS/src/skincurses/skincurses.c index 2d98f5b9..d11736be 100644 --- a/PLUGINS/src/skincurses/skincurses.c +++ b/PLUGINS/src/skincurses/skincurses.c @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: skincurses.c 4.1 2016/12/22 12:50:20 kls Exp $ + * $Id: skincurses.c 4.2 2016/12/22 14:09:09 kls Exp $ */ #include @@ -408,8 +408,7 @@ void cSkinCursesDisplayMenu::SetEvent(const cEvent *Event) return; int y = 2; cTextScroller ts; - char t[32]; - snprintf(t, sizeof(t), "%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString()); + cString t = cString::sprintf("%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString()); ts.Set(osd, 0, y, ScOsdWidth, ScOsdHeight - y - 2, t, &Font, clrYellow, clrBackground); if (Event->Vps() && Event->Vps() != Event->StartTime()) { cString buffer = cString::sprintf(" VPS: %s", *Event->GetVpsString()); diff --git a/skinclassic.c b/skinclassic.c index b9919d84..26408993 100644 --- a/skinclassic.c +++ b/skinclassic.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinclassic.c 2.10 2013/03/03 15:26:09 kls Exp $ + * $Id: skinclassic.c 4.1 2016/12/22 14:07:04 kls Exp $ */ #include "skinclassic.h" @@ -352,8 +352,7 @@ void cSkinClassicDisplayMenu::SetEvent(const cEvent *Event) const cFont *font = cFont::GetFont(fontOsd); int y = y2; cTextScroller ts; - char t[32]; - snprintf(t, sizeof(t), "%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString()); + cString t = cString::sprintf("%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString()); ts.Set(osd, x1, y, x2 - x1, y3 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground)); if (Event->Vps() && Event->Vps() != Event->StartTime()) { cString buffer = cString::sprintf(" VPS: %s ", *Event->GetVpsString()); diff --git a/skinlcars.c b/skinlcars.c index d84a753f..0fae3b85 100644 --- a/skinlcars.c +++ b/skinlcars.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinlcars.c 4.1 2015/09/01 10:07:07 kls Exp $ + * $Id: skinlcars.c 4.2 2016/12/22 14:05:56 kls Exp $ */ // "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures, @@ -1636,8 +1636,7 @@ void cSkinLCARSDisplayMenu::SetEvent(const cEvent *Event) int xl = xi00; int y = yi00; cTextScroller ts; - char t[32]; - snprintf(t, sizeof(t), "%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString()); + cString t = cString::sprintf("%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString()); ts.Set(osd, xl, y, xi01 - xl, yi01 - y, t, font, Theme.Color(clrEventTime), Theme.Color(clrBackground)); if (Event->Vps() && Event->Vps() != Event->StartTime()) { cString buffer = cString::sprintf(" VPS: %s ", *Event->GetVpsString()); diff --git a/skinsttng.c b/skinsttng.c index 7e450fda..792652ee 100644 --- a/skinsttng.c +++ b/skinsttng.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinsttng.c 3.1 2013/11/15 15:33:14 kls Exp $ + * $Id: skinsttng.c 4.1 2016/12/22 14:07:22 kls Exp $ */ // "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures @@ -655,8 +655,7 @@ void cSkinSTTNGDisplayMenu::SetEvent(const cEvent *Event) int xl = x3 + TextSpacing; int y = y3; cTextScroller ts; - char t[32]; - snprintf(t, sizeof(t), "%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString()); + cString t = cString::sprintf("%s %s - %s", *Event->GetDateString(), *Event->GetTimeString(), *Event->GetEndTimeString()); ts.Set(osd, xl, y, x4 - xl, y4 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground)); if (Event->Vps() && Event->Vps() != Event->StartTime()) { cString buffer = cString::sprintf(" VPS: %s ", *Event->GetVpsString());