Merge branch 'master' of github.com:RT-Thread/rt-thread
This commit is contained in:
commit
c6ba8eac62
|
@ -14,8 +14,12 @@
|
||||||
* 2011-11-23 Bernard fixed the rename issue.
|
* 2011-11-23 Bernard fixed the rename issue.
|
||||||
* 2012-07-26 aozima implement ff_memalloc and ff_memfree.
|
* 2012-07-26 aozima implement ff_memalloc and ff_memfree.
|
||||||
* 2012-12-19 Bernard fixed the O_APPEND and lseek issue.
|
* 2012-12-19 Bernard fixed the O_APPEND and lseek issue.
|
||||||
|
* 2013-03-01 aozima fixed the stat(st_mtime) issue.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
#include "ffconf.h"
|
#include "ffconf.h"
|
||||||
#include "ff.h"
|
#include "ff.h"
|
||||||
|
@ -178,7 +182,7 @@ int dfs_elm_mkfs(rt_device_t dev_id)
|
||||||
{
|
{
|
||||||
#define FSM_STATUS_INIT 0
|
#define FSM_STATUS_INIT 0
|
||||||
#define FSM_STATUS_USE_TEMP_DRIVER 1
|
#define FSM_STATUS_USE_TEMP_DRIVER 1
|
||||||
FATFS *fat;
|
FATFS *fat = RT_NULL;
|
||||||
int flag;
|
int flag;
|
||||||
FRESULT result;
|
FRESULT result;
|
||||||
int index;
|
int index;
|
||||||
|
@ -710,8 +714,38 @@ int dfs_elm_stat(struct dfs_filesystem *fs, const char *path, struct stat *st)
|
||||||
st->st_mode &= ~(DFS_S_IWUSR | DFS_S_IWGRP | DFS_S_IWOTH);
|
st->st_mode &= ~(DFS_S_IWUSR | DFS_S_IWGRP | DFS_S_IWOTH);
|
||||||
|
|
||||||
st->st_size = file_info.fsize;
|
st->st_size = file_info.fsize;
|
||||||
st->st_mtime = file_info.ftime;
|
|
||||||
st->st_blksize = 512;
|
st->st_blksize = 512;
|
||||||
|
|
||||||
|
/* get st_mtime. */
|
||||||
|
{
|
||||||
|
struct tm tm_file;
|
||||||
|
int year, mon, day, hour, min, sec;
|
||||||
|
WORD tmp;
|
||||||
|
|
||||||
|
tmp = file_info.fdate;
|
||||||
|
day = tmp & 0x1F; /* bit[4:0] Day(1..31) */
|
||||||
|
tmp >>= 5;
|
||||||
|
mon = tmp & 0x0F; /* bit[8:5] Month(1..12) */
|
||||||
|
tmp >>= 4;
|
||||||
|
year = (tmp & 0x7F) + 1980; /* bit[15:9] Year origin from 1980(0..127) */
|
||||||
|
|
||||||
|
tmp = file_info.ftime;
|
||||||
|
sec = (tmp & 0x1F) * 2; /* bit[4:0] Second/2(0..29) */
|
||||||
|
tmp >>= 5;
|
||||||
|
min = tmp & 0x3F; /* bit[10:5] Minute(0..59) */
|
||||||
|
tmp >>= 6;
|
||||||
|
hour = tmp & 0x1F; /* bit[15:11] Hour(0..23) */
|
||||||
|
|
||||||
|
memset(&tm_file, 0, sizeof(tm_file));
|
||||||
|
tm_file.tm_year = year - 1900; /* Years since 1900 */
|
||||||
|
tm_file.tm_mon = mon - 1; /* Months *since* january: 0-11 */
|
||||||
|
tm_file.tm_mday = day; /* Day of the month: 1-31 */
|
||||||
|
tm_file.tm_hour = hour; /* Hours since midnight: 0-23 */
|
||||||
|
tm_file.tm_min = min; /* Minutes: 0-59 */
|
||||||
|
tm_file.tm_sec = sec; /* Seconds: 0-59 */
|
||||||
|
|
||||||
|
st->st_mtime = mktime(&tm_file);
|
||||||
|
} /* get st_mtime. */
|
||||||
}
|
}
|
||||||
|
|
||||||
#if _USE_LFN
|
#if _USE_LFN
|
||||||
|
|
Loading…
Reference in New Issue