X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/43866e378188c25dd1e2208016ab3cbeb086ae6c..21362eb3e66fd2c787aee132bce100a44d71a99c:/bsd/isofs/cd9660/cd9660_node.h diff --git a/bsd/isofs/cd9660/cd9660_node.h b/bsd/isofs/cd9660/cd9660_node.h index 57318b873..ac703ed5d 100644 --- a/bsd/isofs/cd9660/cd9660_node.h +++ b/bsd/isofs/cd9660/cd9660_node.h @@ -1,16 +1,19 @@ /* - * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved. * - * @APPLE_LICENSE_HEADER_START@ - * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER @@ -20,7 +23,7 @@ * Please see the License for the specific language governing rights and * limitations under the License. * - * @APPLE_LICENSE_HEADER_END@ + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ /* $NetBSD: cd9660_node.h,v 1.10 1994/12/24 15:30:09 cgd Exp $ */ @@ -78,6 +81,7 @@ */ #include +#include #include #ifndef doff_t @@ -114,6 +118,7 @@ struct iso_node { struct iso_node *i_next, **i_prev; /* hash chain */ struct vnode *i_vnode; /* vnode associated with this inode */ struct vnode *i_devvp; /* vnode for block I/O */ + u_int32_t i_flag; /* flags, see below */ dev_t i_dev; /* device where inode resides */ ino_t i_number; /* the identity of the inode */ /* we use the actual starting block of the file */ @@ -123,7 +128,7 @@ struct iso_node { doff_t i_diroff; /* offset in dir, where we found last entry */ doff_t i_offset; /* offset of free space in directory */ ino_t i_ino; /* inode number of found directory */ - struct lock__bsd__ i_lock; /* Inode lock. */ + daddr_t i_lastr; /* last read (read ahead) */ long iso_extent; /* extent of file */ long i_size; long iso_start; /* actual start of data of file (may be different */ @@ -140,59 +145,74 @@ struct iso_node { u_int16_t i_FinderFlags; /* MacOS finder flags */ u_int16_t i_entries; /* count of directory entries */ + + struct riff_header *i_riff; }; #define i_forw i_chain[0] #define i_back i_chain[1] +/* These flags are kept in i_flag. */ +#define ISO_ASSOCIATED 0x0001 /* node is an associated file. */ +#define ISO_INALLOC 0x0002 +#define ISO_INWALLOC 0x0004 + /* defines VTOI and ITOV macros */ #undef VTOI #undef ITOV -#define VTOI(vp) ((struct iso_node *)(vp)->v_data) +#define VTOI(vp) ((struct iso_node *)(vnode_fsnode(vp))) #define ITOV(ip) ((ip)->i_vnode) +/* similar in as default UID and GID */ +#define ISO_UNKNOWNUID ((uid_t)99) +#define ISO_UNKNOWNGID ((gid_t)99) + +int cd9660_access_internal(vnode_t, mode_t, kauth_cred_t); + /* * Prototypes for ISOFS vnode operations */ -int cd9660_lookup __P((struct vop_lookup_args *)); -int cd9660_open __P((struct vop_open_args *)); -int cd9660_close __P((struct vop_close_args *)); -int cd9660_access __P((struct vop_access_args *)); -int cd9660_getattr __P((struct vop_getattr_args *)); -int cd9660_read __P((struct vop_read_args *)); -int cd9660_ioctl __P((struct vop_ioctl_args *)); -int cd9660_select __P((struct vop_select_args *)); -int cd9660_mmap __P((struct vop_mmap_args *)); -int cd9660_seek __P((struct vop_seek_args *)); -int cd9660_readdir __P((struct vop_readdir_args *)); -int cd9660_readlink __P((struct vop_readlink_args *)); -int cd9660_abortop __P((struct vop_abortop_args *)); -int cd9660_inactive __P((struct vop_inactive_args *)); -int cd9660_reclaim __P((struct vop_reclaim_args *)); -int cd9660_bmap __P((struct vop_bmap_args *)); -int cd9660_lock __P((struct vop_lock_args *)); -int cd9660_unlock __P((struct vop_unlock_args *)); -int cd9660_strategy __P((struct vop_strategy_args *)); -int cd9660_print __P((struct vop_print_args *)); -int cd9660_islocked __P((struct vop_islocked_args *)); -int cd9660_pathconf __P((struct vop_pathconf_args *)); -int cd9660_blkatoff __P((struct vop_blkatoff_args *)); - -void cd9660_defattr __P((struct iso_directory_record *, - struct iso_node *, struct buf *)); -void cd9660_deftstamp __P((struct iso_directory_record *, - struct iso_node *, struct buf *)); -struct vnode *cd9660_ihashget __P((dev_t, ino_t, struct proc *)); -void cd9660_ihashins __P((struct iso_node *)); -void cd9660_ihashrem __P((struct iso_node *)); -int cd9660_tstamp_conv7 __P((u_char *, struct timespec *)); -int cd9660_tstamp_conv17 __P((u_char *, struct timespec *)); -ino_t isodirino __P((struct iso_directory_record *, struct iso_mnt *)); +int cd9660_lookup (struct vnop_lookup_args *); +int cd9660_open (struct vnop_open_args *); +int cd9660_close (struct vnop_close_args *); +int cd9660_access (struct vnop_access_args *); +int cd9660_getattr (struct vnop_getattr_args *); +int cd9660_read (struct vnop_read_args *); +int cd9660_xa_read (struct vnop_read_args *); +int cd9660_ioctl (struct vnop_ioctl_args *); +int cd9660_select (struct vnop_select_args *); +int cd9660_mmap (struct vnop_mmap_args *); +int cd9660_readdir (struct vnop_readdir_args *); +int cd9660_readlink (struct vnop_readlink_args *); +int cd9660_inactive (struct vnop_inactive_args *); +int cd9660_reclaim (struct vnop_reclaim_args *); +int cd9660_strategy (struct vnop_strategy_args *); +int cd9660_pathconf (struct vnop_pathconf_args *); +int cd9660_enotsupp(void); +int cd9660_pagein(struct vnop_pagein_args *ap); +int cd9660_remove(struct vnop_remove_args *ap); +int cd9660_rmdir(struct vnop_rmdir_args *ap); +int cd9660_getattrlist(struct vnop_getattrlist_args *ap); + +__private_extern__ void cd9660_xa_init(struct iso_node *ip, + struct iso_directory_record *isodir); +__private_extern__ int cd9660_blkatoff (vnode_t, off_t, char **, buf_t *); + +void cd9660_defattr (struct iso_directory_record *, + struct iso_node *, struct buf *); +void cd9660_deftstamp (struct iso_directory_record *, + struct iso_node *, struct buf *); +struct vnode *cd9660_ihashget (dev_t, ino_t, struct proc *); +void cd9660_ihashins (struct iso_node *); +void cd9660_ihashrem (struct iso_node *); +int cd9660_tstamp_conv7 (u_char *, struct timespec *); +int cd9660_tstamp_conv17 (u_char *, struct timespec *); +ino_t isodirino (struct iso_directory_record *, struct iso_mnt *); #ifdef ISODEVMAP -struct iso_dnode *iso_dmap __P((dev_t, ino_t, int)); -void iso_dunmap __P((dev_t)); +struct iso_dnode *iso_dmap (dev_t, ino_t, int); +void iso_dunmap (dev_t); #endif #endif /* __APPLE_API_PRIVATE */