From 40ca081ff4e360c383a66c627df4c467c04e5913 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Fri, 1 Jan 2021 15:26:27 +0100 Subject: [PATCH] Using strgetlast() in more places --- HISTORY | 3 ++- menu.c | 14 +++----------- recording.c | 9 +++------ tools.h | 3 ++- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/HISTORY b/HISTORY index 35525720..a8a0250c 100644 --- a/HISTORY +++ b/HISTORY @@ -9569,8 +9569,9 @@ Video Disk Recorder Revision History - Events in the past are no longer marked as having a timer in the Schedules menu. -2020-12-31: +2021-01-01: - Fixed strreplace() to handle NULL strings (reported by Jürgen Schneider). - Somewhere down the road the 'x' bit of Doxyfile.filter got lost, so the Makefile now makes sure it is set before calling doxygen. +- Using strgetlast() in more places. diff --git a/menu.c b/menu.c index 5c6e4832..4b2815ec 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 5.1 2020/12/26 15:49:01 kls Exp $ + * $Id: menu.c 5.2 2021/01/01 15:26:27 kls Exp $ */ #include "menu.h" @@ -1094,11 +1094,7 @@ void cMenuEditTimer::SetPatternItem(bool Initial) return; } if (!*data.pattern) { - char *p = strrchr(data.file, FOLDERDELIMCHAR); - if (p) - p++; - else - p = data.file; + char *p = strgetlast(data.file, FOLDERDELIMCHAR); strn0cpy(data.pattern, p, sizeof(data.pattern)); } Ins(pattern = new cMenuEditStrItem( tr("Pattern"), data.pattern, sizeof(data.pattern)), true, file); @@ -1120,11 +1116,7 @@ eOSState cMenuEditTimer::SetFolder(void) { if (cMenuFolder *mf = dynamic_cast(SubMenu())) { cString Folder = mf->GetFolder(); - char *p = strrchr(data.file, FOLDERDELIMCHAR); - if (p) - p++; - else - p = data.file; + char *p = strgetlast(data.file, FOLDERDELIMCHAR); if (!isempty(*Folder)) strn0cpy(data.file, cString::sprintf("%s%c%s", *Folder, FOLDERDELIMCHAR, p), sizeof(data.file)); else if (p != data.file) diff --git a/recording.c b/recording.c index 17467e36..2e2ceefa 100644 --- a/recording.c +++ b/recording.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.c 5.1 2020/12/26 15:49:01 kls Exp $ + * $Id: recording.c 5.2 2021/01/01 15:26:27 kls Exp $ */ #include "recording.h" @@ -1050,9 +1050,7 @@ cString cRecording::Folder(void) const cString cRecording::BaseName(void) const { - if (char *s = strrchr(name, FOLDERDELIMCHAR)) - return cString(s + 1); - return name; + return strgetlast(name, FOLDERDELIMCHAR); } const char *cRecording::FileName(void) const @@ -1158,8 +1156,7 @@ int cRecording::HierarchyLevels(void) const bool cRecording::IsEdited(void) const { - const char *s = strrchr(name, FOLDERDELIMCHAR); - s = !s ? name : s + 1; + const char *s = strgetlast(name, FOLDERDELIMCHAR); return *s == '%'; } diff --git a/tools.h b/tools.h index 912bb88f..2c27b593 100644 --- a/tools.h +++ b/tools.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 5.1 2020/12/26 15:49:01 kls Exp $ + * $Id: tools.h 5.2 2021/01/01 15:26:27 kls Exp $ */ #ifndef __TOOLS_H @@ -234,6 +234,7 @@ char *strreplace(char *s, const char *s1, const char *s2); ///< re-allocates 's' const char *strchrn(const char *s, char c, size_t n); ///< returns a pointer to the n'th occurrence (counting from 1) of c in s, or NULL if no such character was found. If n is 0, s is returned. int strcountchr(const char *s, char c); ///< returns the number of occurrences of 'c' in 's'. const char *strgetlast(const char *s, char c); // returns the part of 's' after the last occurrence of 'c', or 's' if there is no 'c'. +inline char *strgetlast(char *s, char c) { return const_cast(strgetlast(static_cast(s), c)); } // returns the part of 's' after the last occurrence of 'c', or 's' if there is no 'c'. inline char *skipspace(const char *s) { if ((uchar)*s > ' ') // most strings don't have any leading space, so handle this case as fast as possible