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

📄 check.c

📁 操作系统源代码
💻 C
字号:
/************************************************************************* * *  m a k e :   c h e c k . c * *  debugging stuff: Check structures for make. *======================================================================== * Edition history * *  #    Date                         Comments                       By * --- -------- ---------------------------------------------------- --- *   1    ??                                                         ?? *   2 23.08.89 adapted to new name tree structure                   RAL *   3 30.08.89 indention changed                                    PSH,RAL *   4 06.09.89 prt output redirected to stdout                      RAL * ------------ Version 2.0 released ------------------------------- RAL * *************************************************************************/#include "h.h"/* *	Prints out the structures as defined in memory.  Good for check *	that you make file does what you want (and for debugging make). */void prt(){  register struct name   *np;  register struct depend *dp;  register struct line   *lp;  register struct cmd    *cp;  register struct macro  *mp;  register int   		i;  for (mp = macrohead; mp; mp = mp->m_next)	printf("%s = %s\n", mp->m_name, mp->m_val);  putchar('\n');  for (i = 0; i <= maxsuffarray ; i++)	    for (np = suffparray[i]->n_next; np; np = np->n_next)	    {		if (np->n_flag & N_DOUBLE)			printf("%s::\n", np->n_name);		else			printf("%s:\n", np->n_name);		if (np == firstname)			printf("(MAIN NAME)\n");		for (lp = np->n_line; lp; lp = lp->l_next)		{			putchar(':');			for (dp = lp->l_dep; dp; dp = dp->d_next)				printf(" %s", dp->d_name->n_name);			putchar('\n');			for (cp = lp->l_cmd; cp; cp = cp->c_next)#ifdef os9				printf("-   %s\n", cp->c_cmd);#else				printf("-\t%s\n", cp->c_cmd);#endif			putchar('\n');		}		putchar('\n');	    }}/* *	Recursive routine that does the actual checking. */void check(np)struct name *np;{  register struct depend *dp;  register struct line   *lp;	if (np->n_flag & N_MARK)		fatal("Circular dependency from %s", np->n_name,0);	np->n_flag |= N_MARK;	for (lp = np->n_line; lp; lp = lp->l_next)		for (dp = lp->l_dep; dp; dp = dp->d_next)			check(dp->d_name);	np->n_flag &= ~N_MARK;}/* *	Look for circular dependancies. *	ie. *		a: b *		b: a *	is a circular dep */void circh(){  register struct name *np;  register int          i;  for (i = 0; i <= maxsuffarray ; i++)	   for (np = suffparray[i]->n_next; np; np = np->n_next)		check(np);}/* *	Check the target .PRECIOUS, and mark its dependentd as precious */void precious(){  register struct depend *dp;  register struct line   *lp;  register struct name   *np;  if (!((np = newname(".PRECIOUS"))->n_flag & N_TARG))	return;  for (lp = np->n_line; lp; lp = lp->l_next)	for (dp = lp->l_dep; dp; dp = dp->d_next)		dp->d_name->n_flag |= N_PREC;}

⌨️ 快捷键说明

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