diff options
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 5 | ||||
-rw-r--r-- | recording.c | 6 | ||||
-rw-r--r-- | tools.c | 4 | ||||
-rw-r--r-- | tools.h | 5 |
5 files changed, 15 insertions, 6 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 671f0432..0deeb22a 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2420,6 +2420,7 @@ Christoph Haubrich <christoph1.haubrich@arcor.de> for reporting a bug in setting an empty recording name or folder to a blank in the "Edit recording" menu for suggesting to add a confirmation before renaming a recording to its folder name + for reporting a problem with data loss in case renaming a recording fails Pekka Mauno <pekka.mauno@iki.fi> for fixing cSchedule::GetFollowingEvent() in case there is currently no present @@ -8515,3 +8515,8 @@ Video Disk Recorder Revision History menu (reported by Christoph Haubrich). - Added a confirmation before renaming a recording to its folder name (suggested by Christoph Haubrich). +- Modified EntriesOnSameFileSystem(), so that it returns 'true' if either of the given + files doesn't exist (to avoid any actions that might be triggered if files are on + different file system), and changed handling the 'error' variable in cDirCopier, so + that it is initialized to 'true' and will only be set to 'false' if the entire + copy process has been successful (problem reported by Christoph Haubrich). diff --git a/recording.c b/recording.c index 271f6475..337d4a88 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 3.26 2015/02/06 15:13:59 kls Exp $ + * $Id: recording.c 3.27 2015/02/07 16:07:22 kls Exp $ */ #include "recording.h" @@ -1676,7 +1676,7 @@ cDirCopier::cDirCopier(const char *DirNameSrc, const char *DirNameDst) { dirNameSrc = DirNameSrc; dirNameDst = DirNameDst; - error = false; + error = true; // prepare for the worst! suspensionLogged = false; } @@ -1790,6 +1790,7 @@ void cDirCopier::Action(void) else { // We're done: dsyslog("done copying directory '%s' to '%s'", *dirNameSrc, *dirNameDst); + error = false; return; } } @@ -1802,7 +1803,6 @@ void cDirCopier::Action(void) } else esyslog("ERROR: can't access '%s'", *dirNameDst); - error = true; } void cDirCopier::Stop(void) @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 3.3 2014/03/22 14:22:55 kls Exp $ + * $Id: tools.c 3.4 2015/02/07 16:07:22 kls Exp $ */ #include "tools.h" @@ -404,7 +404,7 @@ bool EntriesOnSameFileSystem(const char *File1, const char *File2) } else LOG_ERROR_STR(File1); - return false; + return true; // we only return false if both files actually exist and are in different file systems! } int FreeDiskSpaceMB(const char *Directory, int *UsedMB) @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 3.6 2015/01/14 09:09:06 kls Exp $ + * $Id: tools.h 3.7 2015/02/07 16:07:22 kls Exp $ */ #ifndef __TOOLS_H @@ -234,6 +234,9 @@ cString dtoa(double d, const char *Format = "%f"); cString itoa(int n); cString AddDirectory(const char *DirName, const char *FileName); bool EntriesOnSameFileSystem(const char *File1, const char *File2); + ///< Checks whether the given files are on the same file system. If either of the + ///< files doesn't exist, this function returns *true* to avoid any actions that might be + ///< triggered if files are on different file system. int FreeDiskSpaceMB(const char *Directory, int *UsedMB = NULL); bool DirectoryOk(const char *DirName, bool LogErrors = false); bool MakeDirs(const char *FileName, bool IsDirectory = false); |