diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-10-20 09:33:34 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-10-23 10:21:25 +0200 |
commit | a7eaaae85b9b536b4d77c86e39c138d7c4f8f8fc (patch) | |
tree | e345db37897c534dd4885276695f8a7492af1a4d /cpukit/libfs/src/dosfs/msdos_create.c | |
parent | bsp/stm32f4: Add header files (diff) | |
download | rtems-a7eaaae85b9b536b4d77c86e39c138d7c4f8f8fc.tar.bz2 |
dosfs: Support ctime and mtime
Implement ctime and mtime updates according to POSIX. The ctime is
mapped to the FAT create time and date. The mtime is mapped to the FAT
last modified time and date. For the atime use the mtime for
simplicity.
Diffstat (limited to 'cpukit/libfs/src/dosfs/msdos_create.c')
-rw-r--r-- | cpukit/libfs/src/dosfs/msdos_create.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/cpukit/libfs/src/dosfs/msdos_create.c b/cpukit/libfs/src/dosfs/msdos_create.c index 735e053c7f..9eab2fb2cb 100644 --- a/cpukit/libfs/src/dosfs/msdos_create.c +++ b/cpukit/libfs/src/dosfs/msdos_create.c @@ -70,7 +70,7 @@ msdos_creat_node(const rtems_filesystem_location_info_t *parent_loc, msdos_fs_info_t *fs_info = parent_loc->mt_entry->fs_info; fat_file_fd_t *parent_fat_fd = parent_loc->node_access; fat_file_fd_t *fat_fd = NULL; - time_t time_ret = 0; + time_t now; uint16_t time_val = 0; uint16_t date = 0; fat_dir_pos_t dir_pos; @@ -102,11 +102,10 @@ msdos_creat_node(const rtems_filesystem_location_info_t *parent_loc, *MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE; /* set up last write date and time */ - time_ret = time(NULL); - if ( time_ret == -1 ) - return -1; + now = time(NULL); + fat_file_set_ctime_mtime(parent_fat_fd, now); - msdos_date_unix2dos(time_ret, &date, &time_val); + msdos_date_unix2dos(now, &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); @@ -192,6 +191,7 @@ msdos_creat_node(const rtems_filesystem_location_info_t *parent_loc, fat_fd->fat_file_size = 0; fat_fd->fat_file_type = FAT_DIRECTORY; fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT; + fat_file_set_ctime_mtime(fat_fd, now); /* * dot and dotdot entries are identical to new node except the @@ -260,7 +260,7 @@ msdos_creat_node(const rtems_filesystem_location_info_t *parent_loc, } /* write first cluster num of a new directory to disk */ - rc = msdos_set_first_cluster_num(parent_loc->mt_entry, fat_fd); + rc = fat_file_write_first_cluster_num(&fs_info->fat, fat_fd); if (rc != RC_OK) goto error; |