svn commit: r334868 - head/stand/libsa

Simon J. Gerraty sjg at FreeBSD.org
Sat Jun 9 02:41:52 UTC 2018


Author: sjg
Date: Sat Jun  9 02:41:51 2018
New Revision: 334868
URL: https://svnweb.freebsd.org/changeset/base/334868

Log:
  Add st_mtime, st_ino and st_dev for ufs_stat
  
  Differential Revision:	D15064

Modified:
  head/stand/libsa/ufs.c

Modified: head/stand/libsa/ufs.c
==============================================================================
--- head/stand/libsa/ufs.c	Sat Jun  9 02:25:18 2018	(r334867)
+++ head/stand/libsa/ufs.c	Sat Jun  9 02:41:51 2018	(r334868)
@@ -124,6 +124,7 @@ struct file {
 	ufs2_daddr_t	f_buf_blkno;	/* block number of data block */
 	char		*f_buf;		/* buffer for data block */
 	size_t		f_buf_size;	/* size of data block */
+	int		f_inumber;	/* inumber */
 };
 #define DIP(fp, field) \
 	((fp)->f_fs->fs_magic == FS_UFS1_MAGIC ? \
@@ -190,6 +191,7 @@ read_inode(inumber, f)
 		fp->f_buf_blkno = -1;
 	}
 	fp->f_seekp = 0;
+	fp->f_inumber = inumber;
 out:
 	free(buf);
 	return (rc);	 
@@ -836,6 +838,20 @@ ufs_stat(f, sb)
 	sb->st_uid = DIP(fp, di_uid);
 	sb->st_gid = DIP(fp, di_gid);
 	sb->st_size = DIP(fp, di_size);
+	sb->st_mtime = DIP(fp, di_mtime);
+	/*
+	 * The items below are ufs specific!
+	 * Other fs types will need their own solution
+	 * if these fields are needed.
+	 */
+	sb->st_ino = fp->f_inumber;
+	/*
+	 * We need something to differentiate devs.
+	 * fs_id is unique but 64bit, we xor the two
+	 * halves to squeeze it into 32bits.
+	 */
+	sb->st_dev = (dev_t)(fp->f_fs->fs_id[0] ^ fp->f_fs->fs_id[1]);
+
 	return (0);
 }
 


More information about the svn-src-head mailing list