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); }
/* * 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); }