Merge branch 'maint'
authorAndre Noll <maan@systemlinux.org>
Fri, 6 Nov 2009 14:22:10 +0000 (15:22 +0100)
committerAndre Noll <maan@systemlinux.org>
Fri, 6 Nov 2009 14:22:10 +0000 (15:22 +0100)
1  2 
afh_common.c

diff --combined afh_common.c
index bb04453f599e29218abb955d18fcb74a078d1eb8,7d4ab08952dbb259075b96f73e228f81da7db8e9..80fcbe8b663b85f36f4699df197dc303664bc6b1
@@@ -10,7 -10,6 +10,7 @@@
  #include <sys/time.h> /* gettimeofday */
  #include <sys/types.h>
  #include <dirent.h>
 +#include <regex.h>
  
  #include "para.h"
  #include "error.h"
@@@ -122,6 -121,39 +122,6 @@@ int guess_audio_format(const char *name
        return -E_AUDIO_FORMAT;
  }
  
 -/**
 - * Pretty-print the given meta-info.
 - *
 - * \param title The title of the audio file.
 - * \param artist The artist.
 - * \param album The name of the album.
 - * \param year Year of release.
 - * \param comment Further comments.
 - *
 - * This function is called by each audio format handler to produce the tag info
 - * status items. Usually, the audio format handlers read this info from the
 - * audio file (id3 tags, vorbis comments, ...).
 - *
 - * It is OK to pass \p NULL pointers for any argument in which case a suitable
 - * string is inserted which indicates that this information is not available.
 - *
 - * \return The status item string. It must be freed by the caller.
 - */
 -char *make_taginfo(char *title, char *artist, char *album, char *year,
 -              char *comment)
 -{
 -      return make_message("%s: %s, by %s\n" /* taginfo1 */
 -              "%s: A: %s, Y: %s, C: %s\n", /* taginfo2 */
 -              status_item_list[SI_TAGINFO1],
 -              (title && *title)? title : "(title tag not set)",
 -              (artist && *artist)? artist : "(artist tag not set)",
 -              status_item_list[SI_TAGINFO2],
 -              (album && *album)?  album : "(album tag not set)",
 -              (year && *year)? year : "????",
 -              (comment && *comment)? comment : "(comment tag not set)"
 -      );
 -}
 -
  /**
   * Call get_file_info() to obtain an afhi structure.
   *
@@@ -148,52 -180,22 +148,52 @@@ int compute_afhi(const char *path, cha
  
        afhi->header_offset = 0;
        afhi->header_len = 0;
 +      afhi->techinfo = NULL;
 +      afhi->tags.artist = NULL;
 +      afhi->tags.title = NULL;
 +      afhi->tags.year = NULL;
 +      afhi->tags.album = NULL;
 +      afhi->tags.comment = NULL;
        format = guess_audio_format(path);
  
        if (format >= 0) {
                ret = afl[format].get_file_info(data, size, fd, afhi);
 -              if (ret >= 0)
 -                      return format;
 +              if (ret >= 0) {
 +                      ret = format;
 +                      goto success;
 +              }
        }
        FOR_EACH_AUDIO_FORMAT(i) {
                if (i == format) /* we already tried this one to no avail */
                        continue;
                ret = afl[i].get_file_info(data, size, fd, afhi);
 -              if (ret >= 0)
 -                      return i;
 +              if (ret >= 0) {
 +                      ret = i;
 +                      goto success;
 +              }
                PARA_WARNING_LOG("%s\n", para_strerror(-ret));
        }
        return -E_AUDIO_FORMAT;
 +success:
 +      if (!afhi->techinfo)
 +              afhi->techinfo = para_strdup(NULL);
 +      if (!afhi->tags.artist)
 +              afhi->tags.artist = para_strdup(NULL);
 +      if (!afhi->tags.title)
 +              afhi->tags.title = para_strdup(NULL);
 +      if (!afhi->tags.year)
 +              afhi->tags.year = para_strdup(NULL);
 +      if (!afhi->tags.album)
 +              afhi->tags.album = para_strdup(NULL);
 +      if (!afhi->tags.comment)
 +              afhi->tags.comment = para_strdup(NULL);
 +      PARA_DEBUG_LOG("techinfo: %s\n", afhi->techinfo);
 +      PARA_DEBUG_LOG("artist: %s\n", afhi->tags.artist);
 +      PARA_DEBUG_LOG("title: %s\n", afhi->tags.title);
 +      PARA_DEBUG_LOG("year: %s\n", afhi->tags.year);
 +      PARA_DEBUG_LOG("album: %s\n", afhi->tags.album);
 +      PARA_DEBUG_LOG("comment: %s\n", afhi->tags.comment);
 +      return ret;
  }
  
  /**
   */
  const char *audio_format_name(int i)
  {
-       //PARA_NOTICE_LOG("array size: %u¸ requested: %d\n", ARRAY_SIZE(afl), i);
-       assert(i < 0 || i < ARRAY_SIZE(afl) - 1);
-       return i >= 0?  afl[i].name : "(none)";
+       if (i < 0 || i >= ARRAY_SIZE(afl) - 1)
+               return "???";
+       return afl[i].name;
  }
  
  /**
@@@ -250,7 -252,7 +250,7 @@@ uint32_t afh_get_largest_chunk_size(str
   *
   * This function sets \a buf to \p NULL and \a len to zero if \a map or \a
   * afhi is \p NULL, or if the current audio format does not need special
 - * header treamtment.
 + * header treatment.
   */
  void afh_get_header(struct afh_info *afhi, void *map, const char **buf, size_t *len)
  {