mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 13:06:59 -04:00
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:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user