static void
test_read__return_EOF(ScmObj port)
{
  SCM_REFSTK_INIT_REG(&port);

  for (int i = 0; i < TEST_FILE_NR_S_EXPR; i++)
    scm_read(port);

  TEST_ASSERT_TRUE(scm_eof_object_p(scm_read(port)));
}
Exemplo n.º 2
0
static ssize_t
port_read (void *cookie, char *buf, size_t siz)
{
  SCM port = PTR2SCM (cookie);

#ifdef GUILE_CHARS_ARE_UCS4
  int c;
  if (siz >= 1)
    {
      c = scm_get_byte_or_eof (port);

      if (c == EOF)
	return 0;
      else
	buf[0] = c;

      return 1;
    }
  else
    return PORT_ERR;
#else
  /* For Guile 1.8.x, we use scm_read_char so we can preserve line
     and column information.  */
  SCM c;
  if (siz >= 1)
    {
      c = scm_read_char (port);

      if (scm_is_true (scm_eof_object_p (c)))
	return 0;
      else
	buf[0] = scm_to_char (c);

      return 1;
    }
  else
    return PORT_ERR;
#endif
}
Exemplo n.º 3
0
ScmObj
scm_eof_object_P(ScmObj obj)
{
  return scm_eof_object_p(obj) ? SCM_TRUE_OBJ : SCM_FALSE_OBJ;
}