* 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:
Sebastian Huber
2010-12-27 14:35:13 +00:00
parent 9f82dfb799
commit 45edf78e36
4 changed files with 14 additions and 6 deletions
+6
View File
@@ -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>
+1
View File
@@ -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
+3 -4
View File
@@ -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;
+4 -2
View File
@@ -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;