summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY5
-rw-r--r--recording.c6
-rw-r--r--tools.c4
-rw-r--r--tools.h5
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
diff --git a/HISTORY b/HISTORY
index 6dea3ad0..6b4ea1c2 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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)
diff --git a/tools.c b/tools.c
index 332fce42..5418f5e2 100644
--- a/tools.c
+++ b/tools.c
@@ -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)
diff --git a/tools.h b/tools.h
index 920a1d11..0987234b 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 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);