xref: /dflybsd-src/usr.bin/fstat/ext2fs.c (revision fcfd9e22061b8fa31303c1c21a9241afe7077238)
14dde37f7SAntonio Huete Jimenez /*
24dde37f7SAntonio Huete Jimenez  * Copyright (c) 2013 The DragonFly Project.  All rights reserved.
34dde37f7SAntonio Huete Jimenez  *
44dde37f7SAntonio Huete Jimenez  * Redistribution and use in source and binary forms, with or without
54dde37f7SAntonio Huete Jimenez  * modification, are permitted provided that the following conditions
64dde37f7SAntonio Huete Jimenez  * are met:
74dde37f7SAntonio Huete Jimenez  *
84dde37f7SAntonio Huete Jimenez  * 1. Redistributions of source code must retain the above copyright
94dde37f7SAntonio Huete Jimenez  *    notice, this list of conditions and the following disclaimer.
104dde37f7SAntonio Huete Jimenez  * 2. Redistributions in binary form must reproduce the above copyright
114dde37f7SAntonio Huete Jimenez  *    notice, this list of conditions and the following disclaimer in
124dde37f7SAntonio Huete Jimenez  *    the documentation and/or other materials provided with the
134dde37f7SAntonio Huete Jimenez  *    distribution.
144dde37f7SAntonio Huete Jimenez  * 3. Neither the name of The DragonFly Project nor the names of its
154dde37f7SAntonio Huete Jimenez  *    contributors may be used to endorse or promote products derived
164dde37f7SAntonio Huete Jimenez  *    from this software without specific, prior written permission.
174dde37f7SAntonio Huete Jimenez  *
184dde37f7SAntonio Huete Jimenez  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
194dde37f7SAntonio Huete Jimenez  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
204dde37f7SAntonio Huete Jimenez  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
214dde37f7SAntonio Huete Jimenez  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
224dde37f7SAntonio Huete Jimenez  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
234dde37f7SAntonio Huete Jimenez  * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
244dde37f7SAntonio Huete Jimenez  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
254dde37f7SAntonio Huete Jimenez  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
264dde37f7SAntonio Huete Jimenez  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
274dde37f7SAntonio Huete Jimenez  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
284dde37f7SAntonio Huete Jimenez  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
294dde37f7SAntonio Huete Jimenez  * SUCH DAMAGE.
304dde37f7SAntonio Huete Jimenez  */
314dde37f7SAntonio Huete Jimenez 
324dde37f7SAntonio Huete Jimenez #define _KERNEL_STRUCTURES
334dde37f7SAntonio Huete Jimenez #include <sys/vnode.h>
344dde37f7SAntonio Huete Jimenez #include <sys/mount.h>
35*fcfd9e22STomohiro Kusumi #include <vfs/ext2fs/inode.h>
36*fcfd9e22STomohiro Kusumi #define VTOI(vp)	((struct inode *)(vp)->v_data)
374dde37f7SAntonio Huete Jimenez #undef _KERNEL_STRUCTURES
384dde37f7SAntonio Huete Jimenez 
394dde37f7SAntonio Huete Jimenez #include <stdio.h>
404dde37f7SAntonio Huete Jimenez #include <kvm.h>
414dde37f7SAntonio Huete Jimenez 
424dde37f7SAntonio Huete Jimenez #include "fstat.h"
434dde37f7SAntonio Huete Jimenez 
444dde37f7SAntonio Huete Jimenez int
ext2fs_filestat(struct vnode * vp,struct filestat * fsp)45ed63e0ebSSascha Wildner ext2fs_filestat(struct vnode *vp, struct filestat *fsp)
464dde37f7SAntonio Huete Jimenez {
474dde37f7SAntonio Huete Jimenez 	struct inode ino;
484dde37f7SAntonio Huete Jimenez 
494dde37f7SAntonio Huete Jimenez 	if (!kread(VTOI(vp), &ino, sizeof(ino))) {
504dde37f7SAntonio Huete Jimenez 		dprintf(stderr, "can't read inode at %p for pid %d\n",
514dde37f7SAntonio Huete Jimenez 		    (void *)VTOI(vp), Pid);
524dde37f7SAntonio Huete Jimenez 		return 0;
534dde37f7SAntonio Huete Jimenez 	}
543909f163SSascha Wildner 	fsp->mode = ino.i_mode | mtrans(vp->v_type);
55a9871e48Szrj 	fsp->rdev = fsp->fsid = fstat_dev2udev(ino.i_dev);
56*fcfd9e22STomohiro Kusumi 	fsp->size = ino.i_size;
574dde37f7SAntonio Huete Jimenez 	fsp->fileid = ino.i_number;
584dde37f7SAntonio Huete Jimenez 
594dde37f7SAntonio Huete Jimenez 	return 1;
604dde37f7SAntonio Huete Jimenez }
61