⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setld.h

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 H
字号:
/* *	setld.h - *		master header file for the setld family of utilties * *	SCCSID	"@(#)setld.h	4.2 (ULTRIX) 11/14/90" * *			Copyright (c) 1989 by *		Digital Equipment Corporation, Maynard, MA *			All rights reserved. *								 *	This software is furnished under a license and may be used and *	copied  only  in accordance with the terms of such license and *	with the  inclusion  of  the  above  copyright  notice.   This *	software  or  any  other copies thereof may not be provided or *	otherwise made available to any other person.  No title to and *	ownership of the software is hereby transferred.		 *								 *	The information in this software is subject to change  without *	notice  and should not be construed as a commitment by Digital *	Equipment Corporation.					 *								 *	Digital assumes no responsibility for the use  or  reliability *	of its software on equipment which is not supplied by Digital. * *	000	2-feb-1989	Chas. Bennett *	001	14-jun-1989	ccb *		add defines and typedefs and externs needed to implement *		C coded dependency checking *	002	24-jul-1989	ccb *		remove "include <sys/dir.h>" *		Lint, depord debugging/qualification*/#define	NAMELEN		128	/* max length of subset names */#define	DATELEN		12	/* length of date strings */#define	CODELEN		3	/* length of rev code strings */#define	STRINGLEN	256	/* length of arbitrary strings */typedef char	CodeT[CODELEN+1];	/* code info type */extern char	*CodeSet();		/* set a code object to a value */typedef char	DateT[DATELEN+1];	/* external date representation */extern char	*DateFormat();		/* Format time_t to i_date */typedef	unsigned	FlagsT;		/* flag representation */extern FlagsT		FlagsScan();	/* xlate from string */typedef char	NameT[NAMELEN+1];	/* Name Type */extern char	*NameGetPcode();	/* get pcode from name */extern char	*NameGetVcode();	/* get vcode from name */extern char	*NameScan();		/* set a NameT from a string */extern char	*NameSet();		/* obs. alias for NameScan() */typedef char	PathT[MAXPATHLEN+1];extern char	*PathSet();		/* assign value */extern char	*PathStripExt();	/* product extension-less copy */typedef char	StringT[STRINGLEN+1];extern char	*StringCopy();		/* copy a string, strict */extern char	*StringSet();		/* assign value */extern char	*StringToken();		/* strtok(3) interface */extern char	*StringUnquote();	/* remove quotes from a string */typedef char	FtypeT;		/* File Type storage type */extern FtypeT	FtypeFormat();	/* xlate mode to type char *//*	TYPEDEF MI DataTypes*/typedef FILE	MiT;	/* Master Inventory Pointer */typedef struct	MiRecT	/* Master Inventory record definition */{	struct MiRecT	*mi_next;	/* for making chains */	FlagsT		mi_flags;	/* flag info */	PathT		mi_path;	/* path name */	NameT		mi_subset;	/* subset name */} MiRecT;/*	TYPEDEF INV DataTypes*//* internal data access constants*/#define	I_NEXT		0x0001#define	I_FLAGS		0x0002#define	I_SIZE		0x0004#define	I_SUM		0x0008#define	I_UID		0x0010#define	I_GID		0x0020#define	I_PERM		0x0040#define	I_DATE		0x0080#define	I_REV		0x0100#define	I_TYPE		0x0200#define	I_PATH		0x0400#define	I_LINKTO	0x0800#define	I_SUB		0x1000#define	I_RDEV		0x2000#define	I_VALL		0x0FF4#define	I_VDATA		(I_SIZE|I_SUM)/* bit definitions for i_flags*/#define	INVPRECEDENCE	0x0001#define	INVVOLATILE	0x0002#define INVVOLITILE	INVVOLATILE	/* backwards.... */#define	INVMASK		0x0003typedef	FILE	InvT;	/* inventory pointer */typedef struct InvRecT	/* inventory record definition */{	struct InvRecT	*i_next;	/* for making chains */	/* setld specific atrributes	*/	PathT		 i_path;	/* name */	PathT		 i_ref;		/* referent */	DateT		 i_date;	/* last rev date */	FtypeT		 i_type;	/* type in [lsdf] */	FlagsT		 i_vflags;	/* verification flags */	FlagsT		 i_flags;	/* attribute flags */	CodeT		 i_rev;		/* rev level */	NameT		 i_subset;	/* subset */	unsigned	 i_sum;		/* checksum */	/* stat(2) derived attributes	*/	short		 i_gid;		/* group id */	dev_t		 i_dev;		/* device info */	ino_t		 i_ino;		/* inode info */	u_short		 i_mode;	/* file access mode */	short		 i_nlink;	/* link count */	dev_t		 i_rdev;	/* dev info for dev files */	off_t 		 i_size;	/* size in bytes */	short		 i_uid;		/* user id */} InvRecT;extern InvT	*InvInit();		/* Initialize InvT from FILE * */extern InvT	*InvOpen();		/* Inventory Open Routine */extern InvRecT	*InvRead();		/* Inventory Read Routine */extern InvRecT	*InvRecAppend();	/* append inventory lists */extern InvRecT	*InvRecCopy();		/* copy a record */extern InvRecT	*InvRecInsertAlpha();	/* insert record, alpha on i_path */extern InvRecT	*InvRecNew();		/* allocate storage */extern char	*InvRecSetPath();	/* set path */extern char	*InvRecSetRef();	/* set referent */extern char	*InvRecSetRev();	/* set revision code */extern char	*InvRecSetSubset();/*	dependency data structure *		dependencies are stored as links in a list **/#define	DEP_REQUIRE	0x0001	/* subset required (default) */#define	DEP_ADVERSE	0x0002	/* subset absent asserted */#define	DEP_PRODTYP	0x0004	/* product level dependency */#define	DEP_SUBSTYP	0x0008	/* subset level dependency */#define	DEPS_OPEN	0	/* dependency ordering closure not required */#define	DEPS_CLOSED	1	/* dependency ordering closure required */typedef struct DepT {	struct DepT	*d_next;	NameT		d_value;	FlagsT		d_flags;} DepT;extern DepT	*DepAppend();		/* append routine */extern DepT	*DepCreate();		/* create named */extern void	DepFree();		/* free a single DepT */extern DepT	*DepListCopy();		/* copy a list of DepTs */extern char	*DepListFormat();	/* convert to string */extern void	DepListFree();		/* Free DepT storage */extern DepT	*DepListMerge();	/* merge dependency lists */extern DepT	*DepMember();		/* list membership predicate */extern DepT	*DepNew();		/* allocate storage */extern DepT	*DepListPromote();	/* promote from subset to prod */extern DepT	*DepScan();		/* convert from StringT *//*	x.ctrl definitions and typedefs*//* ctrlerr error codes*/#define	CTRL_OK		0#define	CTRL_EOF	1	/* no more records */#define	CTRL_FOPEN	2	/* cannot open ctrl file */#define	CTRL_CPTN	3	/* control file corrupt */#define	CTRL_NCODE	4	/* total # of error codes */typedef struct CtrlT{	struct CtrlT	*c_next;	/* link pointer */	PathT		c_dpath;	/* db pathname */	DIR		*c_dir;		/* directory pointer */	PathT		c_fpath;	/* ctrl file pathanme */	FILE		*c_fp;		/* ctrl file pointer */	FlagsT		c_flags;	/* ctrl stream flags */} CtrlT;#define	SUB_NORM	0x0001	/* no rm subset flag */#define	SUB_OPT		0x0002	/* optional subset flag */extern CtrlT	*CtrlCreate();		/* create routine */extern char	*CtrlGetFpath();	/* get fpath value */extern CtrlT	*CtrlNew();		/* allocte CtrlT storage */extern CtrlT	*CtrlOpen();		/* open routine */extern char	*CtrlSetFpath();	/* set fpath field *//* ctrl file variable status bits*/#define	CVAR_NAME	0x0001		/* name OK */#define	CVAR_DESC	0x0002		/* desc OK */#define	CVAR_NVOLS	0x0004		/* nvols OK */#define	CVAR_MTLOC	0x0008		/* mtloc OK */#define	CVAR_DEPS	0x0010		/* deps OK */#define	CVAR_FLAGS	0x0020		/* flags OK */#define	CVAR_ALL	0x003f		/* all bits */#define	CVAR_BITS	6		/* number of flags to check */typedef struct CtrlRecT{	struct CtrlRecT	*ct_next;	/* link pointer */	NameT		ct_subset;	/* subset name */	StringT		ct_name;	/* name string */	StringT		ct_desc;	/* description */	unsigned	ct_dcnt;	/* diskette count */	int		ct_dvol;	/* disk volume (unused) */	unsigned	ct_tvol;	/* tape volume */	int		ct_tloc;	/* tape location */	DepT		*ct_deps;	/* dependencies */	FlagsT		ct_flags;	/* subset flags */} CtrlRecT;extern char	*CtrlErrorString();	/* translate error code */extern CtrlRecT	*CtrlRead();		/* read routine */extern CtrlRecT	*CtrlRecAppend();	/* list management */extern CtrlRecT	*CtrlRecCopy();		/* copy routine */extern char	*CtrlRecGetSubset();	/* get subset info */extern CtrlRecT	*CtrlRecNew();		/* new instance */extern CtrlRecT	*CtrlRecOrderInsert();	/* insert a CtrlRecT in a list */extern void	CtrlRecPrintList();	/* debug print */extern DepT	*CtrlRecSetDeps();	/* set deps field */extern char	*CtrlRecSetDesc();	/* set desc field */extern char	*CtrlRecSetDiskInfo();	/* set dcnt, dvol fields */extern FlagsT	CtrlRecSetFlags();	/* set flags field */extern char	*CtrlRecSetName();	/* set name field */extern char	*CtrlRecSetPath();	/* set path field */extern char	*CtrlRecSetSubset();	/* set subset field */extern char	*CtrlRecSetTapeInfo();	/* set tape fields *//*	Product Data Structures **/#define	PROD_COMP	0x0001	/* product subsets compressed */#define	PROD_DEPORD	0x0002	/* dependency ordered */typedef FILE	ProdT;	/* probably unnecessary */typedef struct ProdRecT{	struct ProdRecT	*p_next;	/* link */	CtrlRecT	*p_cp;		/* control chain for subsets */	CodeT		p_pcode;	/* product code */	CodeT		p_vcode;	/* version code */	FlagsT		p_flags;	/* flags */	DepT		*p_deps;		/* dependency codes */} ProdRecT;extern ProdRecT	*ProdRecAddCtrl();	/* merge control record in prod list */extern ProdRecT	*ProdRecAppend();	/* append a prodrect to a list */extern ProdRecT	*ProdRecFindBySubset();	/* find prod ctrl belongs in */extern char	*ProdRecGetName();	/* get product name */extern ProdRecT	*ProdRecInsDepOrder();	/* insert product by dependencies */extern ProdRecT	*ProdRecNew();		/* Create new product record */extern ProdRecT *ProdRecOrderByDeps();	/* Order list by dependency */extern void	ProdRecPrintList();	/* Print list *//*	Assign Structure - *		used for parsing assignment statements as they *	appear in some of the data files*/typedef struct AssignT{	struct AssignT	*a_next;	/* link */	StringT		a_name;		/* variable name */	StringT		a_val;		/* variable value */} AssignT;extern char	*AssignGetName();extern char	*AssignGetVal();	/* get value field */extern AssignT	*AssignScan();		/* cvt string to AssignT *//*%	FUNCTION TYPE DECLARATIONS*/extern u_short	CheckSum();	/* checksum */extern InvRecT	*FVerify();	/* verify a file */extern MiT	*MiInit();	/* Initialize MiT from FILE * */extern MiRecT	*MiRead();	/* MI Read Routine */extern char	*PermString();	/* xlate 0755 -> rwxr-xr-x, etc */extern InvRecT	*StatToInv();	/* Make InvRecT from stat(2) data */extern char	*emalloc();	/* error checked malloc *//*	Miscellaneous macros*/#define	PERM(X)	((X)&~S_IFMT)	/* get perms from mode *//*	Miscellaneous libc function declarations*/extern void	bcopy();	/* bstring(3) */extern void	exit();		/* exit(3) */extern char	*fgets();	/* gets(3) */extern void	free();		/* malloc(3) */extern char	*malloc();	/* malloc(3) */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -