Blame tests/open_datafile.c

Packit Service 2e9770
/* open_datafile.c -- Set up datafile context.
Packit Service 2e9770
Packit Service 2e9770
   Usage: Before including this template file in your source file,
Packit Service 2e9770
   #define the prototype of the function under test in the CALL
Packit Service 2e9770
   symbol, see tadd_tmpl.c for an example.
Packit Service 2e9770
Packit Service 2e9770
Copyright (C) 2012, 2013 INRIA
Packit Service 2e9770
Packit Service 2e9770
This file is part of GNU MPC.
Packit Service 2e9770
Packit Service 2e9770
GNU MPC is free software; you can redistribute it and/or modify it under
Packit Service 2e9770
the terms of the GNU Lesser General Public License as published by the
Packit Service 2e9770
Free Software Foundation; either version 3 of the License, or (at your
Packit Service 2e9770
option) any later version.
Packit Service 2e9770
Packit Service 2e9770
GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY
Packit Service 2e9770
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
Packit Service 2e9770
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
Packit Service 2e9770
more details.
Packit Service 2e9770
Packit Service 2e9770
You should have received a copy of the GNU Lesser General Public License
Packit Service 2e9770
along with this program. If not, see http://www.gnu.org/licenses/ .
Packit Service 2e9770
*/
Packit Service 2e9770
Packit Service 2e9770
#include <string.h>
Packit Service 2e9770
#include "mpc-tests.h"
Packit Service 2e9770
Packit Service 2e9770
void
Packit Service 2e9770
open_datafile (mpc_datafile_context_t* datafile_context,
Packit Service 2e9770
               const char * data_filename)
Packit Service 2e9770
{
Packit Service 2e9770
  char *src_dir;
Packit Service 2e9770
  char default_srcdir[] = ".";
Packit Service 2e9770
Packit Service 2e9770
  src_dir = getenv ("srcdir");
Packit Service 2e9770
  if (src_dir == NULL)
Packit Service 2e9770
    src_dir = default_srcdir;
Packit Service 2e9770
Packit Service 2e9770
  datafile_context->pathname =
Packit Service 2e9770
    (char *) malloc ((strlen (src_dir)) + strlen (data_filename) + 2);
Packit Service 2e9770
  if (datafile_context->pathname == NULL)
Packit Service 2e9770
    {
Packit Service 2e9770
      fprintf (stderr, "Cannot allocate memory\n");
Packit Service 2e9770
      exit (1);
Packit Service 2e9770
    }
Packit Service 2e9770
  sprintf (datafile_context->pathname, "%s/%s", src_dir, data_filename);
Packit Service 2e9770
  datafile_context->fd = fopen (datafile_context->pathname, "r");
Packit Service 2e9770
  if (datafile_context->fd == NULL)
Packit Service 2e9770
    {
Packit Service 2e9770
      fprintf (stderr, "Unable to open %s\n", datafile_context->pathname);
Packit Service 2e9770
      exit (1);
Packit Service 2e9770
    }
Packit Service 2e9770
Packit Service 2e9770
  datafile_context->line_number = 1;
Packit Service 2e9770
  datafile_context->nextchar = getc (datafile_context->fd);
Packit Service 2e9770
  tpl_skip_whitespace_comments (datafile_context);
Packit Service 2e9770
}