亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? make.c

?? pl0編譯器
?? C
字號:
/*
 *	Do the actual making for make
 */

#include "h.h"

/*
 *  Support functions for Windows 95
 */

time_t   CnvSystemTime(LPSYSTEMTIME pSysTime)
{
  time_t     result = 0;
  int        MonthDays[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
  int       wYear,wMonth;

  for (wYear = 1970;wYear < pSysTime->wYear;wYear++)
    result += (((wYear % 4)==0) ? 366 : 365);

  for (wMonth = 1;wMonth < pSysTime->wMonth;wMonth++)
    result += MonthDays[wMonth-1];
    
  if ( (wMonth == 2) && ((wYear % 4) == 0) )
    result ++;
  
  result += pSysTime->wDay - 1;
  result *= 24;
  result += pSysTime->wHour;
  result *= 60;
  result += pSysTime->wMinute;
  result *= 60;
  result += pSysTime->wSecond;

#ifndef NDEBUG
  printf("%2d %2d %4d , %2d:%02d:%02d = %d\n",
	 pSysTime->wDay,pSysTime->wMonth,pSysTime->wYear,
	 pSysTime->wHour,pSysTime->wMinute,pSysTime->wSecond,
	 result);
#endif

  return result;
}

time_t time(time_t *buf)
{
  SYSTEMTIME stNow;
  time_t     result;

  GetSystemTime(&stNow);
  result = CnvSystemTime(&stNow);
  if (buf)
    *buf = result;
  return result;
}

char *strdup(const char *orig)
{
  char *result;

  result = (char *)malloc(strlen(orig)+1);
  if (result != NULL)
    strcpy(result,orig);
  return result;
}

/*
 * This way, child programs will execute and return the
 * right exit code values.
 */

int _system(const char *cmd)
{
  BOOL                bResult;
  STARTUPINFO         si;
  PROCESS_INFORMATION pi;
  DWORD               exitcode;

  memset(&si,0,sizeof(STARTUPINFO));
  si.cb = sizeof(STARTUPINFO);
  
  bResult = CreateProcess(NULL,
			  cmd,
			  NULL,NULL, /* No security */
			  TRUE,	     /* Inherits handles */
			  0,	     /* Runs normally  */
			  NULL,NULL, /* Inherits env & cwd */
			  &si,&pi);

  if (bResult == FALSE) 
    return system(cmd);
  /* Modification proposed by Sune Falck, Sune.Falck@swipnet.se */
  WaitForSingleObject(pi.hProcess,INFINITE);
  if (GetExitCodeProcess(pi.hProcess,&exitcode)==FALSE) {
      fprintf(stderr,"Impossible to get the exit status for %s\n",cmd);
      return -1;
   }

  return (int)exitcode;
}


/*
 *	Do commands to make a target
 */
void docmds1(NAME *np,LINE *lp)
{
  bool	        ssilent;
  bool	        signore;
  int	        estat;
  register char *q;
  register CMD  *cp;
  
  for (cp = lp->l_cmd; cp; cp = cp->c_next)
    {
      strcpy(str1, cp->c_cmd);
      expand(str1);
      q = str1;
      ssilent = silent;
      signore = ignore;
      while ((*q == '@') || (*q == '-'))
	{
	  if (*q == '@')	   /*  Specific silent  */
	    ssilent = TRUE;
	  else		   /*  Specific ignore  */
	    signore = TRUE;
	  q++;		   /*  Not part of the command  */
	}
      
      if (!domake)
	ssilent = 0;
      
      if (!ssilent)
	printf("   %s\n",q);
      
      if (domake)
	{			/*  Get the shell to execute it  */
	  estat = _system(q);
	  if (estat != 0)
	    {
	      printf("%s: Error code %d", myname, estat);
	      if (signore)
		fputs(" (Ignored)\n", stdout);
	      else
		{
		  putchar('\n');
		  if (!(np->n_flag & N_PREC))
		    if (unlink(np->n_name) == 0)
		      printf("%s: '%s' removed.\n", myname, np->n_name);
		  exit(estat);
		}
	    }
	}
    }
}


void docmds(NAME *np)
{
  register LINE *lp;
  
  
  for (lp = np->n_line; lp; lp = lp->l_next)
    docmds1(np, lp);
}


/*
 *	Get the modification time of a file.  If the first
 *	doesn't exist, it's modtime is set to 0.
 */
void modtime(struct name *np)
{
  FILETIME LastModifyTime;
  SYSTEMTIME LastModSysTime;
  HANDLE   hFile;
  BOOL     bResult;

  np->n_time = 0L;
  hFile = CreateFileA(np->n_name,GENERIC_READ,
		      FILE_SHARE_READ, NULL, OPEN_EXISTING,
		      FILE_ATTRIBUTE_NORMAL,NULL);

  if (hFile == INVALID_HANDLE_VALUE) {
    DWORD LastError = GetLastError();
    if (LastError != ERROR_FILE_NOT_FOUND) 
      fatal ("Couldn't open %s GetLastError() = %d",np->n_name,LastError);
    return;
  }
  bResult = GetFileTime(hFile,NULL,NULL,&LastModifyTime);
  CloseHandle(hFile);
  if (bResult == FALSE)
    fatal ("Couldn't get file time for %s\n",np->n_name);
  FileTimeToSystemTime(&LastModifyTime,&LastModSysTime);
  np->n_time = CnvSystemTime(&LastModSysTime);
}


/*
 *	Update the mod time of a file to now.
 */
void touch(struct name *np)
{
  SYSTEMTIME stNow;
  FILETIME   ftNow;
  HANDLE     hFile;

  if (!domake || !silent)
    printf("    touch(%s)\n", np->n_name);
  
  if (domake)
    {
      hFile = CreateFileA(np->n_name,GENERIC_WRITE,
			  0,NULL,OPEN_EXISTING,
			  FILE_ATTRIBUTE_NORMAL,NULL);

      if (hFile == INVALID_HANDLE_VALUE) {
	fatal("Couldn't touch %s",np->n_name);
      }
      GetSystemTime(&stNow);
      SystemTimeToFileTime(&stNow,&ftNow);
      SetFileTime(hFile,&ftNow,&ftNow,&ftNow);
      CloseHandle(hFile);
    }
}


/*
 *	Recursive routine to make a target.
 */
int make(NAME *np,int level)
{
  register DEPEND *dp;
  register LINE   *lp;
  register struct depend *qdp;
  time_t		 dtime = 1;
  bool			 didsomething = 0;
  
  if (np->n_flag & N_DONE)
    return 0;
  
  if (!np->n_time)
    modtime(np);		/*  Gets modtime of this file  */
  
  if (rules)
    {
      for (lp = np->n_line; lp; lp = lp->l_next)
	if (lp->l_cmd)
	  break;
      if (!lp)
	dyndep(np);
    }
  
  if ( ((np->n_flag & N_TARG) == 0) && (np->n_time == 0L) )
    fatal("Don't know how to make %s", np->n_name);
  
  for (qdp = (DEPEND *)0, lp = np->n_line; lp; lp = lp->l_next)
    {
      for (dp = lp->l_dep; dp; dp = dp->d_next)
	{
	  make(dp->d_name, level+1);
	  if (np->n_time < dp->d_name->n_time)
	    qdp = newdep(dp->d_name, qdp);
	  dtime = max(dtime, dp->d_name->n_time);
	}
      if (!quest && (np->n_flag & N_DOUBLE) && (np->n_time < dtime))
	{
	  make1(np, lp, qdp);	/* free()'s qdp */
	  dtime = 1;
	  qdp = (DEPEND *)0;
	  didsomething++;
	}
    }
  
  np->n_flag |= N_DONE;
  
  if (quest)
    {
      long		t;
      
      t = np->n_time;
      time(&np->n_time);
      return t < dtime;
    }
  else if (np->n_time < dtime && !(np->n_flag & N_DOUBLE))
    {
      make1(np, (LINE *)0, qdp);	/* free()'s qdp */
      time(&np->n_time);
    }
  else if (level == 0 && !didsomething)
    printf("%s: '%s' is up to date\n", myname, np->n_name);
  return 0;
}


make1(np, lp, qdp)
register DEPEND *	qdp;
LINE *			lp;
NAME *			np;
{
  register DEPEND *	dp;


  if (dotouch)
    touch(np);
  else
    {
      strcpy(str1, "");
      for (dp = qdp; dp; dp = qdp)
	{
	  if (strlen(str1))
	    strcat(str1, " ");
	  strcat(str1, dp->d_name->n_name);
	  qdp = dp->d_next;
	  free(dp);
	}
      setmacro("?", str1);
      setmacro("@", np->n_name);

      /* R.D. 1987/02/01  add "$*" macro to stand for target minus suffix */
      /* I'm assuming that np->n_name is the full name of the target. */

      {
#if 1
#define	MAXNAMSIZ	32		/* allow 32-char names */
	char tmpnam[MAXNAMSIZ];
	char *p;
	strcpy(tmpnam, np->n_name);
	p = tmpnam + strlen(tmpnam);
	while (*p != '.' && p != tmpnam)
	  --p;
	/* now p points to dot, or tmpnam, or both */
	if (*p == '.')
	  *p = '\0';		/* null out extension */
	
	/* now tmpnam holds target minus suffix */
	setmacro("*", tmpnam);
#else
	char *ntarget = strdup(np->n_name);
	char *p       = strrchr(ntarget,'.');
	if (*p)
	  p = '\0';
	setmacro("*",ntarget);
#endif
      }
 
      if (lp)		/* lp set if doing a :: rule */
	docmds1(np, lp);
      else
	docmds(np);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级精品三级| 国产精品久久久久aaaa樱花 | 六月丁香婷婷久久| 国产精品资源在线| 色999日韩国产欧美一区二区| 日韩午夜在线观看视频| 亚洲女爱视频在线| 不卡的电影网站| 精品久久久久久久一区二区蜜臀| 亚洲综合免费观看高清完整版在线| 亚洲成精国产精品女| 免费久久99精品国产| av电影一区二区| 国产欧美日韩精品在线| 精油按摩中文字幕久久| 91精品国产高清一区二区三区| ㊣最新国产の精品bt伙计久久| 韩国精品主播一区二区在线观看 | 粉嫩av一区二区三区粉嫩| 欧美一区二区视频观看视频| 一区二区三区日韩欧美精品| 色综合天天综合网国产成人综合天| 国产日韩视频一区二区三区| 激情五月婷婷综合| 久久亚洲一区二区三区明星换脸| 奇米综合一区二区三区精品视频 | 国产精品一区二区你懂的| 91视频免费观看| 国产精品成人免费精品自在线观看| 老司机免费视频一区二区| 欧美日韩精品一区二区三区四区 | 91精品啪在线观看国产60岁| 国产三级三级三级精品8ⅰ区| 精品一区二区在线视频| 精品国一区二区三区| 精品无人码麻豆乱码1区2区| 精品国产乱子伦一区| 国产综合色视频| 中文av字幕一区| 91在线观看高清| 亚洲电影一区二区三区| 精品视频一区二区不卡| 日本va欧美va瓶| 精品日韩一区二区三区免费视频| 久久精品72免费观看| 国产午夜精品一区二区| 不卡在线视频中文字幕| 亚洲精品日韩综合观看成人91| 在线观看网站黄不卡| 亚洲成av人**亚洲成av**| 91精品国产一区二区三区| 久久黄色级2电影| 国产精品欧美一区二区三区| 国产+成+人+亚洲欧洲自线| 亚洲国产高清aⅴ视频| 91麻豆免费看| 美女脱光内衣内裤视频久久网站| 欧美本精品男人aⅴ天堂| 精品无人码麻豆乱码1区2区| 欧美国产一区视频在线观看| 91老司机福利 在线| 日本伊人色综合网| 国产精品国产三级国产普通话99 | 中文字幕一区二区三区在线不卡| 欧美综合在线视频| 国产一区二区三区视频在线播放| 国产精品久久久久久久久图文区| 精品视频123区在线观看| 国产高清不卡二三区| 亚洲国产成人av网| 国产女主播视频一区二区| 欧美性猛片aaaaaaa做受| 国产一区二区免费看| 亚洲一区二区四区蜜桃| 精品久久久影院| 日本丶国产丶欧美色综合| 日韩精品免费专区| 国产精品久久夜| 91麻豆精品国产91久久久资源速度| 国产高清在线精品| 亚洲午夜免费视频| 国产精品家庭影院| 久久久国产精华| 欧美一区二区三区的| 99久久婷婷国产精品综合| 久久成人18免费观看| 午夜精品久久一牛影视| 国产精品欧美综合在线| 欧美精品一区二区在线播放| 91亚洲男人天堂| 国产精品综合av一区二区国产馆| 婷婷综合五月天| 日韩一区有码在线| 日韩欧美综合一区| 678五月天丁香亚洲综合网| 91免费小视频| 成人sese在线| 岛国av在线一区| 国内精品视频666| 蜜桃久久精品一区二区| 亚洲午夜国产一区99re久久| 最新久久zyz资源站| 欧美经典一区二区| 国产网红主播福利一区二区| 欧美一区二区视频网站| 欧美久久久久久久久| 在线免费观看视频一区| 欧美自拍偷拍午夜视频| 色婷婷综合久久久中文字幕| 成人av一区二区三区| 成人黄色综合网站| 99综合影院在线| 91视频免费看| 在线观看视频一区| 欧美另类一区二区三区| 欧美理论电影在线| 日韩一区二区精品葵司在线 | 日本一区二区免费在线观看视频 | 精品少妇一区二区三区在线视频| 91精品国产综合久久蜜臀| 777亚洲妇女| 欧美成人精品福利| 久久综合精品国产一区二区三区| 久久久亚洲精品一区二区三区| 久久久久久亚洲综合| 国产精品九色蝌蚪自拍| 亚洲免费在线视频| 三级一区在线视频先锋| 狠狠网亚洲精品| 岛国精品在线观看| 色婷婷综合视频在线观看| 欧美日韩在线播放一区| 欧美www视频| 国产精品福利一区二区| 亚洲国产精品久久艾草纯爱 | 91影视在线播放| 欧美三级视频在线| 精品久久久久久久久久久院品网| 国产欧美一区二区精品性色| 亚洲婷婷综合色高清在线| 亚洲电影一级黄| 韩国在线一区二区| 高清日韩电视剧大全免费| 一本一道综合狠狠老| 日韩免费一区二区三区在线播放| 国产婷婷一区二区| 亚洲国产综合色| 国产精一区二区三区| 在线一区二区视频| 久久亚区不卡日本| 日韩高清在线不卡| 色综合久久综合网欧美综合网| 久久精品99国产精品日本| 成人永久免费视频| 欧美日本一道本在线视频| 26uuu亚洲综合色| 亚洲中国最大av网站| 蜜桃av一区二区| 色国产精品一区在线观看| 欧美xxxx老人做受| 亚洲一级在线观看| 波多野结衣在线一区| 日韩欧美电影一区| 亚洲精品高清在线| 成人污污视频在线观看| 欧美一卡2卡3卡4卡| 亚洲自拍偷拍综合| www.亚洲激情.com| 26uuu精品一区二区| 三级影片在线观看欧美日韩一区二区| 成人毛片在线观看| 欧美精品一区二区三区蜜臀 | 国产亚洲欧美激情| 日韩成人精品在线| 欧美亚洲国产怡红院影院| 国产精品嫩草影院com| 激情综合五月天| 日韩欧美中文字幕制服| 午夜私人影院久久久久| 91伊人久久大香线蕉| 亚洲国产成人私人影院tom| 免费成人av资源网| 91精品国产欧美一区二区18| 夜夜操天天操亚洲| 在线看日本不卡| 亚洲亚洲精品在线观看| 色呦呦国产精品| 亚洲精品国产精华液| 91视频观看免费| 亚洲免费av在线| 91国产免费看| 亚洲一区二区三区小说| 在线精品视频小说1| 亚洲免费观看高清完整版在线观看熊| 成人高清伦理免费影院在线观看| 中文一区二区完整视频在线观看 | 国产欧美日韩三级| 国产激情视频一区二区三区欧美| 精品久久久久久久久久久久包黑料 | 亚洲一卡二卡三卡四卡五卡|