typedef struct usr_fileinfo {
int usr_version; /* rash version */
bfid_t usr_bfid; /* bfid */
int usr_vvno; /* multiple volume sequence # */
unsigned short usr_rflg; /* record flags */
unsigned short usr_vflg; /* vv flags */
char usr_vvname[VVNAMELEN+1]; /* vv name */
int usr_fno; /* file number in multifile vv */
unsigned int usr_bof; /* byte offset into the vv */
off_t usr_lseek; /* lseek write to disk location */
off_t usr_vvdata; /* amnt of data on vv for fno */
off_t usr_fsize; /* file size */
uid_t usr_uid; /* uid */
gid_t usr_gid; /* gid */
time_t usr_ctime; /* ctime */
time_t usr_mtime; /* mtime */
time_t usr_arctm; /* arctm */
mode_t usr_mode;
time_t usr_rectm; /* record timestamp */
time_t usr_deltm; /* record delete time */
int usr_group_no; /* rash archive group number */
char *usr_fname; /* file name pointer */
} USR_FILEINFO;
typedef struct {
char hdr[4], b0; /* 'RASH' */
char vvname[MAXVVNAMELEN], b1; /* this vv */
char version[INTLEN], b2; /* rash version */
char dbuid_name[10], b3; /* owner when bfid assigned */
char dbuid[INTLEN], b4; /* dbuid number */
char date[DATELEN], end; /* time label written */
} vv_hdr_lbl_t;
Each file on a VV has a HDR label before the data starts and a label at the end of data. If a file spans multiple VV's, each VV except the last will have an EOV label following the file segment. The last VV will have a EOF label following the file segment. This is also the case if a file does not span multiple VV's.
typedef struct {
/* basic info */
char hdr[4], b00; /* 'FILE' */
char label[3], b01; /* 'HDR' 'EOV' or 'EOF' */
char version[INTLEN], b02; /* rash version */
/* file-vv mapping */
/* multi-vv files */
char vv0[VVNAMELEN], b03; /* 1st vv for file */
char vvno[5], b04; /* volume order number */
char othervv[VVNAMELEN], b05; /* prev or next vv for file */
/* multi-file vv */
char fno[5], b06; /* which file on this vv */
/* file info */
char bfid[BFIDLEN], b07; /* bfid in ascii hex */
char uname[10], b08; /* username */
char uid[INTLEN], b09; /* file uid in ascii hex */
char gname[10], b10; /* group name */
char gid[INTLEN], b11; /* file gid in ascii hex */
char mode[4], b12; /* file mode in ascii hex */
char mtime[DATELEN], b13; /* mtime */
char ctime[DATELEN], b14; /* ctime */
char arctm[DATELEN], b15; /* archive time */
char fsize[OFFLEN], b16; /* file size in ascii hex */
char lseek[OFFLEN], b17; /* lseek address hex */
char vvdata[OFFLEN], b18; /* amt of file on this vv */
char flen[4], end; /* length of file name hex */
} file_hdr_lbl_t;