gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r23189 - Extractor/src/plugins


From: gnunet
Subject: [GNUnet-SVN] r23189 - Extractor/src/plugins
Date: Thu, 9 Aug 2012 23:35:13 +0200

Author: grothoff
Date: 2012-08-09 23:35:13 +0200 (Thu, 09 Aug 2012)
New Revision: 23189

Added:
   Extractor/src/plugins/test_it.c
Modified:
   Extractor/src/plugins/Makefile.am
   Extractor/src/plugins/it_extractor.c
   Extractor/src/plugins/s3m_extractor.c
Log:
it testcase

Modified: Extractor/src/plugins/Makefile.am
===================================================================
--- Extractor/src/plugins/Makefile.am   2012-08-09 21:29:49 UTC (rev 23188)
+++ Extractor/src/plugins/Makefile.am   2012-08-09 21:35:13 UTC (rev 23189)
@@ -23,7 +23,8 @@
   testdata/mpeg_alien.mpg \
   testdata/mpeg_melt.mpg \
   testdata/wav_noise.wav \
-  testdata/wav_alert.wav
+  testdata/wav_alert.wav \
+  testdata/it_dawn.it 
 
 if HAVE_VORBISFILE
 PLUGIN_OGG=libextractor_ogg.la
@@ -69,6 +70,7 @@
 plugin_LTLIBRARIES = \
   libextractor_it.la \
   libextractor_xm.la \
+  libextractor_s3m.la \
   libextractor_wav.la \
   $(PLUGIN_OGG) \
   $(PLUGIN_MIME) \
@@ -85,6 +87,7 @@
 
 check_PROGRAMS = \
   test_wav \
+  test_it \
   $(TEST_OGG) \
   $(TEST_MIME) \
   $(TEST_GIF) \
@@ -113,12 +116,24 @@
 libextractor_xm_la_LDFLAGS = \
   $(PLUGINFLAGS)
 
+
 libextractor_it_la_SOURCES = \
   it_extractor.c
 libextractor_it_la_LDFLAGS = \
   $(PLUGINFLAGS)
 
+test_it_SOURCES = \
+  test_it.c
+test_it_LDADD = \
+  $(top_builddir)/src/plugins/libtest.la
 
+
+libextractor_s3m_la_SOURCES = \
+  s3m_extractor.c
+libextractor_s3m_la_LDFLAGS = \
+  $(PLUGINFLAGS)
+
+
 libextractor_wav_la_SOURCES = \
   wav_extractor.c
 libextractor_wav_la_LDFLAGS = \

Modified: Extractor/src/plugins/it_extractor.c
===================================================================
--- Extractor/src/plugins/it_extractor.c        2012-08-09 21:29:49 UTC (rev 
23188)
+++ Extractor/src/plugins/it_extractor.c        2012-08-09 21:35:13 UTC (rev 
23189)
@@ -4,7 +4,7 @@
  *
  * libextractor is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
+ * by the Free Software Foundation; either version 3, or (at your
  * option) any later version.
  *
  * libextractor is distributed in the hope that it will be useful, but
@@ -85,8 +85,8 @@
                     EXTRACTOR_METATYPE_MIMETYPE,
                     EXTRACTOR_METAFORMAT_UTF8,
                     "text/plain",
-                    "audio/x-it",
-                    strlen ("audio/x-it") + 1))
+                    "audio/x-mod",
+                    strlen ("audio/x-mod") + 1))
     return;
 
   /* Version of Tracker */

Modified: Extractor/src/plugins/s3m_extractor.c
===================================================================
--- Extractor/src/plugins/s3m_extractor.c       2012-08-09 21:29:49 UTC (rev 
23188)
+++ Extractor/src/plugins/s3m_extractor.c       2012-08-09 21:35:13 UTC (rev 
23189)
@@ -1,10 +1,10 @@
 /*
      This file is part of libextractor.
-     (C) 2002, 2003, 2004, 2009 Vidyut Samanta and Christian Grothoff
+     (C) 2002, 2003, 2004, 2009, 2012 Vidyut Samanta and Christian Grothoff
 
      libextractor is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      libextractor is distributed in the hope that it will be useful, but
@@ -17,18 +17,16 @@
      Free Software Foundation, Inc., 59 Temple Place - Suite 330,
      Boston, MA 02111-1307, USA.
  */
-
+/**
+ * @file plugins/s3m_extractor.c
+ * @brief plugin to support Scream Tracker (S3M) files
+ * @author Toni Ruottu
+ * @author Christian Grothoff
+ */
 #include "platform.h"
 #include "extractor.h"
-
-#include "extractor_plugins.h"
 #include "le_architecture.h"
 
-/* Based upon ST 3.20 spec at http://16-bits.org/s3m/ */
-/* Looks like the format was defined by the software implementation,
- * and that implementation was for little-endian platform, which means
- * that the format is little-endian.
- */
 
 LE_NETWORK_STRUCT_BEGIN
 struct S3MHeader
@@ -37,12 +35,12 @@
   uint8_t byte_1A;
   uint8_t file_type; /* 0x10 == ST3 module */
   uint8_t unknown1[2];
-  uint16_t number_of_orders; /* should be even */
-  uint16_t number_of_instruments;
-  uint16_t number_of_patterns;
-  uint16_t flags;
-  uint16_t created_with_version;
-  uint16_t file_format_info;
+  uint16_t number_of_orders LE_PACKED; /* should be even */
+  uint16_t number_of_instruments LE_PACKED;
+  uint16_t number_of_patterns LE_PACKED;
+  uint16_t flags LE_PACKED;
+  uint16_t created_with_version LE_PACKED;
+  uint16_t file_format_info LE_PACKED;
   char SCRM[4];
   uint8_t global_volume;
   uint8_t initial_speed;
