From ad5d4c9944c8f700674ddea85deb759b998d03bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 30 Jun 2015 13:27:02 +0200 Subject: [PATCH] fat: Cleared the confusion between ctime, and crtime... ... the previous commit introduced. * Minor cleanup, disabled the useless fs_ioctl() function. * This closes #11120. --- src/add-ons/kernel/file_systems/fat/dir.c | 20 +++++----- src/add-ons/kernel/file_systems/fat/dosfs.c | 44 +++++++-------------- src/add-ons/kernel/file_systems/fat/dosfs.h | 2 +- src/add-ons/kernel/file_systems/fat/file.c | 20 +++++----- 4 files changed, 36 insertions(+), 50 deletions(-) diff --git a/src/add-ons/kernel/file_systems/fat/dir.c b/src/add-ons/kernel/file_systems/fat/dir.c index cae6b234e8..8fcf8bcabc 100644 --- a/src/add-ons/kernel/file_systems/fat/dir.c +++ b/src/add-ons/kernel/file_systems/fat/dir.c @@ -49,7 +49,7 @@ struct _dirent_info_ { uint32 cluster; uint32 size; uint32 time; - uint32 ctime; + uint32 creation_time; }; @@ -191,12 +191,12 @@ _next_dirent_(struct diri *iter, struct _dirent_info_ *oinfo, char *filename, oinfo->sindex = start_index; oinfo->eindex = iter->current_index; oinfo->mode = buffer[0xb]; - oinfo->cluster = read16(buffer,0x1a); + oinfo->cluster = read16(buffer, 0x1a); if (iter->csi.vol->fat_bits == 32) - oinfo->cluster += 0x10000*read16(buffer,0x14); - oinfo->size = read32(buffer,0x1c); - oinfo->time = read32(buffer,0x16); - oinfo->ctime = read32(buffer,0x0e); + oinfo->cluster += 0x10000 * read16(buffer, 0x14); + oinfo->size = read32(buffer, 0x1c); + oinfo->time = read32(buffer, 0x16); + oinfo->creation_time = read32(buffer, 0x0e); } diri_next_entry(iter); @@ -584,7 +584,7 @@ struct _entry_info_ { uint32 cluster; uint32 size; time_t time; - time_t ctime; + time_t creation_time; }; @@ -740,7 +740,7 @@ _create_dir_entry_(nspace *vol, vnode *dir, struct _entry_info_ *info, memcpy(buffer, nshort, 11); buffer[0x0b] = info->mode; memset(buffer+0xc, 0, 0x16-0xc); - i = time_t2dos(info->ctime); + i = time_t2dos(info->creation_time); buffer[0x0e] = i & 0xff; buffer[0x0f] = (i >> 8) & 0xff; buffer[0x10] = (i >> 16) & 0xff; @@ -923,7 +923,7 @@ create_dir_entry(nspace *vol, vnode *dir, vnode *node, const char *name, info.cluster = node->cluster; info.size = node->st_size; info.time = node->st_time; - info.ctime = node->st_ctim; + info.creation_time = node->st_crtim; return _create_dir_entry_(vol, dir, &info, (char *)nshort, (char *)nlong, len, ns, ne); @@ -1040,7 +1040,7 @@ dosfs_read_vnode(fs_volume *_vol, ino_t vnid, fs_vnode *_node, int *_type, } else entry->end_cluster = 0; entry->st_time = dos2time_t(info.time); - entry->st_ctim = dos2time_t(info.ctime); + entry->st_crtim = dos2time_t(info.creation_time); #if TRACK_FILENAME entry->filename = malloc(sizeof(filename) + 1); if (entry->filename) strcpy(entry->filename, filename); diff --git a/src/add-ons/kernel/file_systems/fat/dosfs.c b/src/add-ons/kernel/file_systems/fat/dosfs.c index 9b5a174f7e..fdf86edc35 100644 --- a/src/add-ons/kernel/file_systems/fat/dosfs.c +++ b/src/add-ons/kernel/file_systems/fat/dosfs.c @@ -664,7 +664,7 @@ mount_fat_disk(const char *path, fs_volume *_vol, const int flags, vol->root_vnode.sindex = vol->root_vnode.eindex = 0xffffffff; vol->root_vnode.mode = FAT_SUBDIR; time(&(vol->root_vnode.st_time)); - vol->root_vnode.st_ctim = vol->root_vnode.st_time; + vol->root_vnode.st_crtim = vol->root_vnode.st_time; vol->root_vnode.mime = NULL; vol->root_vnode.dirty = false; dlist_add(vol, vol->root_vnode.vnid); @@ -1151,6 +1151,7 @@ bi: UNLOCK_VOL(vol); } +#if 0 static status_t dosfs_ioctl(fs_volume *_vol, fs_vnode *_node, void *cookie, uint32 code, void *buf, size_t len) @@ -1159,24 +1160,11 @@ dosfs_ioctl(fs_volume *_vol, fs_vnode *_node, void *cookie, uint32 code, nspace *vol = (nspace *)_vol->private_volume; vnode *node = (vnode *)_node->private_node; - TOUCH(cookie); TOUCH(buf); TOUCH(len); + TOUCH(cookie); TOUCH(len); LOCK_VOL(vol); switch (code) { - case 10002 : /* return real creation time */ - if (buf) *(bigtime_t *)buf = node->st_ctim; - break; - case 10003 : /* return real last modification time */ - if (buf) *(bigtime_t *)buf = node->st_time; - break; - -#if 0 - /*case 69666 : - result = fragment(vol, buf); - break; - */ - case 100000 : dprintf("built at %s on %s\n", build_time, build_date); dprintf("vol info: %s (device %x, media descriptor %x)\n", vol->device, vol->fd, vol->media_descriptor); @@ -1213,11 +1201,9 @@ dosfs_ioctl(fs_volume *_vol, fs_vnode *_node, void *cookie, uint32 code, case 100003 : dprintf("vcache validation not yet implemented\n"); -#if 0 dprintf("validating vcache for %lx\n", vol->id); validate_vcache(vol); dprintf("validation complete for %lx\n", vol->id); -#endif break; case 100004 : @@ -1229,7 +1215,6 @@ dosfs_ioctl(fs_volume *_vol, fs_vnode *_node, void *cookie, uint32 code, dprintf("dumping dlist for %lx\n", vol->id); dlist_dump(vol); break; -#endif default : DPRINTF(0, ("dosfs_ioctl: vol %" B_PRIdDEV ", vnode %" B_PRIdINO @@ -1242,6 +1227,7 @@ dosfs_ioctl(fs_volume *_vol, fs_vnode *_node, void *cookie, uint32 code, return result; } +#endif status_t @@ -1349,23 +1335,23 @@ fs_vnode_ops gFATVnodeOps = { &dosfs_get_file_map, - &dosfs_ioctl, - NULL, //&fs_set_flags, - NULL, //&fs_select - NULL, //&fs_deselect + NULL, // fs_ioctl() + NULL, // fs_set_flags, + NULL, // fs_select + NULL, // fs_deselect &dosfs_fsync, &dosfs_readlink, - NULL, //&fs_create_symlink, + NULL, // fs_create_symlink, - NULL, //&fs_link, + NULL, // fs_link, &dosfs_unlink, &dosfs_rename, &dosfs_access, &dosfs_rstat, &dosfs_wstat, - NULL, // &fs_preallocate, + NULL, // fs_preallocate, /* file operations */ &dosfs_create, @@ -1392,7 +1378,7 @@ fs_vnode_ops gFATVnodeOps = { &dosfs_rewind_attrdir, /* attribute operations */ - NULL, //&fs_create_attr, + NULL, // fs_create_attr, &dosfs_open_attr, &dosfs_close_attr, &dosfs_free_attr_cookie, @@ -1400,9 +1386,9 @@ fs_vnode_ops gFATVnodeOps = { &dosfs_write_attr, &dosfs_read_attr_stat, - NULL, //&fs_write_attr_stat, - NULL, //&fs_rename_attr, - NULL, //&fs_remove_attr, + NULL, // fs_write_attr_stat, + NULL, // fs_rename_attr, + NULL, // fs_remove_attr, }; diff --git a/src/add-ons/kernel/file_systems/fat/dosfs.h b/src/add-ons/kernel/file_systems/fat/dosfs.h index 99e5e44139..fd88e3ccd8 100644 --- a/src/add-ons/kernel/file_systems/fat/dosfs.h +++ b/src/add-ons/kernel/file_systems/fat/dosfs.h @@ -86,7 +86,7 @@ typedef struct vnode { uint32 mode; // dos-style attributes off_t st_size; // in bytes time_t st_time; - time_t st_ctim; + time_t st_crtim; uint32 end_cluster; // last cluster of the data diff --git a/src/add-ons/kernel/file_systems/fat/file.c b/src/add-ons/kernel/file_systems/fat/file.c index 4d2f385d97..9f21197882 100644 --- a/src/add-ons/kernel/file_systems/fat/file.c +++ b/src/add-ons/kernel/file_systems/fat/file.c @@ -95,7 +95,7 @@ status_t write_vnode_entry(nspace *vol, vnode *node) buffer[0x0b] = node->mode; // file attributes memset(buffer+0xc, 0, 0x16-0xc); - i = time_t2dos(node->st_ctim); + i = time_t2dos(node->st_crtim); buffer[0x0e] = i & 0xff; buffer[0x0f] = (i >> 8) & 0xff; buffer[0x10] = (i >> 16) & 0xff; @@ -188,9 +188,9 @@ dosfs_rstat(fs_volume *_vol, fs_vnode *_node, struct stat *st) st->st_blksize = 0x10000; /* this value was chosen arbitrarily */ st->st_atim.tv_sec = st->st_mtim.tv_sec = st->st_ctim.tv_sec = node->st_time; + st->st_crtim.tv_sec = node->st_crtim; st->st_atim.tv_nsec = st->st_mtim.tv_nsec = st->st_ctim.tv_nsec = st->st_crtim.tv_nsec = 0; - st->st_crtim.tv_sec = node->st_ctim; UNLOCK_VOL(vol); @@ -223,7 +223,7 @@ dosfs_wstat(fs_volume *_vol, fs_vnode *_node, const struct stat *st, return EPERM; } - if (mask & B_STAT_MODE) { + if ((mask & B_STAT_MODE) != 0) { DPRINTF(0, ("setting file mode to %o\n", st->st_mode)); if (st->st_mode & S_IWUSR) node->mode &= ~FAT_READ_ONLY; @@ -232,7 +232,7 @@ dosfs_wstat(fs_volume *_vol, fs_vnode *_node, const struct stat *st, dirty = true; } - if (mask & B_STAT_SIZE) { + if ((mask & B_STAT_SIZE) != 0) { DPRINTF(0, ("setting file size to %" B_PRIdOFF "\n", st->st_size)); if (node->mode & FAT_SUBDIR) { dprintf("dosfs_wstat: can't set file size of directory!\n"); @@ -256,7 +256,7 @@ dosfs_wstat(fs_volume *_vol, fs_vnode *_node, const struct stat *st, } } - if (mask & B_STAT_MODIFICATION_TIME) { + if ((mask & B_STAT_MODIFICATION_TIME) != 0) { DPRINTF(0, ("setting modification time\n")); if ((node->mode & FAT_SUBDIR) == 0) node->mode |= FAT_ARCHIVE; @@ -264,11 +264,11 @@ dosfs_wstat(fs_volume *_vol, fs_vnode *_node, const struct stat *st, dirty = true; } - if (mask & B_STAT_CREATION_TIME) { + if ((mask & B_STAT_CREATION_TIME) != 0) { DPRINTF(0, ("setting creation time\n")); // As a file's modification time is also set when it is created, // the archive bit should be set automatically. - node->st_ctim = st->st_crtime; + node->st_crtim = st->st_crtime; dirty = true; } @@ -832,7 +832,7 @@ dosfs_create(fs_volume *_vol, fs_vnode *_dir, const char *name, int omode, dummy.mode = 0; dummy.st_size = 0; time(&(dummy.st_time)); - dummy.st_ctim = dummy.st_time; + dummy.st_crtim = dummy.st_time; if ((result = create_dir_entry(vol, dir, &dummy, name, &(dummy.sindex), &(dummy.eindex))) != B_OK) { dprintf("dosfs_create: error creating directory entry for %s (%s)\n", name, strerror(result)); @@ -935,7 +935,7 @@ dosfs_mkdir(fs_volume *_vol, fs_vnode *_dir, const char *name, int perms) } dummy.st_size = vol->bytes_per_sector*vol->sectors_per_cluster; time(&(dummy.st_time)); - dummy.st_ctim = dummy.st_time; + dummy.st_crtim = dummy.st_time; dummy.vnid = GENERATE_DIR_CLUSTER_VNID(dummy.dir_vnid, dummy.cluster); // XXX: dangerous construct @@ -976,7 +976,7 @@ dosfs_mkdir(fs_volume *_vol, fs_vnode *_dir, const char *name, int perms) buffer[0x17] = (i >> 8) & 0xff; buffer[0x18] = (i >> 16) & 0xff; buffer[0x19] = (i >> 24) & 0xff; - i = time_t2dos(dir->st_ctim); + i = time_t2dos(dir->st_crtim); buffer[0x2e] = i & 0xff; buffer[0x2f] = (i >> 8) & 0xff; buffer[0x30] = (i >> 16) & 0xff;