Previous Topic

Next Topic

Extended File Creation Block Structure

The key to many of the extended features in c-tree Plus is the extended header in Extended files. With the exception of the specification of segmented files, all of the extended file definition capabilities are specified through a parameter block, the XCREblk structure, containing the additional information needed to implement the extended header.

A file supporting 8-byte addresses and/or which uses any of the extended file attributes uses an extended file header instead of the 128-bytes used by Standard 4-byte c‑tree Plus files. Some of the additional bytes are used for the contents of the XCREblk structure, made up of sixteen 4-byte integers, seven of which are reserved for future use. The XCREblk structure passes the extended file attributes to the file creation routines.

typedef struct XCREblk {
  LONG      x8mode;    /* extended file modes             */
  ULONG     segsiz;    /* host segment size (MB)          */
  LONG      mxfilzhw;  /* high word max file size         */
  LONG      mxfilzlw;  /* low word max file size          */
  LONG      fxtsiz;    /* first file extent size          */
  LONG      lxtsiz;    /* file extent size                */
  LONG      segmax;    /* maximum number of segments      */
  ULONG     dskful;    /* disk full threshold             */
  ULONG     filkey;    /* file encryption key             */
  LONG      prtkey;    /* relative key# for partition key */
  LONG      splval;    /* special value parameter         */
  LONG      rs4[4];    /* reserved for future use         */
  LONG      callparm;  /* call specific parameter         */
 } XCREblk;

GetXtdCreateBlock(), declared as:

NINT GetXtdCreateBlock (COUNT filno, pXCREblk pxcreblk);

fills the structure pointed to by pxcreblk with the contents of an XCREblk corresponding to the extended create attributes for filno. Use GetXtdCreateBlock() to retrieve the XCREblk for an existing file so that an extended file can be created with the same extended create attributes.

Note: It is legitimate to call GetXtdCreateBlock() for files created in Standard or Extended format. The resulting XCREblk from a call for a Standard format file can be used in a call to an extended create routine, and the result should be a Standard format (V6 compatible) file.