[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r1946 - Extractor/src/plugins/exiv2
From: |
grothoff |
Subject: |
[GNUnet-SVN] r1946 - Extractor/src/plugins/exiv2 |
Date: |
Fri, 26 Aug 2005 22:18:26 -0700 (PDT) |
Author: grothoff
Date: 2005-08-26 22:18:25 -0700 (Fri, 26 Aug 2005)
New Revision: 1946
Modified:
Extractor/src/plugins/exiv2/Makefile.am
Extractor/src/plugins/exiv2/exiv2extractor.cc
Log:
workaround bug 907
Modified: Extractor/src/plugins/exiv2/Makefile.am
===================================================================
--- Extractor/src/plugins/exiv2/Makefile.am 2005-08-27 04:57:47 UTC (rev
1945)
+++ Extractor/src/plugins/exiv2/Makefile.am 2005-08-27 05:18:25 UTC (rev
1946)
@@ -16,9 +16,9 @@
libextractor_exiv2_la_LINK = \
/bin/sh ../../../libtool --mode=link $(CXXLD) -o libextractor_exiv2.la
libextractor_exiv2_la_LDFLAGS = \
- $(PLUGINFLAGS) $(XTRA_CPPLIBS)
+ $(PLUGINFLAGS) $(XTRA_CPPLIBS) -lpthread
libextractor_exiv2_la_LIBADD = \
- $(top_builddir)/src/main/libextractor.la
+ $(top_builddir)/src/main/libextractor.la -lpthread
libextractor_exiv2_la_SOURCES = \
exiv2extractor.cc exv_conf.h exv_msvc.h \
Modified: Extractor/src/plugins/exiv2/exiv2extractor.cc
===================================================================
--- Extractor/src/plugins/exiv2/exiv2extractor.cc 2005-08-27 04:57:47 UTC
(rev 1945)
+++ Extractor/src/plugins/exiv2/exiv2extractor.cc 2005-08-27 05:18:25 UTC
(rev 1946)
@@ -34,13 +34,14 @@
#include <iomanip>
#include <cassert>
#include <cstring>
-#include <sys/types.h> // for stat()
-#include <sys/stat.h> // for stat()
-#ifdef HAVE_UNISTD_H
-# include <unistd.h> // for stat()
-#endif
#include <math.h>
+
+#define WORKAROUND_905 1
+#if WORKAROUND_905
+#include <pthread.h>
+#endif
+
extern "C" {
static struct EXTRACTOR_Keywords * addKeyword(EXTRACTOR_KeywordType type,
@@ -83,10 +84,17 @@
extern "C" {
+#if WORKAROUND_905
+ static struct EXTRACTOR_Keywords * extract(const char * filename,
+ unsigned char * data,
+ size_t size,
+ struct EXTRACTOR_Keywords *
prev)
+#else
struct EXTRACTOR_Keywords * libextractor_exiv2_extract(const char *
filename,
unsigned char *
data,
size_t size,
struct
EXTRACTOR_Keywords * prev)
+#endif
{
struct EXTRACTOR_Keywords * result = prev;
@@ -426,4 +434,38 @@
return result;
}
+
+
+#if WORKAROUND_905
+
+ struct X {
+ unsigned char * data;
+ size_t size;
+ struct EXTRACTOR_Keywords * prev;
+ };
+
+
+ static void * run(void * arg) {
+ struct X * x = (struct X*) arg;
+ return extract(NULL, x->data, x->size, x->prev);
+ }
+
+ struct EXTRACTOR_Keywords * libextractor_exiv2_extract(const char *
filename,
+ unsigned char *
data,
+ size_t size,
+ struct
EXTRACTOR_Keywords * prev) {
+ pthread_t pt;
+ struct X cls;
+ void * ret;
+ cls.data = data;
+ cls.size = size;
+ cls.prev = prev;
+ if (0 == pthread_create(&pt, NULL, &run, &cls))
+ if (0 == pthread_join(pt, &ret))
+ return (struct EXTRACTOR_Keywords*) ret;
+ return prev;
+ }
+
+#endif
+
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r1946 - Extractor/src/plugins/exiv2,
grothoff <=