diff options
author | James Buren <braewoods+rb@braewoods.net> | 2021-07-03 00:19:58 +0000 |
---|---|---|
committer | James Buren <braewoods+rb@braewoods.net> | 2021-07-03 00:19:58 +0000 |
commit | c9f2308a1d4401ceefaac47b1ea851530d07e47d (patch) | |
tree | 81f75a26707bd8583f5117a7a0febba894787996 /firmware/common | |
parent | d1a92aafff55defefcb8cf8f4b045701325088b2 (diff) | |
download | rockbox-c9f2308a1d4401ceefaac47b1ea851530d07e47d.tar.gz rockbox-c9f2308a1d4401ceefaac47b1ea851530d07e47d.zip |
fat: move fattime_mktime to timefuncs
This moves the time conversion function to timefuncs since it has
uses on ports that don't use the FAT driver. This function has no
dependency on the FAT driver as it is so this should not cause any
issues. To reflect this separation the function was renamed to
dostime_mktime since it is really for DOS timestamps. The places
where it was used have also been updated.
Change-Id: Id98b1448d5c6fcda286846e1d2c736db682bfb52
Diffstat (limited to 'firmware/common')
-rw-r--r-- | firmware/common/dir.c | 3 | ||||
-rw-r--r-- | firmware/common/dircache.c | 2 | ||||
-rw-r--r-- | firmware/common/timefuncs.c | 14 |
3 files changed, 17 insertions, 2 deletions
diff --git a/firmware/common/dir.c b/firmware/common/dir.c index f89129ae34..245947b134 100644 --- a/firmware/common/dir.c +++ b/firmware/common/dir.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "debug.h" | 26 | #include "debug.h" |
27 | #include "dir.h" | 27 | #include "dir.h" |
28 | #include "pathfuncs.h" | 28 | #include "pathfuncs.h" |
29 | #include "timefuncs.h" | ||
29 | #include "fileobj_mgr.h" | 30 | #include "fileobj_mgr.h" |
30 | #include "dircache_redirect.h" | 31 | #include "dircache_redirect.h" |
31 | 32 | ||
@@ -406,7 +407,7 @@ struct dirinfo dir_get_info(DIR *dirp, struct dirent *entry) | |||
406 | { | 407 | { |
407 | .attribute = entry->info.attr, | 408 | .attribute = entry->info.attr, |
408 | .size = entry->info.size, | 409 | .size = entry->info.size, |
409 | .mtime = fattime_mktime(entry->info.wrtdate, entry->info.wrttime), | 410 | .mtime = dostime_mktime(entry->info.wrtdate, entry->info.wrttime), |
410 | }; | 411 | }; |
411 | 412 | ||
412 | file_error: | 413 | file_error: |
diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c index 589986911c..3b880d3382 100644 --- a/firmware/common/dircache.c +++ b/firmware/common/dircache.c | |||
@@ -2956,7 +2956,7 @@ void dircache_dump(void) | |||
2956 | FOR_EACH_CACHE_ENTRY(ce) | 2956 | FOR_EACH_CACHE_ENTRY(ce) |
2957 | { | 2957 | { |
2958 | #ifdef DIRCACHE_NATIVE | 2958 | #ifdef DIRCACHE_NATIVE |
2959 | time_t mtime = fattime_mktime(ce->wrtdate, ce->wrttime); | 2959 | time_t mtime = dostime_mktime(ce->wrtdate, ce->wrttime); |
2960 | #else | 2960 | #else |
2961 | time_t mtime = ce->mtime; | 2961 | time_t mtime = ce->mtime; |
2962 | #endif | 2962 | #endif |
diff --git a/firmware/common/timefuncs.c b/firmware/common/timefuncs.c index 108431753a..d87e6b67f2 100644 --- a/firmware/common/timefuncs.c +++ b/firmware/common/timefuncs.c | |||
@@ -32,6 +32,20 @@ | |||
32 | 32 | ||
33 | static struct tm tm; | 33 | static struct tm tm; |
34 | 34 | ||
35 | time_t dostime_mktime(uint16_t dosdate, uint16_t dostime) | ||
36 | { | ||
37 | /* this knows our mktime() only uses these struct tm fields */ | ||
38 | struct tm tm; | ||
39 | tm.tm_sec = ((dostime ) & 0x1f) * 2; | ||
40 | tm.tm_min = ((dostime >> 5) & 0x3f); | ||
41 | tm.tm_hour = ((dostime >> 11) ); | ||
42 | tm.tm_mday = ((dosdate ) & 0x1f); | ||
43 | tm.tm_mon = ((dosdate >> 5) & 0x0f) - 1; | ||
44 | tm.tm_year = ((dosdate >> 9) ) + 80; | ||
45 | |||
46 | return mktime(&tm); | ||
47 | } | ||
48 | |||
35 | #if !CONFIG_RTC | 49 | #if !CONFIG_RTC |
36 | static inline bool rtc_dirty(void) | 50 | static inline bool rtc_dirty(void) |
37 | { | 51 | { |