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

📄 file.c

📁 DSP网络驱动开发_TMS3206
💻 C
📖 第 1 页 / 共 2 页
字号:
   If SIG is nonzero, this was caused by a fatal signal,   meaning that a different message will be printed, and   the message will go to stderr rather than stdout.  */voidremove_intermediates (sig)     int sig;{  register int i;  register struct file *f;  char doneany;  if (question_flag || touch_flag)    return;  if (sig && just_print_flag)    return;  doneany = 0;  for (i = 0; i < FILE_BUCKETS; ++i)    for (f = files[i]; f != 0; f = f->next)      if (f->intermediate && (f->dontcare || !f->precious)	  && !f->secondary)	{	  int status;	  if (f->update_status == -1)	    /* If nothing would have created this file yet,	       don't print an "rm" command for it.  */            continue; 	  else if (just_print_flag)  	    status = 0;	  else	    {	      status = unlink (f->name);	      if (status < 0 && errno == ENOENT)		continue;	    }	  if (!f->dontcare)	    {	      if (sig)		error (NILF, _("*** Deleting intermediate file `%s'"), f->name);	      else if (!silent_flag)		{		  if (! doneany)		    {		      fputs ("rm ", stdout);		      doneany = 1;		    }		  else		    putchar (' ');		  fputs (f->name, stdout);		  fflush (stdout);		}	      if (status < 0)		perror_with_name ("unlink: ", f->name);	    }	}  if (doneany && !sig)    {      putchar ('\n');      fflush (stdout);    }}/* For each dependency of each file, make the `struct dep' point   at the appropriate `struct file' (which may have to be created).   Also mark the files depended on by .PRECIOUS, .PHONY, .SILENT,   and various other special targets.  */voidsnap_deps (){  register struct file *f, *f2;  register struct dep *d;  register int i;  /* Enter each dependency name as a file.  */  for (i = 0; i < FILE_BUCKETS; ++i)    for (f = files[i]; f != 0; f = f->next)      for (f2 = f; f2 != 0; f2 = f2->prev)	for (d = f2->deps; d != 0; d = d->next)	  if (d->name != 0)	    {	      d->file = lookup_file (d->name);	      if (d->file == 0)		d->file = enter_file (d->name);	      else		free (d->name);	      d->name = 0;	    }  for (f = lookup_file (".PRECIOUS"); f != 0; f = f->prev)    for (d = f->deps; d != 0; d = d->next)      for (f2 = d->file; f2 != 0; f2 = f2->prev)	f2->precious = 1;  for (f = lookup_file (".PHONY"); f != 0; f = f->prev)    for (d = f->deps; d != 0; d = d->next)      for (f2 = d->file; f2 != 0; f2 = f2->prev)	{	  /* Mark this file as phony and nonexistent.  */	  f2->phony = 1;	  f2->last_mtime = (FILE_TIMESTAMP) -1;	  f2->mtime_before_update = (FILE_TIMESTAMP) -1;	}  for (f = lookup_file (".INTERMEDIATE"); f != 0; f = f->prev)    {      /* .INTERMEDIATE with deps listed	 marks those deps as intermediate files.  */      for (d = f->deps; d != 0; d = d->next)	for (f2 = d->file; f2 != 0; f2 = f2->prev)	  f2->intermediate = 1;      /* .INTERMEDIATE with no deps does nothing.	 Marking all files as intermediates is useless	 since the goal targets would be deleted after they are built.  */    }  for (f = lookup_file (".SECONDARY"); f != 0; f = f->prev)    {      /* .SECONDARY with deps listed	 marks those deps as intermediate files	 in that they don't get rebuilt if not actually needed;	 but unlike real intermediate files,	 these are not deleted after make finishes.  */      if (f->deps)	{	  for (d = f->deps; d != 0; d = d->next)	    for (f2 = d->file; f2 != 0; f2 = f2->prev)	      f2->intermediate = f2->secondary = 1;	}      /* .SECONDARY with no deps listed marks *all* files that way.  */      else	{	  int i;	  for (i = 0; i < FILE_BUCKETS; i++)	    for (f2 = files[i]; f2; f2= f2->next)	      f2->intermediate = f2->secondary = 1;	}    }  f = lookup_file (".EXPORT_ALL_VARIABLES");  if (f != 0 && f->is_target)    export_all_variables = 1;  f = lookup_file (".IGNORE");  if (f != 0 && f->is_target)    {      if (f->deps == 0)	ignore_errors_flag = 1;      else	for (d = f->deps; d != 0; d = d->next)	  for (f2 = d->file; f2 != 0; f2 = f2->prev)	    f2->command_flags |= COMMANDS_NOERROR;    }  f = lookup_file (".SILENT");  if (f != 0 && f->is_target)    {      if (f->deps == 0)	silent_flag = 1;      else	for (d = f->deps; d != 0; d = d->next)	  for (f2 = d->file; f2 != 0; f2 = f2->prev)	    f2->command_flags |= COMMANDS_SILENT;    }  f = lookup_file (".POSIX");  if (f != 0 && f->is_target)    posix_pedantic = 1;}/* Set the `command_state' member of FILE and all its `also_make's.  */voidset_command_state (file, state)     struct file *file;     int state;{  struct dep *d;  file->command_state = state;  for (d = file->also_make; d != 0; d = d->next)    d->file->command_state = state;}/* Get and print file timestamps.  */FILE_TIMESTAMPfile_timestamp_now (){#if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME  struct timespec timespec;  if (clock_gettime (CLOCK_REALTIME, &timespec) == 0)    return FILE_TIMESTAMP_FROM_S_AND_NS (timespec.tv_sec, timespec.tv_nsec);#endif  return FILE_TIMESTAMP_FROM_S_AND_NS (time ((time_t *) 0), 0);}voidfile_timestamp_sprintf (p, ts)     char *p;     FILE_TIMESTAMP ts;{  time_t t = FILE_TIMESTAMP_S (ts);  struct tm *tm = localtime (&t);  if (tm)    sprintf (p, "%04d-%02d-%02d %02d:%02d:%02d",	     tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,	     tm->tm_hour, tm->tm_min, tm->tm_sec);  else if (t < 0)    sprintf (p, "%ld", (long) t);  else    sprintf (p, "%lu", (unsigned long) t);  p += strlen (p);  /* Append nanoseconds as a fraction, but remove trailing zeros.     We don't know the actual timestamp resolution, since clock_getres     applies only to local times, whereas this timestamp might come     from a remote filesystem.  So removing trailing zeros is the     best guess that we can do.  */  sprintf (p, ".%09ld", (long) FILE_TIMESTAMP_NS (ts));  p += strlen (p) - 1;  while (*p == '0')    p--;  p += *p != '.';  *p = '\0';}/* Print the data base of files.  */static voidprint_file (f)     struct file *f;{  register struct dep *d;  putchar ('\n');  if (!f->is_target)    puts (_("# Not a target:"));  printf ("%s:%s", f->name, f->double_colon ? ":" : "");  for (d = f->deps; d != 0; d = d->next)    printf (" %s", dep_name (d));  putchar ('\n');  if (f->precious)    puts (_("#  Precious file (prerequisite of .PRECIOUS)."));  if (f->phony)    puts (_("#  Phony target (prerequisite of .PHONY)."));  if (f->cmd_target)    puts (_("#  Command-line target."));  if (f->dontcare)    puts (_("#  A default or MAKEFILES makefile."));  printf (_("#  Implicit rule search has%s been done.\n"),	  f->tried_implicit ? "" : _(" not"));  if (f->stem != 0)    printf (_("#  Implicit/static pattern stem: `%s'\n"), f->stem);  if (f->intermediate)    puts (_("#  File is an intermediate prerequisite."));  if (f->also_make != 0)    {      fputs (_("#  Also makes:"), stdout);      for (d = f->also_make; d != 0; d = d->next)	printf (" %s", dep_name (d));      putchar ('\n');    }  if (f->last_mtime == 0)    puts (_("#  Modification time never checked."));  else if (f->last_mtime == (FILE_TIMESTAMP) -1)    puts (_("#  File does not exist."));  else    {      char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1];      file_timestamp_sprintf (buf, f->last_mtime);      printf (_("#  Last modified %s\n"), buf);    }  printf (_("#  File has%s been updated.\n"),	  f->updated ? "" : _(" not"));  switch (f->command_state)    {    case cs_running:      puts (_("#  Commands currently running (THIS IS A BUG)."));      break;    case cs_deps_running:      puts (_("#  Dependencies commands running (THIS IS A BUG)."));      break;    case cs_not_started:    case cs_finished:      switch (f->update_status)	{	case -1:	  break;	case 0:	  puts (_("#  Successfully updated."));	  break;	case 1:	  assert (question_flag);	  puts (_("#  Needs to be updated (-q is set)."));	  break;	case 2:	  puts (_("#  Failed to be updated."));	  break;	default:	  puts (_("#  Invalid value in `update_status' member!"));	  fflush (stdout);	  fflush (stderr);	  abort ();	}      break;    default:      puts (_("#  Invalid value in `command_state' member!"));      fflush (stdout);      fflush (stderr);      abort ();    }  if (f->variables != 0)    print_file_variables (f);  if (f->cmds != 0)    print_commands (f->cmds);}voidprint_file_data_base (){  register unsigned int i, nfiles, per_bucket;  register struct file *file;  puts (_("\n# Files"));  per_bucket = nfiles = 0;  for (i = 0; i < FILE_BUCKETS; ++i)    {      register unsigned int this_bucket = 0;      for (file = files[i]; file != 0; file = file->next)	{	  register struct file *f;	  ++this_bucket;	  for (f = file; f != 0; f = f->prev)	    print_file (f);	}      nfiles += this_bucket;      if (this_bucket > per_bucket)	per_bucket = this_bucket;    }  if (nfiles == 0)    puts (_("\n# No files."));  else    {      printf (_("\n# %u files in %u hash buckets.\n"), nfiles, FILE_BUCKETS);#ifndef	NO_FLOAT      printf (_("# average %.3f files per bucket, max %u files in one bucket.\n"),	      ((double) nfiles) / ((double) FILE_BUCKETS), per_bucket);#endif    }}/* EOF */

⌨️ 快捷键说明

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