readufs.h revision 1.2
1/* from Id: readufs.h,v 1.7 2002/01/26 15:55:51 itohy Exp */ 2 3/* 4 * Written by ITOH, Yasufumi (itohy@netbsd.org) 5 * Public domain. 6 */ 7 8#include <ufs/ufs/dir.h> 9 10/* 11 * filesystem information 12 */ 13struct ufs_info { 14 enum ufs_fstype { 15 UFSTYPE_UNKNOWN 16#ifdef USE_FFS 17 , UFSTYPE_FFS 18#endif 19#ifdef USE_LFS 20 , UFSTYPE_LFS 21#endif 22 } fstype; 23 int (*get_inode) __P((ino_t ino, struct dinode *dibuf)); 24 25 /* superblock information */ 26 u_int32_t bsize; /* fs block size */ 27 u_int32_t nindir; /* # indirect per block */ 28 u_int32_t fsbtodb; /* block -> sector shift count */ 29 union { 30#ifdef USE_FFS 31 struct { 32 ufs_daddr_t iblkno; /* inode-block offset */ 33 int32_t cgoffset; /* cylinder group offset */ 34 int32_t cgmask; /* cylinder group mask */ 35 int32_t fragshift; /* block to fragmentation */ 36 int32_t inopb; /* # inodes per block */ 37 int32_t ipg; /* # inodes per group */ 38 int32_t fpg; /* # inodes per group * frag */ 39 } u_ffs; 40#endif 41#ifdef USE_LFS 42 struct { 43 u_int32_t version; /* LFS version # */ 44 ufs_daddr_t idaddr; /* ifile inode disk address */ 45 u_int32_t inopb; /* inodes per block (v1) */ 46 /* inodes per frag (v2) */ 47 u_int32_t ifpb; /* inode addrs / ifile block */ 48 u_int32_t ioffset; /* start of inode in ifile */ 49 /* (in sector) */ 50 u_int32_t ibsize; /* size of inode block */ 51 } u_lfs; 52#endif 53 } fs_u; 54}; 55 56extern struct ufs_info ufs_info; 57#define ufs_get_inode(ino, di) ((*ufs_info.get_inode)((ino), (di))) 58 59void RAW_READ __P((void *buf, ufs_daddr_t blkpos, size_t bytelen)); 60 61size_t ufs_read __P((struct dinode *di, void *buf, unsigned off, size_t count)); 62ino_t ufs_lookup __P((ino_t dirino, const char *fn)); 63ino_t ufs_lookup_path __P((const char *path)); 64size_t ufs_load_file __P((void *buf, ino_t dirino, const char *fn)); 65int ufs_init __P((void)); 66 67#ifdef USE_FFS 68int try_ffs __P((void)); 69#endif 70 71#ifdef USE_LFS 72int try_lfs __P((void)); 73#endif 74 75#ifdef DEBUG_WITH_STDIO 76#include <fcntl.h> 77#include <err.h> 78#include <stdio.h> 79#include <unistd.h> 80#include <stdlib.h> 81#endif 82