/* <fscndef.h>
 *
 *	$FILESCAN definitions
 */
#ifndef _FSCNDEF_H
#define _FSCNDEF_H

/* filename component return bit mask values */
#define FSCN$V_NODE	0
#define FSCN$V_DEVICE	1
#define FSCN$V_ROOT	2
#define FSCN$V_DIRECTORY 3
#define FSCN$V_NAME	4
#define FSCN$V_TYPE	5
#define FSCN$V_VERSION	6
#ifndef NO_VMS_V6
#define FSCN$V_NODE_PRIMARY	7
#define FSCN$V_NODE_ACS		8
#define FSCN$V_NODE_SECONDARY	9
#endif
#define FSCN$M_NODE	(1<<FSCN$V_NODE)	/* 0x01 */
#define FSCN$M_DEVICE	(1<<FSCN$V_DEVICE)	/* 0x02 */
#define FSCN$M_ROOT	(1<<FSCN$V_ROOT)	/* 0x04 */
#define FSCN$M_DIRECTORY (1<<FSCN$V_DIRECTORY)	/* 0x08 */
#define FSCN$M_NAME	(1<<FSCN$V_NAME)	/* 0x10 */
#define FSCN$M_TYPE	(1<<FSCN$V_TYPE)	/* 0x20 */
#define FSCN$M_VERSION	(1<<FSCN$V_VERSION)	/* 0x40 */
#ifndef NO_VMS_V6
#define FSCN$M_NODE_PRIMARY	(1<<FSCN$V_NODE_PRIMARY)	/* 0x0080 */
#define FSCN$M_NODE_ACS		(1<<FSCN$V_NODE_ACS)		/* 0x0100 */
#define FSCN$M_NODE_SECONDARY	(1<<FSCN$V_NODE_SECONDARY)	/* 0x0200 */
#endif

struct fscn_fldflags {
	unsigned fscn$v_node	: 1;	/* node name present */
	unsigned fscn$v_device	: 1;	/* device name present */
	unsigned fscn$v_root	: 1;	/* root directory present */
	unsigned fscn$v_directory : 1;	/* directory present */
	unsigned fscn$v_name	: 1;	/* file name present */
	unsigned fscn$v_type	: 1;	/* file type present */
	unsigned fscn$v_version : 1;	/* file version present */
#ifndef NO_VMS_V6
	unsigned fscn$v_node_primary	: 1;
	unsigned fscn$v_node_acs	: 1;
	unsigned fscn$v_node_secondary	: 1;
	unsigned		: 22;	/* padding */
#else
	unsigned		: 25;	/* padding */
#endif
};

/* item codes */
#define FSCN$_FILESPEC	1	/* complete filespec */
#define FSCN$_NODE	2	/* node:: field */
#define FSCN$_DEVICE	3	/* device: field */
#define FSCN$_ROOT	4	/* [root.] field */
#define FSCN$_DIRECTORY 5	/* [directory] field */
#define FSCN$_NAME	6	/* name field */
#define FSCN$_TYPE	7	/* .typ field */
#define FSCN$_VERSION	8	/* ;version field */
#define FSCN$S_ITEM_LEN 8

/* itemlist structure */
struct fscndef {
    unsigned short fscn$w_length;	/* return length word */
    unsigned short fscn$w_item_code;	/* item code value */
    char *fscn$l_addr;			/* component address */
};

#endif	/*_FSCNDEF_H*/