added 'file_modified_time' function, which should be faster than using wxFileName

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1519 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
twanvl
2010-10-03 16:47:38 +00:00
parent 4ee33c28f9
commit bcc582f912
3 changed files with 27 additions and 6 deletions
+17
View File
@@ -10,6 +10,8 @@
#include <util/file_utils.hpp>
#include <wx/filename.h>
#include <wx/dir.h>
#include <errno.h>
#include <sys/stat.h>
DECLARE_TYPEOF_COLLECTION(String);
@@ -88,6 +90,21 @@ bool resolve_filename_conflicts(wxFileName& fn, FilenameConflicts conflicts, set
}
}
// ----------------------------------------------------------------------------- : File info
time_t file_modified_time(const String& path) {
// Note: wxFileName also provides a function for this, but that is very slow.
struct stat statbuf;
if (stat(path.mb_str(), &statbuf) != 0) {
if (errno == ENOENT) {
return 0;
} else {
throw InternalError(_("could not stat ") + path);
}
}
return statbuf.st_mtime;
}
// ----------------------------------------------------------------------------- : Directories
bool create_parent_dirs(const String& file) {
+7 -2
View File
@@ -4,8 +4,8 @@
//| License: GNU General Public License 2 or later (see file COPYING) |
//+----------------------------------------------------------------------------+
#ifndef HEADER_UTIL_FILE_UTILS
#define HEADER_UTIL_FILE_UTILS
#ifndef HEADER_UTIL_FILE_UTILS
#define HEADER_UTIL_FILE_UTILS
// ----------------------------------------------------------------------------- : Includes
@@ -32,6 +32,11 @@ String clean_filename(const String& name);
/** Returns true if the filename should be used, false if failed. */
bool resolve_filename_conflicts(wxFileName& fn, FilenameConflicts conflicts, set<String>& used);
// ----------------------------------------------------------------------------- : File info
/// Get the last modified time of a file
time_t file_modified_time(const String& name);
// ----------------------------------------------------------------------------- : Removing and renaming
/// Ensure that the parent directories of the given filename exist
+3 -4
View File
@@ -349,12 +349,11 @@ void Package::openSubdir(const String& name) {
String f; // filename
for(bool ok = d.GetFirst(&f, wxEmptyString, wxDIR_FILES | wxDIR_HIDDEN) ; ok ; ok = d.GetNext(&f)) {
if (ignore_file(f)) continue;
// add file
// add file to list of known files
addFile(name + f);
// get modified time
wxFileName fn(filename + _("/") + name + f);
wxDateTime mod;
if (fn.GetTimes(0, &mod, 0) && mod > modified) modified = mod;
wxDateTime file_time = file_modified_time(filename + _("/") + name + f);
modified = max(modified,file_time);
}
// find subdirs
for(bool ok = d.GetFirst(&f, wxEmptyString, wxDIR_DIRS | wxDIR_HIDDEN) ; ok ; ok = d.GetNext(&f)) {