diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-12-27 14:35:13 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-12-27 14:35:13 +0000 |
commit | 45edf78e3675fbf924ed72b175e2b4cf7932da08 (patch) | |
tree | 139b31bf2c996e40d47e51dd2d7a20b27ff2e2e9 /cpukit/libfs | |
parent | Remove. (diff) | |
download | rtems-45edf78e3675fbf924ed72b175e2b4cf7932da08.tar.bz2 |
2010-12-27 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libfs/src/dosfs/msdos.h, libfs/src/dosfs/msdos_misc.c,
libfs/src/dosfs/msdos_create.c: Create valid create and modfied date
and time.
Diffstat (limited to 'cpukit/libfs')
-rw-r--r-- | cpukit/libfs/src/dosfs/msdos.h | 1 | ||||
-rw-r--r-- | cpukit/libfs/src/dosfs/msdos_create.c | 7 | ||||
-rw-r--r-- | cpukit/libfs/src/dosfs/msdos_misc.c | 6 |
3 files changed, 8 insertions, 6 deletions
diff --git a/cpukit/libfs/src/dosfs/msdos.h b/cpukit/libfs/src/dosfs/msdos.h index 04814761d0..696dac37cf 100644 --- a/cpukit/libfs/src/dosfs/msdos.h +++ b/cpukit/libfs/src/dosfs/msdos.h @@ -112,6 +112,7 @@ typedef rtems_filesystem_node_types_t msdos_node_type_t; #define MSDOS_FIRST_CLUSTER_LOW_OFFSET 26 #define MSDOS_FILE_WDATE_OFFSET 24 #define MSDOS_FILE_WTIME_OFFSET 22 +#define MSDOS_FILE_ADATE_OFFSET 18 /* * Possible values of DIR_Attr field of 32 bytes long FAT Directory Entry diff --git a/cpukit/libfs/src/dosfs/msdos_create.c b/cpukit/libfs/src/dosfs/msdos_create.c index d4fc737d95..ec5862a178 100644 --- a/cpukit/libfs/src/dosfs/msdos_create.c +++ b/cpukit/libfs/src/dosfs/msdos_create.c @@ -96,8 +96,11 @@ msdos_creat_node(rtems_filesystem_location_info_t *parent_loc, return -1; msdos_date_unix2dos(time_ret, &date, &time_val); + *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val); + *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date); *MSDOS_DIR_WRITE_TIME(short_node) = CT_LE_W(time_val); *MSDOS_DIR_WRITE_DATE(short_node) = CT_LE_W(date); + *MSDOS_DIR_LAST_ACCESS_DATE(short_node) = CT_LE_W(date); /* initialize directory/file size */ *MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE; @@ -146,10 +149,6 @@ msdos_creat_node(rtems_filesystem_location_info_t *parent_loc, * set "archive bit" due to changes */ *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE; - /* - * set "last access" date to today - */ - *MSDOS_DIR_LAST_ACCESS_DATE(short_node) = CT_LE_W(date); } else { /* regular file... */ *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE; diff --git a/cpukit/libfs/src/dosfs/msdos_misc.c b/cpukit/libfs/src/dosfs/msdos_misc.c index 864025ff10..d8a7773090 100644 --- a/cpukit/libfs/src/dosfs/msdos_misc.c +++ b/cpukit/libfs/src/dosfs/msdos_misc.c @@ -718,7 +718,7 @@ msdos_set_dir_wrt_time_and_date( fat_file_fd_t *fat_fd ) { - ssize_t ret1 = 0, ret2 = 0; + ssize_t ret1 = 0, ret2 = 0, ret3 = 0; msdos_fs_info_t *fs_info = mt_entry->fs_info; uint16_t time_val; uint16_t date; @@ -742,8 +742,10 @@ msdos_set_dir_wrt_time_and_date( date = CT_LE_W(date); ret2 = _fat_block_write(mt_entry, sec, byte + MSDOS_FILE_WDATE_OFFSET, 2, (char *)(&date)); + ret3 = _fat_block_write(mt_entry, sec, byte + MSDOS_FILE_ADATE_OFFSET, + 2, (char *)(&date)); - if ( (ret1 < 0) || (ret2 < 0) ) + if ( (ret1 < 0) || (ret2 < 0) || (ret3 < 0) ) return -1; return RC_OK; |