Merge /fml/ag-raetsch/home/maan/scm/paraslash_meins/paraslash
authorAndre Noll <maan@systemlinux.org>
Mon, 26 Mar 2007 12:51:03 +0000 (14:51 +0200)
committerAndre Noll <maan@systemlinux.org>
Mon, 26 Mar 2007 12:51:03 +0000 (14:51 +0200)
Conflicts:

mp3_afh.c

Fix the conflict and add more detailed error message to para_mmap().

1  2 
fd.c
mp3_afh.c

diff --combined fd.c
--- 1/fd.c
--- 2/fd.c
+++ b/fd.c
@@@ -163,7 -163,7 +163,9 @@@ void *para_mmap(size_t length, int prot
        void *ret = mmap(NULL, length, prot, flags, fd, offset);
        if (ret != MAP_FAILED)
                return ret;
--      PARA_EMERG_LOG("mmap failed: %s", strerror(errno));
++      PARA_EMERG_LOG("mmap failed: %s\n", strerror(errno));
++      PARA_EMERG_LOG("length: %zu, flags: %d, fd: %d, offset: %zu\n",
++              length, flags, fd, offset);
        exit(EXIT_FAILURE);
  }
  
diff --combined mp3_afh.c
+++ b/mp3_afh.c
   *                     Johannes Overmann <overmann@iname.com>
   */
  
- #include "server.cmdline.h"
  #include "server.h"
- #include "vss.h"
  #include "error.h"
- #include "fd.h"
  #include "string.h"
  
  /** \cond some defines and structs which are only used in this file */
@@@ -72,8 -69,6 +69,6 @@@ struct mp3info 
        int id3_isvalid;
        struct id3tag id3;
        int vbr;
-       long unsigned br_average;
-       int freq;
  };
  
  /** \endcond */
@@@ -116,9 -111,18 +111,18 @@@ static const char *header_mode(struct m
        return mode_text[h->mode];
  }
  
+ static int header_channels(struct mp3header *h)
+ {
+       if (h->mode > 3)
+               return 0;
+       if (h->mode < 3)
+               return 2;
+       return 1;
+ }
  static int header_bitrate(struct mp3header *h)
  {
 -      if (h->layer > 3 || h->bitrate > 14)
 +      if (!h->layer || h->layer > 3 || h->bitrate > 14 || !h->bitrate)
                return -E_HEADER_BITRATE;
        return mp3info_bitrate[h->version & 1][3 - h->layer][h->bitrate - 1];
  }
@@@ -144,14 -148,14 +148,14 @@@ static void write_info_str(struct audio
        int v = mp3.id3_isvalid;
  
        snprintf(afi->info_string, MMD_INFO_SIZE,
-               "audio_file_info1:%lu x %lums, %lu kbit/s (%cbr) %i KHz %s\n"
+               "audio_file_info1:%lu x %lums, %u kbit/s (%cbr) %i KHz %s\n"
                "audio_file_info2:%s, by %s\n"
                "audio_file_info3:A: %s, Y: %s, C: %s\n",
                afi->chunks_total,
                tv2ms(&afi->chunk_tv),
-               mp3.br_average,
+               afi->bitrate,
                mp3.vbr? 'v' : 'c',
-               mp3.freq / 1000,
+               afi->frequency / 1000,
                header_mode(&mp3.header),
                v && *mp3.id3.title? mp3.id3.title : "(title tag not set)",
                v && *mp3.id3.artist? mp3.id3.artist : "(artist tag not set)",
@@@ -335,7 -339,6 +339,6 @@@ static int mp3_read_info(unsigned char 
        mp3_get_id3(map, numbytes, &fpos);
        fpos = 0;
        mp3.vbr = 0;
-       mp3.freq = 0;
        while (1) {
                int freq, br, fl;
                struct timeval tmp, cct; /* current chunk time */
        if (!afi->chunks_total || !freq_avg || !br_avg)
                goto err_out;
        afi->chunk_table[afi->chunks_total] = numbytes - 1;
-       mp3.br_average = br_avg;
-       mp3.freq = freq_avg;
+       afi->bitrate = br_avg;
+       afi->frequency = freq_avg;
+       afi->channels = header_channels(&mp3.header);
        afi->seconds_total = (tv2ms(&total_time) + 500) / 1000;
        tv_divide(afi->chunks_total, &total_time, &afi->chunk_tv);
        PARA_DEBUG_LOG("%lu chunks, each %lums\n", afi->chunks_total,