Exemple #1
0
static void
log_c_test (const char *filename, const char *action)
{
  char *source;
  char **lines;
  int i;

  source = jb_read_file_or_exit(filename);
  lines = g_strsplit(source, "\n", 0);
  g_free(source);

  jb_log("attempting to %s program %s:", action, filename);

  for (i = 0; lines[i] != NULL; i++)
    {
      const char *line = lines[i];

      /* do not output a spurious empty last line */
      if (*line == '\0' && lines[i + 1] == NULL)
	break;

      jb_log("%4i %s", i + 1, lines[i]);
    }

  jb_log(JB_SEPARATOR);

  g_strfreev(lines);
}
void
jb_subst (const char *infile,
	  const char *outfile,
	  GHashTable *variables)
{
  char *contents;
  char *result;
  char *tmp_outfile;

  g_return_if_fail(infile != NULL);
  g_return_if_fail(outfile != NULL);
  g_return_if_fail(variables != NULL);

  contents = jb_read_file_or_exit(infile);
  result = subst_real(contents, variables);
  g_free(contents);

  tmp_outfile = g_strdup_printf("%s.tmp", outfile);
  jb_write_file_or_exit(tmp_outfile, result);
  g_free(result);

  jb_rename(tmp_outfile, outfile);
  g_free(tmp_outfile);
}