00001 #ifndef fi5def_h 00002 #define fi5def_h 00003 00004 #define FI5_C_ODS2 0 00005 #define FI5_C_ISL1 1 00006 #define FI5_$_TYPE_RESERVED 2 00007 #define FI5_C_UCS2 3 00008 #define FI5_M_FIXED_LENGTH 0x10 00009 #define FI5_C_MIN_LENGTH 120 00010 #define FI5_C_MAX_LENGTH 324 00011 #define FI5_S_FI5DEF 324 00012 00013 struct _fi5 { 00014 union { 00015 unsigned char fi5_b_control; 00016 #if 0 00017 // aaah damn bugger bugs. seems control_fields counts as 2 bytes 00018 // and b_namelen as 2 00019 struct { 00020 unsigned fi5_v_nametype : 2; 00021 unsigned fi5_$_fill_1 : 2; 00022 unsigned fi5_v_fixed_length : 1; 00023 unsigned fi5_v_fill_2_ : 3; 00024 } fi5_r_control_fields; 00025 #endif 00026 } fi5_r_control_overlay; 00027 unsigned char fi5_b_namelen; 00028 unsigned short int fi5_w_revision; 00029 unsigned long long fi5_q_credate; 00030 unsigned long long fi5_q_revdate; 00031 unsigned long long fi5_q_expdate; 00032 unsigned long long fi5_q_bakdate; 00033 unsigned long long fi5_q_accdate; 00034 unsigned long long fi5_q_attdate; 00035 unsigned long long fi5_q_ex_recattr; 00036 struct { 00037 unsigned long long fi5_q_hint_lo_qw; 00038 unsigned long long fi5_q_hint_hi_qw; 00039 } fi5_r_length_hint; 00040 char fi5_t_filename [44]; 00041 char fi5_t_filenamext [204]; 00042 }; 00043 00044 #define fi5_b_control fi5$r_control_overlay.fi5$b_control 00045 #define fi5_q_hint_hi_qw fi5$r_length_hint.fi5$q_hint_hi_qw 00046 #define fi5_q_hint_lo_qw fi5$r_length_hint.fi5$q_hint_lo_qw 00047 #define fi5_v_fixed_length fi5$r_control_overlay.fi5$r_control_fields.fi5$v_fixed_length 00048 #define fi5_v_nametype fi5$r_control_overlay.fi5$r_control_fields.fi5$v_nametype 00049 00050 #endif 00051 00052