[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r3400 - Extractor/src/plugins
From: |
grothoff |
Subject: |
[GNUnet-SVN] r3400 - Extractor/src/plugins |
Date: |
Thu, 14 Sep 2006 08:52:38 -0700 (PDT) |
Author: grothoff
Date: 2006-09-14 08:52:31 -0700 (Thu, 14 Sep 2006)
New Revision: 3400
Modified:
Extractor/src/plugins/Makefile.am
Extractor/src/plugins/mimeextractor.c
Log:
fixing svg detection
Modified: Extractor/src/plugins/Makefile.am
===================================================================
--- Extractor/src/plugins/Makefile.am 2006-09-14 06:15:21 UTC (rev 3399)
+++ Extractor/src/plugins/Makefile.am 2006-09-14 15:52:31 UTC (rev 3400)
@@ -309,7 +309,7 @@
$(PLUGINFLAGS) $(retaincommand) -lQtCore4 -lQtGui4 $(svgflags)
install-exec-hook:
- mkdir $(DESTDIR)$(plugindir) &> /dev/null
+ mkdir -p $(DESTDIR)$(plugindir) &> /dev/null || true
rm -f $(DESTDIR)$(plugindir)/libextractor_thumbnail$(LIBEXT); \
rm -f $(DESTDIR)$(plugindir)/libextractor_thumbnail.la; \
if test "$(thumbdir)" != ""; then \
Modified: Extractor/src/plugins/mimeextractor.c
===================================================================
--- Extractor/src/plugins/mimeextractor.c 2006-09-14 06:15:21 UTC (rev
3399)
+++ Extractor/src/plugins/mimeextractor.c 2006-09-14 15:52:31 UTC (rev
3400)
@@ -43,7 +43,7 @@
* @param arg closure...
* @return 0 if the file does not match, 1 if it does
**/
-typedef int (*Detector)(char * data,
+typedef int (*Detector)(const char * data,
size_t len,
void * arg);
@@ -53,7 +53,7 @@
* @param len the length of the file
* @return always 1
**/
-static int defaultDetector(char * data,
+static int defaultDetector(const char * data,
size_t len,
void * arg) {
return 1;
@@ -65,7 +65,7 @@
* @param len the length of the file
* @return always 0
**/
-static int disableDetector(char * data,
+static int disableDetector(const char * data,
size_t len,
void * arg) {
return 0;
@@ -110,9 +110,11 @@
* entries in the main table, so this "AND" (all match) semantics are
* the only reasonable answer.
**/
-static int xPatternMatcher(char * data,
+static int xPatternMatcher(const char * data,
size_t len,
- ExtraPattern * arg) {
+ void * cls) {
+ ExtraPattern * arg = cls;
+
while (arg->pattern != NULL) {
if (arg->pos + arg->len > len)
return 0;
@@ -128,40 +130,44 @@
/**
* Detect SVG
*/
-static int svgMatcher(char *data,
+static int svgMatcher(const char *data,
size_t len,
- ExtraPattern *arg) {
- enum {XMLSTART, XMLCLOSE, SVGSTART, ABORT, OK} state;
+ void * cls) {
+ enum {XMLSTART, XMLCLOSE, SVGSTART} state;
size_t i;
i = 0;
state = XMLSTART;
- while (i < len && state != ABORT) {
+ while (i < len) {
+ if (! isprint(data[i]))
+ return 0;
switch (state) {
case XMLSTART:
if (i + 6 >= len)
- state = ABORT;
+ return 0;
else if (memcmp(data + i, "<?xml", 5) == 0 && isspace(*(data + i + 5)))
state = XMLCLOSE;
break;
case XMLCLOSE:
if (i + 2 >= len)
- state = ABORT;
+ return 0;
else if (memcmp(data + i, "?>", 2) == 0)
state = SVGSTART;
break;
case SVGSTART:
if (i + 5 >= len)
- state = ABORT;
+ return 0;
else if (memcmp(data + i, "<svg", 4) == 0 && isspace(*(data + i + 4)))
- state = OK;
- }
-
+ return 1;
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
i++;
- }
-
- return state == OK;
+ }
+ return 0;
}
/**
@@ -179,7 +185,7 @@
/**
* Select an entry in xpatterns for matching
**/
-#define XPATTERN(a) (Detector)&xPatternMatcher, &xpatterns[(a)]
+#define XPATTERN(a) &xPatternMatcher, &xpatterns[(a)]
typedef struct Pattern {
char * pattern;
@@ -275,14 +281,15 @@
{ "#!/bin/csh", 10, "application/x-shellscript", DEFAULT},
{ "#!/bin/tcsh", 11, "application/x-shellscript", DEFAULT},
{ "#!/bin/perl", 11, "application/x-perl", DEFAULT},
- { "", 0, "image/svg+xml", svgMatcher, NULL},
+ { "<?xml", 5, "image/svg+xml", svgMatcher, NULL},
{NULL, 0, NULL, DISABLED},
};
-struct EXTRACTOR_Keywords * libextractor_mime_extract(char * filename,
- char * data,
- size_t size,
- struct
EXTRACTOR_Keywords * prev) {
+struct EXTRACTOR_Keywords *
+libextractor_mime_extract(const char * filename,
+ const char * data,
+ size_t size,
+ struct EXTRACTOR_Keywords * prev) {
int i;
const char * mime;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r3400 - Extractor/src/plugins,
grothoff <=