root/usr/src/grub/grub-0.97/stage2/disk_inode_ffs.h
/* 
 * Mach Operating System
 * Copyright (c) 1991,1990 Carnegie Mellon University
 * All Rights Reserved.
 * 
 * Permission to use, copy, modify and distribute this software and its
 * documentation is hereby granted, provided that both the copyright
 * notice and this permission notice appear in all copies of the
 * software, derivative works or modified versions, and any portions
 * thereof, and that both notices appear in supporting documentation.
 * 
 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
 * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
 * 
 * Carnegie Mellon requests users of this software to return to
 * 
 *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
 *  School of Computer Science
 *  Carnegie Mellon University
 *  Pittsburgh PA 15213-3890
 * 
 * any improvements or extensions that they make and grant Carnegie Mellon
 * the rights to redistribute these changes.
 */
/*
 * Copyright (c) 1982, 1989 The Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the University of California, Berkeley.  The name of the
 * University may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 *      @(#)inode.h     7.5 (Berkeley) 7/3/89
 */

#ifndef _BOOT_UFS_DISK_INODE_FFS_H_
#define _BOOT_UFS_DISK_INODE_FFS_H_

#define NDADDR  FFS_NDADDR
#define NIADDR  FFS_NIADDR

#define MAX_FASTLINK_SIZE       FFS_MAX_FASTLINK_SIZE

#define IC_FASTLINK     0x0001  /* Symbolic link in inode */

#define i_mode          ic_mode
#define i_nlink         ic_nlink
#define i_uid           ic_uid
#define i_gid           ic_gid
#if     defined(BYTE_MSF) && BYTE_MSF
#define i_size          ic_size.val[1]
#else /* BYTE_LSF */
#define i_size          ic_size.val[0]
#endif
#define i_db            ic_db
#define i_ib            ic_ib
#define i_atime         ic_atime
#define i_mtime         ic_mtime
#define i_ctime         ic_ctime
#define i_blocks        ic_blocks
#define i_rdev          ic_db[0]
#define i_symlink       ic_symlink
#define i_flags         ic_flags
#define i_gen           ic_gen

/* modes */
#define IFMT    0xf000          /* type of file */
#define IFCHR   0x2000          /* character special */
#define IFDIR   0x4000          /* directory */
#define IFBLK   0x6000          /* block special */
#define IFREG   0x8000          /* regular */
#define IFLNK   0xa000          /* symbolic link */
#define IFSOCK  0xc000          /* socket */


#define ISUID           0x0800  /* set user id on execution */
#define ISGID           0x0400  /* set group id on execution */
#define ISVTX           0x0200  /* save swapped text even after use */
#define IREAD           0x0100  /* read, write, execute permissions */
#define IWRITE          0x0080
#define IEXEC           0x0040

#ifdef EEK
#define f_fs            u.ffs.ffs_fs
#define i_ic            u.ffs.ffs_ic
#define f_nindir        u.ffs.ffs_nindir
#define f_blk           u.ffs.ffs_blk
#define f_blksize       u.ffs.ffs_blksize
#define f_blkno         u.ffs.ffs_blkno
#endif /* EEK */

#endif  /* _BOOT_UFS_DISK_INODE_FFS_H_ */