@@ -51,29 +49,46 @@
   uint8_t ultra_click_removal;
   uint8_t default_channel_positions;
   uint8_t unknown2[8];
-  uint16_t special;
+  uint16_t special LE_PACKED;
   uint8_t channel_settings[32];
 };
 LE_NETWORK_STRUCT_END
 
-#define ADD(s,t) if (0 != proc (proc_cls, "s3m", t, EXTRACTOR_METAFORMAT_UTF8, 
"text/plain", s, strlen(s) + 1)) return 1
-#define ADDL(s,t,l) if (0 != proc (proc_cls, "s3m", t, 
EXTRACTOR_METAFORMAT_UTF8, "text/plain", s, l)) return 1
 
-int
-EXTRACTOR_s3m_extract_method (struct EXTRACTOR_PluginList *plugin,
-    EXTRACTOR_MetaDataProcessor proc, void *proc_cls)
+/**
+ * Give meta data to LE 'proc' callback using the given LE type and value.
+ *
+ * @param t LE meta data type
+ * @param s meta data to add
+ */
+#define ADD(s, t) do { if (0 != ec->proc (ec->cls, "s3m", t, 
EXTRACTOR_METAFORMAT_UTF8, "text/plain", s, strlen (s) + 1)) return; } while (0)
+
+
+/**
+ * Extractor based upon Scream Tracker 3.20 spec at http://16-bits.org/s3m/
+ *
+ * Looks like the format was defined by the software implementation,
+ * and that implementation was for little-endian platform, which means
+ * that the format is little-endian.
+ *
+ * @param ec extraction context
+ */
+void
+EXTRACTOR_s3m_extract_method (struct EXTRACTOR_ExtractContext *ec)
 {
-  unsigned char *data;
+  void *data;
   struct S3MHeader header;
   char song_name_NT[29];
 
-  if (plugin == NULL)
-    return 1;
-  if (sizeof (header) != pl_read (plugin, &data, sizeof (header)))
-    return 1;
+  if (sizeof (header) >
+      ec->read (ec->cls,
+               &data,
+               sizeof (header)))
+    return;
   memcpy (&header, data, sizeof (header));
-  if (header.byte_1A != 0x1A || memcmp (header.SCRM, "SCRM", 4) != 0)
-    return 1;
+  if ( (0x1A != header.byte_1A) ||
+       (0 != memcmp (header.SCRM, "SCRM", 4)) )
+    return;
   header.number_of_orders = LE_le16toh (header.number_of_orders);
   header.number_of_instruments = LE_le16toh (header.number_of_instruments);
   header.number_of_patterns = LE_le16toh (header.number_of_patterns);
@@ -83,11 +98,11 @@
   header.special = LE_le16toh (header.special);
   memcpy (song_name_NT, header.song_name, 28);
   song_name_NT[28] = '\0';
-
-  ADD("audio/x-s3m", EXTRACTOR_METATYPE_MIMETYPE);
-  ADD(song_name_NT, EXTRACTOR_METATYPE_TITLE);
+  ADD ("audio/x-s3m", EXTRACTOR_METATYPE_MIMETYPE);
+  ADD (song_name_NT, EXTRACTOR_METATYPE_TITLE);
   /* TODO: turn other header data into useful metadata (i.e. RESOURCE_TYPE).
    * Also, disabled instruments can be (and are) used to carry user-defined 
text.
    */
-  return 1;
 }
+
+/* end of s3m_extractor.c */

Added: Extractor/src/plugins/test_it.c
===================================================================
--- Extractor/src/plugins/test_it.c                             (rev 0)
+++ Extractor/src/plugins/test_it.c     2012-08-09 21:35:13 UTC (rev 23189)
@@ -0,0 +1,76 @@
+/*
+     This file is part of libextractor.
+     (C) 2012 Vidyut Samanta and Christian Grothoff
+
+     libextractor is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published
+     by the Free Software Foundation; either version 3, or (at your
+     option) any later version.
+
+     libextractor is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with libextractor; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+/**
+ * @file plugins/test_it.c
+ * @brief testcase for it plugin
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "test_lib.h"
+
+
+/**
+ * Main function for the IT testcase.
+ *
+ * @param argc number of arguments (ignored)
+ * @param argv arguments (ignored)
+ * @return 0 on success
+ */
+int
+main (int argc, char *argv[])
+{
+  struct SolutionData it_dawn_sol[] =
+    {
+      { 
+       EXTRACTOR_METATYPE_MIMETYPE,
+       EXTRACTOR_METAFORMAT_UTF8,
+       "text/plain",
+       "audio/x-mod",
+       strlen ("audio/x-mod") + 1,
+       0 
+      },
+      { 
+       EXTRACTOR_METATYPE_TITLE,
+       EXTRACTOR_METAFORMAT_C_STRING,
+       "text/plain",
+       "Dawn",
+       strlen ("Dawn") + 1,
+       0 
+      },
+      { 
+       EXTRACTOR_METATYPE_FORMAT_VERSION,
+       EXTRACTOR_METAFORMAT_C_STRING,
+       "text/plain",
+       "1.2",
+       strlen ("1.2") + 1,
+       0 
+      },
+      { 0, 0, NULL, NULL, 0, -1 }
+    };
+  struct ProblemSet ps[] =
+    {
+      { "testdata/it_dawn.it",
+       it_dawn_sol },
+      { NULL, NULL }
+    };
+  return ET_main ("it", ps);
+}
+
+/* end of test_it.c */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]