diff --git a/sys/fs/ufs/ufs.c b/sys/fs/ufs/ufs.c index e91b2cf..6aa045d 100644 --- a/sys/fs/ufs/ufs.c +++ b/sys/fs/ufs/ufs.c @@ -137,11 +137,11 @@ #else if (fs->fs_magic == FS_UFS1_MAGIC) { dp1 = ((struct ufs1_dinode *) blkbuf)[n]; - memcpy(fd->inode.ufs1, dp1, sizeof(struct ufs1_dinode)); + memcpy(&fd->inode.ufs1, &dp1, sizeof(struct ufs1_dinode)); } else{ dp2 = ((struct ufs2_dinode *) blkbuf)[n]; - memcpy(fd->inode.ufs2, dp2, sizeof(struct ufs2_dinode)); + memcpy(&fd->inode.ufs2, &dp2, sizeof(struct ufs2_dinode)); } #endif inomap = inode; @@ -260,7 +260,7 @@ break; path = s; } - + return ino; return dt == DT_REG ? ino : 0; } diff --git a/sys/fs/vfs/stat.c b/sys/fs/vfs/stat.c index 3403547..a0175e2 100644 --- a/sys/fs/vfs/stat.c +++ b/sys/fs/vfs/stat.c @@ -31,7 +31,8 @@ break; } */ - fileDescriptor *fd = fopen(path, "r"); + fileDescriptor *fd = fopen(path, "rb"); + kprintf("FD: 0x%X", fd); if (fd == 0) { error -1; @@ -39,15 +40,15 @@ else { sb->st_dev = 0xDEADBEEF; sb->st_ino = fd->ino; - sb->st_mode = fd->inode.ufs2->di_mode; - sb->st_nlink = fd->inode.ufs2->di_nlink; - sb->st_uid = fd->inode.ufs2->di_uid; - sb->st_gid = fd->inode.ufs2->di_gid; + sb->st_mode = fd->inode.ufs2.di_mode; + sb->st_nlink = fd->inode.ufs2.di_nlink; + sb->st_uid = fd->inode.ufs2.di_uid; + sb->st_gid = fd->inode.ufs2.di_gid; sb->st_rdev = 0xBEEFDEAD; - sb->st_size = fd->inode.ufs2->di_size; - sb->st_atime = fd->inode.ufs2->di_atime; - sb->st_mtime = fd->inode.ufs2->di_mtime; - sb->st_ctime = fd->inode.ufs2->di_ctime; + sb->st_size = fd->inode.ufs2.di_size; + sb->st_atime = fd->inode.ufs2.di_atime; + sb->st_mtime = fd->inode.ufs2.di_mtime; + sb->st_ctime = fd->inode.ufs2.di_ctime; kprintf("LSTAT(%i): st_ino 0x%X, st_mode: 0x%X, st_uid %i, st_gid %i, st_size: 0x%X", error, sb->st_ino, sb->st_mode, sb->st_uid, sb->st_gid, sb->st_size); fclose(fd); } diff --git a/sys/include/ufs/ufs.h b/sys/include/ufs/ufs.h index e17c93c..8667d28 100644 --- a/sys/include/ufs/ufs.h +++ b/sys/include/ufs/ufs.h @@ -31,7 +31,6 @@ #define _UFS_H #include -#include #include #define DT_REG 8 diff --git a/sys/include/vfs/file.h b/sys/include/vfs/file.h index 149ef73..0e38c48 100644 --- a/sys/include/vfs/file.h +++ b/sys/include/vfs/file.h @@ -28,6 +28,7 @@ #include #include #include +#include /* HACK */ int getchar(); @@ -71,6 +72,7 @@ struct ufs1_dinode ufs1; struct ufs2_dinode ufs2; } inode; + } fileDescriptor; diff --git a/sys/include/vfs/vfs.h b/sys/include/vfs/vfs.h index ddec899..4ce3476 100644 --- a/sys/include/vfs/vfs.h +++ b/sys/include/vfs/vfs.h @@ -99,7 +99,7 @@ #include #include -#include +//#include struct super_operations { void (*read_inode) (struct inode *); @@ -128,8 +128,10 @@ struct wait_queue * s_wait; union { struct msdos_sb_info msdos_sb; +/* struct fs ufs1_sb; struct fs ufs2_sb; +*/ } u; }; @@ -168,8 +170,10 @@ union { struct pipe_inode_info pipe_i; struct msdos_inode_info msdos_i; +/* struct ufs1_dinode ufs1_i; struct ufs2_dinode ufs2_i; +*/ } u; };