static void
do_local_include (char *hdrname, char *pathname)
{
  FILE *f;
  char tmp[512];

  sprintf (tmp, "%s/%s", pathname, hdrname);

  if (dupe_file (tmp))
    {
      return;
    }

  if ((f = fopen (tmp, "r")) == NULL)
    {
#if 1
      do_global_include (hdrname, pathname);
      return;
#else
      perror (tmp);
      printf ("\n");
      exit (-1);
#endif
    }

  sprintf (tmp, "%s ", tmp);
  parse_f (f, pathname);
  printf ("\\\n  %s ", tmp);

  fclose (f);
}
static void
do_global_include (char *hdrname, char *pathname)
{
  FILE *f;
  int i;

  char tmp[512];
  sprintf (tmp, "%s/%s", pathname, hdrname);

  if (dupe_file (tmp))
    return;
  if ((f = fopen (tmp, "r")) != NULL)
    {
      printf ("%s ", tmp);
      parse_f (f, pathname);
      fclose (f);
      return;
    }

  for (i = 0; i < ndirs; i++)
    {
      sprintf (tmp, "%s/%s", dirs[i], hdrname);
      if (dupe_file (tmp))
	return;

      if ((f = fopen (tmp, "r")) == NULL)
	continue;
      printf ("\\\n  %s ", tmp);

      parse_f (f, dirs[i]);
      fclose (f);
      return;
    }

  fprintf (stderr, "Cannot locate <%s>\n", hdrname);
  printf ("\n");
  exit (-1);
}
static void
parse_sourcefile (char *srcname)
{
  FILE *f;
  char *s, *p;
  char origname[64];

  strcpy (origname, srcname);

  s = NULL;

  p = srcname;
  while (*p)
    {
      if (*p == '.')
	s = p;
      p++;
    }

  if (*s != '.')
    {
      fprintf (stderr, "Bad file name %s\n", srcname);
      printf ("\n");
      exit (-1);
    }

  if ((f = fopen (srcname, "r")) == NULL)
    {
      perror (srcname);
      printf ("\n");
      exit (-1);
    }

  *s++ = 0;
  printf ("%s.o: %s ", srcname, origname);

  parse_f (f, ".");
  printf ("\n");
  fclose (f);
}
示例#4
0
/* 
 * check defined named "name" to see if
 * it has the value "value".  true
 * if it does
 */
bool define_with_value (const char *name, const int value) {
	define_t *define = search_defines (name);
	if (define == NULL) return false;
	
	return (parse_f (define->contents) == value);
}