- src = xcalloc (1, sizeof (source_t));
- src->name = xstrdup (file_name);
- src->coverage.name = src->name;
- src->index = sources ? sources->index + 1 : 1;
- src->next = sources;
- sources = src;
+ if (!src)
+ {
+ src = XCNEW (source_t);
+ src->name = xstrdup (file_name);
+ src->coverage.name = src->name;
+ src->index = source_index++;
+ src->next = sources;
+ sources = src;
+
+ if (!stat (file_name, &status))
+ src->file_time = status.st_mtime;
+ }
+
+ if (src->file_time > bbg_file_time)
+ {
+ static int info_emitted;
+
+ fnotice (stderr, "%s:source file is newer than graph file '%s'\n",
+ src->name, bbg_file_name);
+ if (!info_emitted)
+ {
+ fnotice (stderr,
+ "(the message is only displayed one per source file)\n");
+ info_emitted = 1;
+ }
+ src->file_time = 0;
+ }