summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2018-08-10 13:28:47 -0300
committerGitHub <noreply@github.com>2018-08-10 13:28:47 -0300
commit275e0d5ee4e80d9d3cd124ffa29a691b9aed3e70 (patch)
tree6cb7e7f8bec4a2d599ecd0dbbc17f651c56fc710 /drivers
parentb9730a695643af15bd97f9b87ae656b735281bba (diff)
parentd315b0fb8aa03ee6ecc7d93d884b606dc19c6ad5 (diff)
Merge pull request #18914 from notwarp/master
added get_creation_time function for gdscript
Diffstat (limited to 'drivers')
-rw-r--r--drivers/unix/dir_access_unix.cpp20
-rw-r--r--drivers/unix/dir_access_unix.h1
-rw-r--r--drivers/unix/file_access_unix.cpp16
-rw-r--r--drivers/unix/file_access_unix.h1
-rw-r--r--drivers/windows/file_access_windows.cpp20
-rw-r--r--drivers/windows/file_access_windows.h1
6 files changed, 59 insertions, 0 deletions
diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp
index 5a4be6df4f..8b2d05c7e9 100644
--- a/drivers/unix/dir_access_unix.cpp
+++ b/drivers/unix/dir_access_unix.cpp
@@ -124,6 +124,26 @@ uint64_t DirAccessUnix::get_modified_time(String p_file) {
return 0;
};
+// NEW FUNCTION
+uint64_t DirAccessUnix::get_creation_time(String p_file) {
+
+ if (p_file.is_rel_path())
+ p_file = current_dir.plus_file(p_file);
+
+ p_file = fix_path(p_file);
+
+ struct stat flags;
+ bool success = (stat(p_file.utf8().get_data(), &flags) == 0);
+
+ if (success) {
+ return flags.st_ctime;
+ } else {
+
+ ERR_FAIL_V(0);
+ };
+ return 0;
+};
+
String DirAccessUnix::get_next() {
if (!dir_stream)
diff --git a/drivers/unix/dir_access_unix.h b/drivers/unix/dir_access_unix.h
index a55acdbd34..815de5239c 100644
--- a/drivers/unix/dir_access_unix.h
+++ b/drivers/unix/dir_access_unix.h
@@ -75,6 +75,7 @@ public:
virtual bool dir_exists(String p_dir);
virtual uint64_t get_modified_time(String p_file);
+ virtual uint64_t get_creation_time(String p_file); // NEW FUNCTION
virtual Error rename(String p_path, String p_new_path);
virtual Error remove(String p_path);
diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp
index c25d34125d..76b2676c71 100644
--- a/drivers/unix/file_access_unix.cpp
+++ b/drivers/unix/file_access_unix.cpp
@@ -297,6 +297,22 @@ uint64_t FileAccessUnix::_get_modified_time(const String &p_file) {
};
}
+// NEW FUNCTION
+uint64_t FileAccessUnix::_get_creation_time(const String &p_file) {
+
+ String file = fix_path(p_file);
+ struct stat flags;
+ int err = stat(file.utf8().get_data(), &flags);
+
+ if (!err) {
+ return flags.st_ctime;
+ } else {
+ print_line("ERROR IN: " + p_file);
+
+ ERR_FAIL_V(0);
+ };
+}
+
Error FileAccessUnix::_chmod(const String &p_path, int p_mod) {
int err = chmod(p_path.utf8().get_data(), p_mod);
if (!err) {
diff --git a/drivers/unix/file_access_unix.h b/drivers/unix/file_access_unix.h
index 88bb39fbd1..f81a4847d2 100644
--- a/drivers/unix/file_access_unix.h
+++ b/drivers/unix/file_access_unix.h
@@ -84,6 +84,7 @@ public:
virtual bool file_exists(const String &p_path); ///< return true if a file exists
virtual uint64_t _get_modified_time(const String &p_file);
+ virtual uint64_t _get_creation_time(const String &p_file); // NEW FUNCTION
virtual Error _chmod(const String &p_path, int p_mod);
diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp
index ea194e5eae..c74d8853d4 100644
--- a/drivers/windows/file_access_windows.cpp
+++ b/drivers/windows/file_access_windows.cpp
@@ -311,6 +311,26 @@ uint64_t FileAccessWindows::_get_modified_time(const String &p_file) {
ERR_FAIL_V(0);
};
+// NEW FUNCTION
+uint64_t FileAccessWindows::_get_creation_time(const String &p_file) {
+
+ String file = fix_path(p_file);
+ if (file.ends_with("/") && file != "/")
+ file = file.substr(0, file.length() - 1);
+
+ struct _stat st;
+ int rv = _wstat(file.c_str(), &st);
+
+ if (rv == 0) {
+
+ return st.st_ctime;
+ } else {
+ print_line("no access to " + file);
+ }
+
+ ERR_FAIL_V(0);
+};
+
FileAccessWindows::FileAccessWindows() {
f = NULL;
diff --git a/drivers/windows/file_access_windows.h b/drivers/windows/file_access_windows.h
index 0462c1e942..ee83acffd7 100644
--- a/drivers/windows/file_access_windows.h
+++ b/drivers/windows/file_access_windows.h
@@ -77,6 +77,7 @@ public:
virtual bool file_exists(const String &p_name); ///< return true if a file exists
uint64_t _get_modified_time(const String &p_file);
+ uint64_t _get_creation_time(const String &p_file); // NEW FUNCTION
FileAccessWindows();
virtual ~FileAccessWindows();