mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-08-26 17:43:31 +08:00
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.
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
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.
|
||||
|
||||
2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
|
||||
Jennifer Averett <jennifer.averett@oarcorp.com>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user