Пример #1
0
scew_bool
buffer_end_ (scew_reader *reader)
{
  scew_reader_buffer *buf_reader = NULL;

  assert (reader != NULL);

  buf_reader = scew_reader_data (reader);

  return (buf_reader->current >= buf_reader->size);
}
Пример #2
0
scew_bool
file_error_ (scew_reader *reader)
{
    scew_reader_fp *fp_reader = NULL;

    assert (reader != NULL);

    fp_reader = scew_reader_data (reader);

    return (ferror (fp_reader->file) != 0);
}
Пример #3
0
void
file_free_ (scew_reader *reader)
{
    scew_reader_fp *fp_reader = NULL;

    assert (reader != NULL);

    /* Close the file before freeing the reader. */
    file_close_ (reader);

    fp_reader = scew_reader_data (reader);
    free (fp_reader);
}
Пример #4
0
void
buffer_free_ (scew_reader *reader)
{
  scew_reader_buffer *buf_reader = NULL;

  assert (reader != NULL);

  /* Close the buffer before freeing the reader. */
  buffer_close_ (reader);

  buf_reader = scew_reader_data (reader);
  free (buf_reader);
}
Пример #5
0
scew_bool
buffer_close_ (scew_reader *reader)
{
  scew_reader_buffer *buf_reader = NULL;

  assert (reader != NULL);

  buf_reader = scew_reader_data (reader);

  /* This will mark it as EOR. */
  buf_reader->current = buf_reader->size;

  return SCEW_TRUE;
}
Пример #6
0
size_t
file_read_ (scew_reader *reader, XML_Char *buffer, size_t char_no)
{
    size_t read_no = 0;
    scew_reader_fp *fp_reader = NULL;

    assert (reader != NULL);
    assert (buffer != NULL);

    fp_reader = scew_reader_data (reader);

    read_no = fread (buffer, sizeof (XML_Char), char_no, fp_reader->file);

    buffer[read_no] = _XT('\0');

    return read_no;
}
Пример #7
0
scew_bool
file_end_ (scew_reader *reader)
{
    scew_bool closed = SCEW_FALSE;
    scew_reader_fp *fp_reader = NULL;

    assert (reader != NULL);

    fp_reader = scew_reader_data (reader);

    /* If file is already closed, return true as well. */
    closed = fp_reader->closed;
    if (!closed)
    {
        /* Check end of file. */
        int end = feof (fp_reader->file);
        closed = ((-1 == end) || (end != 0)) ? SCEW_TRUE : SCEW_FALSE;
    }

    return closed;
}
Пример #8
0
size_t
buffer_read_ (scew_reader *reader, XML_Char *buffer, size_t char_no)
{
  size_t read_no = 0;
  size_t maxlen = 0;
  scew_reader_buffer *buf_reader = NULL;

  assert (reader != NULL);
  assert (buffer != NULL);

  buf_reader = scew_reader_data (reader);

  /* Get maximum number of available bytes in buffer. */
  maxlen = buf_reader->size - buf_reader->current;
  read_no = (char_no > maxlen) ? maxlen : char_no;

  scew_memcpy (buffer, buf_reader->buffer + buf_reader->current, read_no);
  buf_reader->current += read_no;

  return read_no;
}
Пример #9
0
scew_bool
file_close_ (scew_reader *reader)
{
    int status = 0;
    scew_reader_fp *fp_reader = NULL;

    assert (reader != NULL);

    fp_reader = scew_reader_data (reader);

    /* Do not close already closed file or standard input stream. */
    if (fp_reader->closed || (stdin == fp_reader->file))
    {
        fp_reader->closed = SCEW_TRUE;
    }
    else
    {
        /* Set closed flag if we are actually able to close it. */
        status = fclose (fp_reader->file);
        fp_reader->closed = (0 == status);
    }

    return fp_reader->closed;
}