⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iso9660.h

📁 open source bios with linux platform, very good and can be reused.
💻 H
字号:
/* *  ISO 9660 filesystem backend for GRUB (GRand Unified Bootloader) *  including Rock Ridge Extensions support * *  Copyright (C) 1998, 1999  Kousuke Takai  <tak@kmc.kyoto-u.ac.jp> * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* *  References: *	linux/fs/isofs/rock.[ch] *	mkisofs-1.11.1/diag/isoinfo.c *	mkisofs-1.11.1/iso9660.h *		(all are written by Eric Youngdale) *//* * Modified by SONE Takeshi to work with FILO */#ifndef _ISO9660_H_#define _ISO9660_H_#define ISO_SECTOR_BITS              (11)#define ISO_SECTOR_SIZE              (1<<ISO_SECTOR_BITS)#define	ISO_REGULAR	1	/* regular file	*/#define	ISO_DIRECTORY	2	/* directory	*/#define	ISO_OTHER	0	/* other file (with Rock Ridge) */#define	RR_FLAG_PX	0x01	/* have POSIX file attributes */#define	RR_FLAG_NM	0x08	/* have alternate file name   *//* POSIX file attributes for Rock Ridge extensions */#define	POSIX_S_IFMT	0xF000#define	POSIX_S_IFREG	0x8000#define	POSIX_S_IFDIR	0x4000/* volume descriptor types */#define ISO_VD_PRIMARY 1#define ISO_VD_END 255#define ISO_STANDARD_ID "CD001"#ifndef ASM_FILEtypedef uint8_t   u_int8_t;typedef uint16_t  u_int16_t;typedef uint32_t  u_int32_t;typedef	union { u_int8_t l,b;}	iso_8bit_t;typedef	struct __iso_16bit {	u_int16_t l, b;} iso_16bit_t __attribute__ ((packed));typedef	struct __iso_32bit {	u_int32_t l, b;} iso_32bit_t __attribute__ ((packed));typedef u_int8_t		iso_date_t[7];struct iso_directory_record {	iso_8bit_t	length;	iso_8bit_t	ext_attr_length;	iso_32bit_t	extent;	iso_32bit_t	size;	iso_date_t	date;	iso_8bit_t	flags;	iso_8bit_t	file_unit_size;	iso_8bit_t	interleave;	iso_16bit_t	volume_seq_number;	iso_8bit_t	name_len;	u_int8_t	name[1];} __attribute__ ((packed));struct iso_primary_descriptor {	iso_8bit_t	type;	u_int8_t	id[5];	iso_8bit_t	version;	u_int8_t	_unused1[1];	u_int8_t	system_id[32];	u_int8_t	volume_id[32];	u_int8_t	_unused2[8];	iso_32bit_t	volume_space_size;	u_int8_t	_unused3[32];	iso_16bit_t	volume_set_size;	iso_16bit_t	volume_seq_number;	iso_16bit_t	logical_block_size;	iso_32bit_t	path_table_size;	u_int8_t	type_l_path_table[4];	u_int8_t	opt_type_l_path_table[4];	u_int8_t	type_m_path_table[4];	u_int8_t	opt_type_m_path_table[4];	struct iso_directory_record root_directory_record;	u_int8_t	volume_set_id[128];	u_int8_t	publisher_id[128];	u_int8_t	preparer_id[128];	u_int8_t	application_id[128];	u_int8_t	copyright_file_id[37];	u_int8_t	abstract_file_id[37];	u_int8_t	bibliographic_file_id[37];	u_int8_t	creation_date[17];	u_int8_t	modification_date[17];	u_int8_t	expiration_date[17];	u_int8_t	effective_date[17];	iso_8bit_t	file_structure_version;	u_int8_t	_unused4[1];	u_int8_t	application_data[512];	u_int8_t	_unused5[653];} __attribute__ ((packed));struct rock_ridge {	u_int16_t	signature;	u_int8_t	len;	u_int8_t	version;	union {	  struct CE {	    iso_32bit_t	extent;	    iso_32bit_t	offset;	    iso_32bit_t	size;	  } ce;	  struct NM {	    iso_8bit_t	flags;	    u_int8_t	name[0];	  } nm;	  struct PX {	    iso_32bit_t	mode;	    iso_32bit_t	nlink;	    iso_32bit_t	uid;	    iso_32bit_t	gid;	  } px;	  struct RR {	    iso_8bit_t	flags;	  } rr;	} u;} __attribute__ ((packed));typedef	union RR_ptr {	struct rock_ridge *rr;	char		  *ptr;	int		   i;} RR_ptr_t;#define	RRMAGIC(c1, c2)	((c1)|(c2) << 8)#define	CHECK2(ptr, c1, c2)                     \    (*(ptr) == (c1) && *(ptr + 1) == (c2))#define	CHECK4(ptr, c1, c2, c3, c4)                                     \    (*(unsigned char *)(ptr) == (c1) &&                                 \     *((unsigned char *)(ptr) + 1) == (c2) &&                           \     *((unsigned char *)(ptr) + 2) == (c3) &&                           \     *((unsigned char *)(ptr) + 3) == (c4))#endif /* !ASM_FILE */#endif /* _ISO9660_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -