| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * These structs are used by the system-use-sharing protocol, in which the | 
					
						
							|  |  |  |  * Rock Ridge extensions are embedded.  It is quite possible that other | 
					
						
							|  |  |  |  * extensions are present on the disk, and this is fine as long as they | 
					
						
							|  |  |  |  * all use SUSP | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct SU_SP_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	unsigned char magic[2]; | 
					
						
							|  |  |  | 	unsigned char skip; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct SU_CE_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	char extent[8]; | 
					
						
							|  |  |  | 	char offset[8]; | 
					
						
							|  |  |  | 	char size[8]; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct SU_ER_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	unsigned char len_id; | 
					
						
							|  |  |  | 	unsigned char len_des; | 
					
						
							|  |  |  | 	unsigned char len_src; | 
					
						
							|  |  |  | 	unsigned char ext_ver; | 
					
						
							|  |  |  | 	char data[0]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct RR_RR_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	char flags[1]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct RR_PX_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	char mode[8]; | 
					
						
							|  |  |  | 	char n_links[8]; | 
					
						
							|  |  |  | 	char uid[8]; | 
					
						
							|  |  |  | 	char gid[8]; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct RR_PN_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	char dev_high[8]; | 
					
						
							|  |  |  | 	char dev_low[8]; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | struct SL_component { | 
					
						
							|  |  |  | 	unsigned char flags; | 
					
						
							|  |  |  | 	unsigned char len; | 
					
						
							|  |  |  | 	char text[0]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct RR_SL_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	unsigned char flags; | 
					
						
							|  |  |  | 	struct SL_component link; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct RR_NM_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	unsigned char flags; | 
					
						
							|  |  |  | 	char name[0]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct RR_CL_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	char location[8]; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct RR_PL_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	char location[8]; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | struct stamp { | 
					
						
							|  |  |  | 	char time[7]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct RR_TF_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	char flags; | 
					
						
							|  |  |  | 	struct stamp times[0];	/* Variable number of these beasts */ | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Linux-specific extension for transparent decompression */ | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | struct RR_ZF_s { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	char algorithm[2]; | 
					
						
							|  |  |  | 	char parms[2]; | 
					
						
							|  |  |  | 	char real_size[8]; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * These are the bits and their meanings for flags in the TF structure. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #define TF_CREATE 1
 | 
					
						
							|  |  |  | #define TF_MODIFY 2
 | 
					
						
							|  |  |  | #define TF_ACCESS 4
 | 
					
						
							|  |  |  | #define TF_ATTRIBUTES 8
 | 
					
						
							|  |  |  | #define TF_BACKUP 16
 | 
					
						
							|  |  |  | #define TF_EXPIRATION 32
 | 
					
						
							|  |  |  | #define TF_EFFECTIVE 64
 | 
					
						
							|  |  |  | #define TF_LONG_FORM 128
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | struct rock_ridge { | 
					
						
							|  |  |  | 	char signature[2]; | 
					
						
							|  |  |  | 	unsigned char len; | 
					
						
							|  |  |  | 	unsigned char version; | 
					
						
							|  |  |  | 	union { | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:51 -07:00
										 |  |  | 		struct SU_SP_s SP; | 
					
						
							|  |  |  | 		struct SU_CE_s CE; | 
					
						
							|  |  |  | 		struct SU_ER_s ER; | 
					
						
							|  |  |  | 		struct RR_RR_s RR; | 
					
						
							|  |  |  | 		struct RR_PX_s PX; | 
					
						
							|  |  |  | 		struct RR_PN_s PN; | 
					
						
							|  |  |  | 		struct RR_SL_s SL; | 
					
						
							|  |  |  | 		struct RR_NM_s NM; | 
					
						
							|  |  |  | 		struct RR_CL_s CL; | 
					
						
							|  |  |  | 		struct RR_PL_s PL; | 
					
						
							|  |  |  | 		struct RR_TF_s TF; | 
					
						
							|  |  |  | 		struct RR_ZF_s ZF; | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | 	} u; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-06-21 17:16:48 -07:00
										 |  |  | #define RR_PX 1			/* POSIX attributes */
 | 
					
						
							|  |  |  | #define RR_PN 2			/* POSIX devices */
 | 
					
						
							|  |  |  | #define RR_SL 4			/* Symbolic link */
 | 
					
						
							|  |  |  | #define RR_NM 8			/* Alternate Name */
 | 
					
						
							|  |  |  | #define RR_CL 16		/* Child link */
 | 
					
						
							|  |  |  | #define RR_PL 32		/* Parent link */
 | 
					
						
							|  |  |  | #define RR_RE 64		/* Relocation directory */
 | 
					
						
							|  |  |  | #define RR_TF 128		/* Timestamps */
 |