[tracker] tracker-extract, libtracker-extract: GB#579051, Provide a tracker_getline
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] tracker-extract, libtracker-extract: GB#579051, Provide a tracker_getline
- Date: Wed, 28 Apr 2010 12:26:11 +0000 (UTC)
commit 73df16e822bd193f58a2503903a2e61e2a21f7ef
Author: Philip Van Hoof <philip codeminded be>
Date: Wed Apr 28 14:07:37 2010 +0200
tracker-extract, libtracker-extract: GB#579051, Provide a tracker_getline
For platforms that miss the getline() function.
src/libtracker-extract/tracker-utils.c | 93 +++++++++++++++++++++++++++++
src/libtracker-extract/tracker-utils.h | 7 ++-
src/tracker-extract/tracker-extract-abw.c | 3 +-
src/tracker-extract/tracker-extract-ps.c | 82 +-------------------------
4 files changed, 102 insertions(+), 83 deletions(-)
---
diff --git a/src/libtracker-extract/tracker-utils.c b/src/libtracker-extract/tracker-utils.c
index 687861b..1b2e051 100644
--- a/src/libtracker-extract/tracker-utils.c
+++ b/src/libtracker-extract/tracker-utils.c
@@ -20,14 +20,34 @@
#include "config.h"
#define _XOPEN_SOURCE
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
#include <time.h>
#include <string.h>
+#include <stdio.h>
#include <libtracker-common/tracker-utils.h>
#include <libtracker-common/tracker-date-time.h>
#include "tracker-utils.h"
+#ifndef HAVE_GETLINE
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <errno.h>
+
+#undef getdelim
+#undef getline
+
+#define GROW_BY 80
+
+#endif /* HAVE_GETLINE */
+
#define DATE_FORMAT_ISO8601 "%Y-%m-%dT%H:%M:%S%z"
/**
@@ -752,3 +772,76 @@ tracker_date_guess (const gchar *date_string)
return g_strdup (date_string);
}
+
+#ifndef HAVE_GETLINE
+static gint
+my_igetdelim (gchar **linebuf,
+ guint *linebufsz,
+ gint delimiter,
+ FILE *file)
+{
+ gint ch;
+ gint idx;
+
+ if ((file == NULL || linebuf == NULL || *linebuf == NULL || *linebufsz == 0) &&
+ !(*linebuf == NULL && *linebufsz == 0)) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (*linebuf == NULL && *linebufsz == 0) {
+ *linebuf = g_malloc (GROW_BY);
+
+ if (!*linebuf) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ *linebufsz += GROW_BY;
+ }
+
+ idx = 0;
+
+ while ((ch = fgetc (file)) != EOF) {
+ /* Grow the line buffer as necessary */
+ while (idx > *linebufsz - 2) {
+ *linebuf = g_realloc (*linebuf, *linebufsz += GROW_BY);
+
+ if (!*linebuf) {
+ errno = ENOMEM;
+ return -1;
+ }
+ }
+ (*linebuf)[idx++] = (gchar) ch;
+
+ if ((gchar) ch == delimiter) {
+ break;
+ }
+ }
+
+ if (idx != 0) {
+ (*linebuf)[idx] = 0;
+ } else if ( ch == EOF ) {
+ return -1;
+ }
+
+ return idx;
+}
+
+gint
+tracker_getline (gchar **lineptr,
+ guint *n,
+ FILE *stream)
+{
+ return my_igetdelim (lineptr, n, '\n', stream);
+}
+
+#else
+gint
+tracker_getline (gchar **lineptr,
+ guint *n,
+ FILE *stream)
+{
+ return getline (lineptr, n, stream);
+}
+#endif /* HAVE_GETLINE */
diff --git a/src/libtracker-extract/tracker-utils.h b/src/libtracker-extract/tracker-utils.h
index 052b2dd..50e7f2a 100644
--- a/src/libtracker-extract/tracker-utils.h
+++ b/src/libtracker-extract/tracker-utils.h
@@ -17,6 +17,8 @@
* Boston, MA 02110-1301, USA.
*/
+#include <stdio.h>
+
#ifndef __LIBTRACKER_EXTRACT_UTILS_H__
#define __LIBTRACKER_EXTRACT_UTILS_H__
@@ -42,9 +44,12 @@ gchar* tracker_date_format_to_iso8601 (const gchar *date_string,
const gchar *format);
const gchar* tracker_coalesce_strip (gint n_values,
...);
-gchar* tracker_merge_const (const gchar *delimiter,
+gchar* tracker_merge_const (const gchar *delimiter,
gint n_values,
...);
+gint tracker_getline (gchar **lineptr,
+ guint *n,
+ FILE *stream);
G_END_DECLS
diff --git a/src/tracker-extract/tracker-extract-abw.c b/src/tracker-extract/tracker-extract-abw.c
index 19b60f8..6be54e2 100644
--- a/src/tracker-extract/tracker-extract-abw.c
+++ b/src/tracker-extract/tracker-extract-abw.c
@@ -46,6 +46,7 @@ static TrackerExtractData data[] = {
{ NULL, NULL }
};
+
static void
extract_abw (const gchar *uri,
TrackerSparqlBuilder *preupdate,
@@ -69,7 +70,7 @@ extract_abw (const gchar *uri,
tracker_sparql_builder_predicate (metadata, "a");
tracker_sparql_builder_object (metadata, "nfo:Document");
- while ((read_char = getline (&line, &length, f)) != -1) {
+ while ((read_char = tracker_getline (&line, &length, f)) != -1) {
if (g_str_has_suffix (line, "</m>\n")) {
line[read_char - 5] = '\0';
}
diff --git a/src/tracker-extract/tracker-extract-ps.c b/src/tracker-extract/tracker-extract-ps.c
index 7ec62c0..9ff0242 100644
--- a/src/tracker-extract/tracker-extract-ps.c
+++ b/src/tracker-extract/tracker-extract-ps.c
@@ -38,20 +38,6 @@
#include <libtracker-extract/tracker-extract.h>
-#ifndef HAVE_GETLINE
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <errno.h>
-
-#undef getdelim
-#undef getline
-
-#define GROW_BY 80
-
-#endif /* HAVE_GETLINE */
-
#ifdef USING_UNZIPPSFILES
static void extract_ps_gz (const gchar *uri,
TrackerSparqlBuilder *preupdate,
@@ -69,72 +55,6 @@ static TrackerExtractData data[] = {
{ NULL, NULL }
};
-#ifndef HAVE_GETLINE
-
-static ssize_t
-igetdelim (gchar **linebuf,
- size_t *linebufsz,
- gint delimiter,
- FILE *file)
-{
- gint ch;
- gint idx;
-
- if ((file == NULL || linebuf == NULL || *linebuf == NULL || *linebufsz == 0) &&
- !(*linebuf == NULL && *linebufsz == 0)) {
- errno = EINVAL;
- return -1;
- }
-
- if (*linebuf == NULL && *linebufsz == 0) {
- *linebuf = g_malloc (GROW_BY);
-
- if (!*linebuf) {
- errno = ENOMEM;
- return -1;
- }
-
- *linebufsz += GROW_BY;
- }
-
- idx = 0;
-
- while ((ch = fgetc (file)) != EOF) {
- /* Grow the line buffer as necessary */
- while (idx > *linebufsz - 2) {
- *linebuf = g_realloc (*linebuf, *linebufsz += GROW_BY);
-
- if (!*linebuf) {
- errno = ENOMEM;
- return -1;
- }
- }
- (*linebuf)[idx++] = (gchar) ch;
-
- if ((gchar) ch == delimiter) {
- break;
- }
- }
-
- if (idx != 0) {
- (*linebuf)[idx] = 0;
- } else if ( ch == EOF ) {
- return -1;
- }
-
- return idx;
-}
-
-static gint
-getline (gchar **s,
- guint *lim,
- FILE *stream)
-{
- return igetdelim (s, lim, '\n', stream);
-}
-
-#endif /* HAVE_GETLINE */
-
static gchar *
hour_day_str_day (const gchar *date)
{
@@ -234,7 +154,7 @@ extract_ps_from_filestream (FILE *f,
* b) No more lines to read
*/
while ((accum < max_bytes) &&
- (read_char = getline (&line, &length, f)) != -1) {
+ (read_char = tracker_getline (&line, &length, f)) != -1) {
gboolean pageno_atend = FALSE;
gboolean header_finished = FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]