📄 iso9660.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) */#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_PN 0x02 /* POSIX devices */#define RR_FLAG_SL 0x04 /* Symbolic link */#define RR_FLAG_NM 0x08 /* have alternate file name */#define RR_FLAG_CL 0x10 /* Child link */#define RR_FLAG_PL 0x20 /* Parent link */#define RR_FLAG_RE 0x40 /* Relocation directory */#define RR_FLAG_TF 0x80 /* Timestamps *//* 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_FILE#ifndef __BIT_TYPES_DEFINED__typedef int int8_t __attribute__((mode(QI)));typedef unsigned int u_int8_t __attribute__((mode(QI)));typedef int int16_t __attribute__((mode(HI)));typedef unsigned int u_int16_t __attribute__((mode(HI)));typedef int int32_t __attribute__((mode(SI)));typedef unsigned int u_int32_t __attribute__((mode(SI)));#endiftypedef 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 SP { u_int16_t magic; u_int8_t skip; } sp; struct CE { iso_32bit_t extent; iso_32bit_t offset; iso_32bit_t size; } ce; struct ER { u_int8_t len_id; u_int8_t len_des; u_int8_t len_src; u_int8_t ext_ver; u_int8_t data[0]; } er; struct RR { iso_8bit_t flags; } rr; struct PX { iso_32bit_t mode; iso_32bit_t nlink; iso_32bit_t uid; iso_32bit_t gid; } px; struct PN { iso_32bit_t dev_high; iso_32bit_t dev_low; } pn; struct SL { iso_8bit_t flags; struct SL_component { iso_8bit_t flags; u_int8_t len; u_int8_t text[0]; } link; } sl; struct NM { iso_8bit_t flags; u_int8_t name[0]; } nm; struct CL { iso_32bit_t location; } cl; struct PL { iso_32bit_t location; } pl; struct TF { iso_8bit_t flags; iso_date_t times[0]; } tf; } 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) \ (*(unsigned short *)(ptr) == (((c1) | (c2) << 8) & 0xFFFF))#endif /* !ASM_FILE */#endif /* _ISO9660_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -