gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r9809 - Extractor/src/plugins
Date: Sat, 19 Dec 2009 13:58:07 +0100

Author: grothoff
Date: 2009-12-19 13:58:07 +0100 (Sat, 19 Dec 2009)
New Revision: 9809

Added:
   Extractor/src/plugins/nsf_extractor.c
   Extractor/src/plugins/nsfe_extractor.c
Removed:
   Extractor/src/plugins/nsfeextractor.c
   Extractor/src/plugins/nsfextractor.c
Modified:
   Extractor/src/plugins/Makefile.am
Log:
nsf

Modified: Extractor/src/plugins/Makefile.am
===================================================================
--- Extractor/src/plugins/Makefile.am   2009-12-19 12:37:09 UTC (rev 9808)
+++ Extractor/src/plugins/Makefile.am   2009-12-19 12:58:07 UTC (rev 9809)
@@ -92,6 +92,8 @@
   libextractor_mime.la \
   libextractor_mp3.la \
   $(mpeg) \
+  libextractor_nsf.la \
+  libextractor_nsfe.la \
   libextractor_odf.la \
   $(ogg) \
   $(ole2) \
@@ -218,6 +220,16 @@
 libextractor_mpeg_la_LIBADD = \
   -lmpeg2
 
+libextractor_nsf_la_SOURCES = \
+  nsf_extractor.c 
+libextractor_nsf_la_LDFLAGS = \
+  $(PLUGINFLAGS)
+
+libextractor_nsfe_la_SOURCES = \
+  nsfe_extractor.c 
+libextractor_nsfe_la_LDFLAGS = \
+  $(PLUGINFLAGS)
+
 libextractor_odf_la_SOURCES = \
   odf_extractor.c
 libextractor_odf_la_LDFLAGS = \
@@ -353,12 +365,7 @@
   libextractor_id3v24.la \
   libextractor_id3v23.la \
   $(extrampeg) \
-  libextractor_nsf.la \
-  libextractor_nsfe.la \
-  libextractor_tar.la \
-  $(thumbqt) \
-  libextractor_xm.la \
-  libextractor_zip.la 
+  $(thumbqt) 
 
 
 libextractor_id3v2_la_SOURCES = \
@@ -383,20 +390,6 @@
   $(top_builddir)/src/common/libextractor_common.la
 
 
-libextractor_nsf_la_SOURCES = \
-  nsfextractor.c 
-libextractor_nsf_la_LDFLAGS = \
-  $(PLUGINFLAGS)
-libextractor_nsf_la_LIBADD = \
-  $(top_builddir)/src/main/libextractor.la
-
-libextractor_nsfe_la_SOURCES = \
-  nsfeextractor.c 
-libextractor_nsfe_la_LDFLAGS = \
-  $(PLUGINFLAGS)
-libextractor_nsfe_la_LIBADD = \
-  $(top_builddir)/src/main/libextractor.la
-
 libextractor_thumbnailqt_la_SOURCES = \
   thumbnailextractorqt.cc
 libextractor_thumbnailqt_la_LDFLAGS = \
@@ -409,7 +402,7 @@
   $(QT_CFLAGS) $(QT_SVG_CFLAGS)
 
 
-# Fixme: is this still working ok? Doubtful!
+# FIXME: is this still working ok? Doubtful!
 
 install-exec-hook:
        mkdir -p $(DESTDIR)$(plugindir) &> /dev/null || true

