diff options
Diffstat (limited to 'src/yelp-page.c')
-rw-r--r-- | src/yelp-page.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/yelp-page.c b/src/yelp-page.c index 00fce62d..c0ad894e 100644 --- a/src/yelp-page.c +++ b/src/yelp-page.c @@ -61,6 +61,14 @@ yelp_page_new_string (YelpDocument *document, return page; } +gsize +yelp_page_get_length (YelpPage *page) +{ + g_return_val_if_fail (page != NULL, 0); + + return page->content_len; +} + GIOStatus yelp_page_read (YelpPage *page, gchar *buffer, @@ -84,8 +92,15 @@ page_read_string (YelpPage *page, gsize *bytes_read, YelpError **error) { + gint real_count = 0; g_return_val_if_fail (page != NULL, G_IO_STATUS_ERROR); + if (count < 0) { + real_count = (page->content_len - page->content_offset) + 1; + } else { + real_count = count; + } + if (page->content_offset == page->content_len) { /* FIXME: set the error */ @@ -95,7 +110,7 @@ page_read_string (YelpPage *page, /* FIXME: set the error */ return G_IO_STATUS_ERROR; } - else if (page->content_offset + count <= page->content_len) { + else if (page->content_offset + real_count <= page->content_len) { strncpy (buffer, page->content + page->content_offset, count); page->content_offset += count; *bytes_read = count; |