Copied: Extractor/src/plugins/nsf_extractor.c (from rev 9803, 
Extractor/src/plugins/nsfextractor.c)
===================================================================
--- Extractor/src/plugins/nsf_extractor.c                               (rev 0)
+++ Extractor/src/plugins/nsf_extractor.c       2009-12-19 12:58:07 UTC (rev 
9809)
@@ -0,0 +1,149 @@
+/*
+ * This file is part of libextractor.
+ * (C) 2006, 2009 Toni Ruottu
+ *
+ * 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
+ * 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.
+ *
+ */
+
+#include "platform.h"
+#include "extractor.h"
+#include "convert.h"
+
+
+#define HEADER_SIZE  0x80
+
+/* television system flags */
+
+#define PAL_FLAG     0x01
+#define DUAL_FLAG    0x02
+
+/* sound chip flags */
+
+#define VRCVI_FLAG   0x01
+#define VRCVII_FLAG  0x02
+#define FDS_FLAG     0x04
+#define MMC5_FLAG    0x08
+#define NAMCO_FLAG   0x10
+#define SUNSOFT_FLAG 0x20
+
+#define UINT16 unsigned short
+
+struct header
+{
+  char magicid[5];
+  char nsfversion;
+  char songs;
+  char firstsong;
+  UINT16 loadaddr;
+  UINT16 initaddr;
+  UINT16 playaddr;
+  char title[32];
+  char artist[32];
+  char copyright[32];
+  UINT16 ntscspeed;
+  char bankswitch[8];
+  UINT16 palspeed;
+  char tvflags;
+  char chipflags;
+};
+
+#define ADD(s,t) do { if (0 != proc (proc_cls, "nsf", t, 
EXTRACTOR_METAFORMAT_UTF8, "text/plain", s, strlen(s)+1)) return 1; } while (0)
+
+
+/* "extract" keyword from a Nes Sound Format file
+ *
+ * NSF specification version 1.61 was used,
+ * while this piece of software was originally
+ * written.
+ *
+ */
+int 
+EXTRACTOR_nsf_extract (const unsigned char *data,
+                      size_t size,
+                      EXTRACTOR_MetaDataProcessor proc,
+                      void *proc_cls,
+                      const char *options)
+{
+  char album[33];
+  char artist[33];
+  char copyright[33];
+  char songs[32];
+  char startingsong[32];
+  char nsfversion[32];
+  const struct header *head;
+  
+  if (size < HEADER_SIZE)    
+    return 0;    
+  head = (const struct header *) data;
+  if (memcmp (head->magicid, "NESM\x1a", 5))
+    return 0;
+  ADD ("audio/x-nsf", EXTRACTOR_METATYPE_MIMETYPE);
+  snprintf (nsfversion,
+           sizeof(nsfversion),
+           "%d", 
+           head->nsfversion);
+  ADD (nsfversion, EXTRACTOR_METATYPE_FORMAT_VERSION);
+  snprintf (songs, 
+           sizeof(songs),
+           "%d",
+           head->songs);
+  ADD (songs, EXTRACTOR_METATYPE_SONG_COUNT);
+  snprintf (startingsong, 
+           sizeof(startingsong),
+           "%d", 
+           head->firstsong);
+  ADD (startingsong, EXTRACTOR_METATYPE_STARTING_SONG);
+
+  memcpy (&album, head->title, 32);
+  album[32] = '\0';
+  ADD (album, EXTRACTOR_METATYPE_ALBUM);
+
+  memcpy (&artist, head->artist, 32);
+  artist[32] = '\0';
+  ADD (artist, EXTRACTOR_METATYPE_ARTIST);
+
+  memcpy (&copyright, head->copyright, 32);
+  copyright[32] = '\0';
+  ADD (copyright, EXTRACTOR_METATYPE_COPYRIGHT);
+
+  if (head->tvflags & DUAL_FLAG)
+    {
+      ADD ("PAL/NTSC", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);
+    }
+  else
+    {
+      if (head->tvflags & PAL_FLAG)
+       ADD ("PAL", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);        
+      else
+        ADD ("NTSC", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);        
+    }
+
+  /* Detect Extra Sound Chips needed to play the files */
+  if (head->chipflags & VRCVI_FLAG)    
+    ADD ("VRCVI", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);    
+  if (head->chipflags & VRCVII_FLAG)
+    ADD ("VRCVII", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+  if (head->chipflags & FDS_FLAG)
+    ADD ("FDS Sound", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+  if (head->chipflags & MMC5_FLAG)
+    ADD ("MMC5 audio", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+  if (head->chipflags & NAMCO_FLAG)
+    ADD ("Namco 106", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+  if (head->chipflags & SUNSOFT_FLAG)
+    ADD ("Sunsoft FME-07", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+  return 0;
+}

Copied: Extractor/src/plugins/nsfe_extractor.c (from rev 9803, 
Extractor/src/plugins/nsfeextractor.c)
===================================================================
--- Extractor/src/plugins/nsfe_extractor.c                              (rev 0)
+++ Extractor/src/plugins/nsfe_extractor.c      2009-12-19 12:58:07 UTC (rev 
9809)
@@ -0,0 +1,251 @@
+/*
+ * This file is part of libextractor.
+ * (C) 2007, 2009 Toni Ruottu
+ * 
+ * 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
+ * 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.
+ *
+ */
+
+#include "platform.h"
+#include "extractor.h"
+#include "convert.h"
+
+#define HEADER_SIZE  0x04
+
+/* television system flags */
+
+#define PAL_FLAG     0x01
+#define DUAL_FLAG    0x02
+
+/* sound chip flags */
+
+#define VRCVI_FLAG   0x01
+#define VRCVII_FLAG  0x02
+#define FDS_FLAG     0x04
+#define MMC5_FLAG    0x08
+#define NAMCO_FLAG   0x10
+#define SUNSOFT_FLAG 0x20
+
+#define UINT16 unsigned short
+
+struct header
+{
+  char magicid[4];
+};
+
+struct infochunk
+{
+  UINT16 loadaddr;
+  UINT16 initaddr;
+  UINT16 playaddr;
+  char tvflags;
+  char chipflags;
+  char songs;
+  char firstsong;
+};
+
+static int
+nsfeuint (const char *data)
+{
+  int i;
+  int value = 0;
+
+  for (i = 3; i > 0; i--)
+    {
+      value += (unsigned char) data[i];
+      value *= 0x100;
+    }
+  value += (unsigned char) data[0];
+  return value;
+}
+
+
+static char *
+nsfestring (const char *data, size_t size)
+{
+  char *s;
+  size_t length;
+
+  length = 0;
+  while ( (length < size) &&
+         (data[length] != '\0') )
+    length++;
+  s = malloc (length + 1);
+  strncpy (s, data, length);
+  s[strlen (data)] = '\0';
+  return s;
+}
+
+#define ADD(s,t) do { if (0 != proc (proc_cls, "nsfe", t, 
EXTRACTOR_METAFORMAT_UTF8, "text/plain", s, strlen(s)+1)) return 1; } while (0)
+
+#define ADDF(s,t) do { if (0 != proc (proc_cls, "nsfe", t, 
EXTRACTOR_METAFORMAT_UTF8, "text/plain", s, strlen(s)+1)) { free(s); return 1; 
} free (s); } while (0)
+
+static int
+libextractor_nsfe_info_extract(const char *data, 
+                              size_t size, 
+                              EXTRACTOR_MetaDataProcessor proc,
+                              void *proc_cls)
+{
+  const struct infochunk *ichunk;
+  char songs[32];
+
+  if (size < 8)    
+    return 0;
+  ichunk = (const struct infochunk *) data;
+  if (ichunk->tvflags & DUAL_FLAG)
+    {
+      ADD ("PAL/NTSC", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);
+    }
+  else
+    {
+      if (ichunk->tvflags & PAL_FLAG)
+        ADD ("PAL", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);
+      else
+        ADD ("NTSC", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);        
+    }
+
+  if (ichunk->chipflags & VRCVI_FLAG)
+    ADD ("VRCVI", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+  if (ichunk->chipflags & VRCVII_FLAG)
+    ADD ("VRCVII", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+  if (ichunk->chipflags & FDS_FLAG)
+    ADD ("FDS Sound", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);    
+  if (ichunk->chipflags & MMC5_FLAG)
+    ADD ("MMC5 audio", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);    
+  if (ichunk->chipflags & NAMCO_FLAG)
+    ADD ("Namco 106", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+  if (ichunk->chipflags & SUNSOFT_FLAG)
+    ADD ("Sunsoft FME-07", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);    
+  if (size < 9)
+    {
+      ADD ("1", EXTRACTOR_METATYPE_SONG_COUNT);
+      return 0;
+    }
+  snprintf (songs, 
+           sizeof(songs),
+           "%d",
+           ichunk->songs);
+  ADD (songs, EXTRACTOR_METATYPE_SONG_COUNT);
+  return 0;
+}
+
+
+static int
+libextractor_nsfe_tlbl_extract(const char *data, 
+                              size_t size,
+                              EXTRACTOR_MetaDataProcessor proc,
+                              void *proc_cls)
+
+{
+  char *title;
+  ssize_t left;
+  size_t length;
+
+  for (left = size; left > 0; left -= length)
+    {
+      title = nsfestring (&data[size - left], left);
+      length = strlen (title) + 1;
+      ADDF (title, EXTRACTOR_METATYPE_TITLE);
+    }
+  return 0;
+}
+
+static int
+libextractor_nsfe_auth_extract (const char *data, size_t size, 
+                               EXTRACTOR_MetaDataProcessor proc,
+                               void *proc_cls)
+{
+  char *album;
+  char *artist;
+  char *copyright;
+  char *ripper;
+  int left = size;
+
+  if (left < 1)
+    return 0;
+  album = nsfestring (&data[size - left], left);
+  left -= (strlen (album) + 1);
+  ADDF (album, EXTRACTOR_METATYPE_ALBUM);
+  if (left < 1)    
+    return 0;    
+
+  artist = nsfestring (&data[size - left], left);
+  left -= (strlen (artist) + 1);
+  ADDF (artist, EXTRACTOR_METATYPE_ARTIST);
+  if (left < 1)    
+    return 0;
+
+  copyright = nsfestring (&data[size - left], left);
+  left -= (strlen (copyright) + 1);
+  ADDF (copyright, EXTRACTOR_METATYPE_COPYRIGHT);
+  if (left < 1)
+    return 0;
+
+  ripper = nsfestring (&data[size - left], left);
+  ADDF (ripper, EXTRACTOR_METATYPE_RIPPER);
+  return 0;
+}
+
+
+/* "extract" keyword from an Extended Nintendo Sound Format file
+ *
+ * NSFE specification revision 2 (Sep. 3, 2003)
+ * was used, while this piece of software was
+ * originally written.
+ *
+ */
+int 
+EXTRACTOR_nsfe_extract (const char *data,
+                       size_t size,
+                       EXTRACTOR_MetaDataProcessor proc,
+                       void *proc_cls,
+                       const char *options)
+{
+  const struct header *head;
+  int i;
+  char chunkid[5] = "     ";
+  int ret;
+
+  if (size < HEADER_SIZE)    
+    return 0;
+  head = (const struct header *) data;
+  if (memcmp (head->magicid, "NSFE", 4))    
+    return 0;
+  ADD ("audio/x-nsfe", EXTRACTOR_METATYPE_MIMETYPE);
+  i = 4;                        /* Jump over magic id */
+  ret = 0;
+  while (i + 7 < size && strncmp (chunkid, "NEND", 4))  /* CHECK */
+    {
+      unsigned int chunksize = nsfeuint (&data[i]);
+
+      i += 4;                   /* Jump over chunk size */
+      memcpy (&chunkid, data + i, 4);
+      chunkid[4] = '\0';
+
+      i += 4;                   /* Jump over chunk id */
+      if (!strncmp (chunkid, "INFO", 4))
+        ret = libextractor_nsfe_info_extract (data + i, chunksize, proc, 
proc_cls);        
+      else if (!strncmp (chunkid, "auth", 4))
+       ret = libextractor_nsfe_auth_extract (data + i, chunksize, proc, 
proc_cls);        
+      else if (!strncmp (chunkid, "tlbl", 4))
+       ret = libextractor_nsfe_tlbl_extract (data + i, chunksize, proc, 
proc_cls);
+      /* Ignored chunks: DATA, NEND, plst, time, fade, BANK */
+      i += chunksize;
+      if (ret != 0)
+       break;
+    }
+  return ret;
+}

Deleted: Extractor/src/plugins/nsfeextractor.c
===================================================================
--- Extractor/src/plugins/nsfeextractor.c       2009-12-19 12:37:09 UTC (rev 
9808)
+++ Extractor/src/plugins/nsfeextractor.c       2009-12-19 12:58:07 UTC (rev 
9809)
@@ -1,334 +0,0 @@
-/*
- * This file is part of libextractor.
- * (C) 2007 Toni Ruottu
- * 
- * 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
- * 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.
- *
- */
-
-#include "platform.h"
-#include "extractor.h"
-#include "convert.h"
-
-#define HEADER_SIZE  0x04
-
-/* television system flags */
-
-#define PAL_FLAG     0x01
-#define DUAL_FLAG    0x02
-
-/* sound chip flags */
-
-#define VRCVI_FLAG   0x01
-#define VRCVII_FLAG  0x02
-#define FDS_FLAG     0x04
-#define MMC5_FLAG    0x08
-#define NAMCO_FLAG   0x10
-#define SUNSOFT_FLAG 0x20
-
-#define UINT16 unsigned short
-
-struct header
-{
-  char magicid[4];
-};
-
-struct infochunk
-{
-  UINT16 loadaddr;
-  UINT16 initaddr;
-  UINT16 playaddr;
-  char tvflags;
-  char chipflags;
-  char songs;
-  char firstsong;
-};
-
-static int
-nsfeuint (const char *data)
-{
-  int i, value = 0;
-
-  for (i = 3; i > 0; i--)
-    {
-      value += (unsigned char) data[i];
-      value *= 0x100;
-    }
-
-  value += (unsigned char) data[0];
-
-  return (value);
-}
-
-static char *
-nsfestring (const char *data, int size)
-{
-  char *s;
-  int length;
-
-  if (size < strlen (data))
-    {
-      length = size;
-    }
-  else
-    {
-      length = strlen (data);
-    }
-
-  s = malloc (length + 1);
-
-  strncpy (s, data, length);
-
-  s[strlen (data)] = '\0';
-
-  return (s);
-}
-
-static struct EXTRACTOR_Keywords *addkword
-  (EXTRACTOR_KeywordList * oldhead,
-   const char *phrase, EXTRACTOR_KeywordType type)
-{
-  EXTRACTOR_KeywordList *keyword;
-
-  keyword = malloc (sizeof (EXTRACTOR_KeywordList));
-  keyword->next = oldhead;
-  keyword->keyword = strdup (phrase);
-  keyword->keywordType = type;
-  return (keyword);
-}
-
-static struct EXTRACTOR_Keywords *libextractor_nsfe_info_extract
-  (const char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
-  const struct infochunk *ichunk;
-  char songs[32];
-
-  ichunk = (const struct infochunk *) data;
-
-  if (size < 8)
-    {
-      return (prev);
-    }
-
-
-  /* PAL or NTSC */
-
-  if (ichunk->tvflags & DUAL_FLAG)
-    {
-      prev = addkword (prev, "PAL/NTSC", EXTRACTOR_TELEVISION_SYSTEM);
-    }
-  else
-    {
-      if (ichunk->tvflags & PAL_FLAG)
-        {
-          prev = addkword (prev, "PAL", EXTRACTOR_TELEVISION_SYSTEM);
-        }
-      else
-        {
-          prev = addkword (prev, "NTSC", EXTRACTOR_TELEVISION_SYSTEM);
-        }
-    }
-
-
-  /* Detect Extra Sound Chips needed to play the files */
-
-  if (ichunk->chipflags & VRCVI_FLAG)
-    {
-      prev = addkword (prev, "VRCVI", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (ichunk->chipflags & VRCVII_FLAG)
-    {
-      prev = addkword (prev, "VRCVII", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (ichunk->chipflags & FDS_FLAG)
-    {
-      prev = addkword (prev, "FDS Sound", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (ichunk->chipflags & MMC5_FLAG)
-    {
-      prev = addkword (prev, "MMC5 audio", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (ichunk->chipflags & NAMCO_FLAG)
-    {
-      prev = addkword (prev, "Namco 106", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (ichunk->chipflags & SUNSOFT_FLAG)
-    {
-      prev = addkword (prev, "Sunsoft FME-07", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-
-  if (size < 9)
-    {
-      prev = addkword (prev, "1", EXTRACTOR_SONG_COUNT);
-      return (prev);
-    }
-
-  sprintf (songs, "%d", ichunk->songs);
-  prev = addkword (prev, songs, EXTRACTOR_SONG_COUNT);
-
-
-  return (prev);
-}
-
-
-static struct EXTRACTOR_Keywords *libextractor_nsfe_tlbl_extract
-  (const char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
-  char *title;
-  int left, length;
-
-
-  for (left = size; left > 0; left -= length)
-    {
-      title = nsfestring (&data[size - left], left);
-      prev = addkword (prev, title, EXTRACTOR_TITLE);
-      length = strlen (title) + 1;
-
-      free (title);
-    }
-
-  return (prev);
-}
-
-static struct EXTRACTOR_Keywords *libextractor_nsfe_auth_extract
-  (const char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
-  char *album;
-  char *artist;
-  char *copyright;
-  char *ripper;
-  int left = size;
-
-  if (left < 1)
-    {
-      return (prev);
-    }
-
-  album = nsfestring (&data[size - left], left);
-  prev = addkword (prev, album, EXTRACTOR_ALBUM);
-
-  left -= (strlen (album) + 1);
-  free (album);
-
-  if (left < 1)
-    {
-      return (prev);
-    }
-
-  artist = nsfestring (&data[size - left], left);
-  prev = addkword (prev, artist, EXTRACTOR_ARTIST);
-
-  left -= (strlen (artist) + 1);
-  free (artist);
-
-  if (left < 1)
-    {
-      return (prev);
-    }
-
-  copyright = nsfestring (&data[size - left], left);
-  prev = addkword (prev, copyright, EXTRACTOR_COPYRIGHT);
-
-  left -= (strlen (copyright) + 1);
-  free (copyright);
-
-  if (left < 1)
-    {
-      return (prev);
-    }
-
-  ripper = nsfestring (&data[size - left], left);
-  prev = addkword (prev, ripper, EXTRACTOR_RIPPER);
-  free (ripper);
-
-  return (prev);
-}
-
-
-/* "extract" keyword from an Extended Nintendo Sound Format file
- *
- * NSFE specification revision 2 (Sep. 3, 2003)
- * was used, while this piece of software was
- * originally written.
- *
- */
-struct EXTRACTOR_Keywords *libextractor_nsfe_extract
-  (const char *filename,
-   const char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
-  const struct header *head;
-  int i;
-  char chunkid[5] = "     ";
-
-  /* Check header size */
-
-  if (size < HEADER_SIZE)
-    {
-      return (prev);
-    }
-
-  head = (const struct header *) data;
-
-  /* Check "magic" id bytes */
-
-  if (memcmp (head->magicid, "NSFE", 4))
-    {
-      return (prev);
-    }
-
-
-  /* Mime-type */
-
-  prev = addkword (prev, "audio/x-nsfe", EXTRACTOR_MIMETYPE);
-
-  i = 4;                        /* Jump over magic id */
-
-  while (i + 7 < size && strncmp (chunkid, "NEND", 4))  /* CHECK */
-    {
-
-      unsigned int chunksize = nsfeuint (&data[i]);
-
-      i += 4;                   /* Jump over chunk size */
-
-      memcpy (&chunkid, data + i, 4);
-      chunkid[4] = '\0';
-
-      i += 4;                   /* Jump over chunk id */
-
-      if (!strncmp (chunkid, "INFO", 4))
-        {
-          prev = libextractor_nsfe_info_extract (data + i, chunksize, prev);
-        }
-
-      if (!strncmp (chunkid, "auth", 4))
-        {
-          prev = libextractor_nsfe_auth_extract (data + i, chunksize, prev);
-        }
-
-      if (!strncmp (chunkid, "tlbl", 4))
-        {
-          prev = libextractor_nsfe_tlbl_extract (data + i, chunksize, prev);
-        }
-
-      /* Ignored chunks: DATA, NEND, plst, time, fade, BANK */
-
-      i += chunksize;
-
-    }
-
-  return (prev);
-
-}

Deleted: Extractor/src/plugins/nsfextractor.c
===================================================================
--- Extractor/src/plugins/nsfextractor.c        2009-12-19 12:37:09 UTC (rev 
9808)
+++ Extractor/src/plugins/nsfextractor.c        2009-12-19 12:58:07 UTC (rev 
9809)
@@ -1,201 +0,0 @@
-/*
- * This file is part of libextractor.
- * (C) 2006 Toni Ruottu
- *
- * 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
- * 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.
- *
- */
-
-#include "platform.h"
-#include "extractor.h"
-#include "convert.h"
-
-
-#define HEADER_SIZE  0x80
-
-/* television system flags */
-
-#define PAL_FLAG     0x01
-#define DUAL_FLAG    0x02
-
-/* sound chip flags */
-
-#define VRCVI_FLAG   0x01
-#define VRCVII_FLAG  0x02
-#define FDS_FLAG     0x04
-#define MMC5_FLAG    0x08
-#define NAMCO_FLAG   0x10
-#define SUNSOFT_FLAG 0x20
-
-#define UINT16 unsigned short
-
-struct header
-{
-  char magicid[5];
-  char nsfversion;
-  char songs;
-  char firstsong;
-  UINT16 loadaddr;
-  UINT16 initaddr;
-  UINT16 playaddr;
-  char title[32];
-  char artist[32];
-  char copyright[32];
-  UINT16 ntscspeed;
-  char bankswitch[8];
-  UINT16 palspeed;
-  char tvflags;
-  char chipflags;
-};
-
-
-static struct EXTRACTOR_Keywords *addkword
-  (EXTRACTOR_KeywordList * oldhead,
-   const char *phrase, EXTRACTOR_KeywordType type)
-{
-  EXTRACTOR_KeywordList *keyword;
-
-  keyword = malloc (sizeof (EXTRACTOR_KeywordList));
-  keyword->next = oldhead;
-  keyword->keyword = strdup (phrase);
-  keyword->keywordType = type;
-  return (keyword);
-}
-
-
-/* "extract" keyword from a Nes Sound Format file
- *
- * NSF specification version 1.61 was used,
- * while this piece of software was originally
- * written.
- *
- */
-struct EXTRACTOR_Keywords *libextractor_nsf_extract
-  (const char *filename,
-   char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
-  char album[33];
-  char artist[33];
-  char copyright[33];
-  char songs[32];
-  char startingsong[32];
-  char nsfversion[32];
-  struct header *head;
-
-  /* Check header size */
-
-  if (size < HEADER_SIZE)
-    {
-      return (prev);
-    }
-
-  head = (struct header *) data;
-
-  /* Check "magic" id bytes */
-
-  if (memcmp (head->magicid, "NESM\x1a", 5))
-    {
-      return (prev);
-    }
-
-
-  /* Mime-type */
-
-  prev = addkword (prev, "audio/x-nsf", EXTRACTOR_MIMETYPE);
-
-
-  /* Version of NSF format */
-
-  sprintf (nsfversion, "%d", head->nsfversion);
-  prev = addkword (prev, nsfversion, EXTRACTOR_FORMAT_VERSION);
-
-
-  /* Get song count */
-
-  sprintf (songs, "%d", head->songs);
-  prev = addkword (prev, songs, EXTRACTOR_SONG_COUNT);
-
-
-  /* Get number of the first song to be played */
-
-  sprintf (startingsong, "%d", head->firstsong);
-  prev = addkword (prev, startingsong, EXTRACTOR_STARTING_SONG);
-
-
-  /* name, artist, copyright fields */
-
-  memcpy (&album, head->title, 32);
-  memcpy (&artist, head->artist, 32);
-  memcpy (&copyright, head->copyright, 32);
-
-  album[32] = '\0';
-  artist[32] = '\0';
-  copyright[32] = '\0';
-
-  prev = addkword (prev, album, EXTRACTOR_ALBUM);
-  prev = addkword (prev, artist, EXTRACTOR_ARTIST);
-  prev = addkword (prev, copyright, EXTRACTOR_COPYRIGHT);
-
-
-  /* PAL or NTSC */
-
-  if (head->tvflags & DUAL_FLAG)
-    {
-      prev = addkword (prev, "PAL/NTSC", EXTRACTOR_TELEVISION_SYSTEM);
-    }
-  else
-    {
-      if (head->tvflags & PAL_FLAG)
-        {
-          prev = addkword (prev, "PAL", EXTRACTOR_TELEVISION_SYSTEM);
-        }
-      else
-        {
-          prev = addkword (prev, "NTSC", EXTRACTOR_TELEVISION_SYSTEM);
-        }
-    }
-
-
-  /* Detect Extra Sound Chips needed to play the files */
-
-  if (head->chipflags & VRCVI_FLAG)
-    {
-      prev = addkword (prev, "VRCVI", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (head->chipflags & VRCVII_FLAG)
-    {
-      prev = addkword (prev, "VRCVII", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (head->chipflags & FDS_FLAG)
-    {
-      prev = addkword (prev, "FDS Sound", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (head->chipflags & MMC5_FLAG)
-    {
-      prev = addkword (prev, "MMC5 audio", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (head->chipflags & NAMCO_FLAG)
-    {
-      prev = addkword (prev, "Namco 106", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-  if (head->chipflags & SUNSOFT_FLAG)
-    {
-      prev = addkword (prev, "Sunsoft FME-07", EXTRACTOR_HARDWARE_DEPENDENCY);
-    }
-
-  return (prev);
-
-}





reply via email to

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