Replace gettimeofday() by clock_gettime().
[paraslash.git] / afh.c
diff --git a/afh.c b/afh.c
index ee55cf0e603d1ff0cfa8b4f1bf55eeb8aba10098..4c65d7c1f76bdc4b054461127d14b9547881d6f7 100644 (file)
--- a/afh.c
+++ b/afh.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2012 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2008-2013 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -7,7 +7,6 @@
 /** \file afh.c Paraslash's standalone audio format handler tool. */
 
 #include <regex.h>
-#include <sys/time.h>
 
 #include "para.h"
 #include "string.h"
@@ -36,7 +35,7 @@ static void print_chunk_table(struct afh_info *afhi)
 {
        int i;
 
-       if (!conf.human_given) {
+       if (conf.parser_friendly_given) {
                printf("chunk_table: ");
                for (i = 0; i <= afhi->chunks_total; i++)
                        printf("%u ", afhi->chunk_table[i]);
@@ -57,82 +56,6 @@ static void print_chunk_table(struct afh_info *afhi)
        }
 }
 
-static int cat_file(struct afh_info *afhi, int audio_format_id,
-               void *audio_file_data, size_t audio_file_size)
-{
-       int ret;
-       struct timeval stream_start;
-       long unsigned i, first_chunk, last_chunk;
-       const char *buf;
-       char *header;
-       size_t size;
-
-       if (conf.begin_chunk_arg < 0) {
-               if (-conf.begin_chunk_arg > afhi->chunks_total)
-                       return -ERRNO_TO_PARA_ERROR(EINVAL);
-               first_chunk = afhi->chunks_total + conf.begin_chunk_arg;
-       } else
-               first_chunk = conf.begin_chunk_arg;
-       if (conf.end_chunk_given) {
-               if (conf.end_chunk_arg < 0) {
-                       if (-conf.end_chunk_arg > afhi->chunks_total)
-                               return -ERRNO_TO_PARA_ERROR(EINVAL);
-                       last_chunk = afhi->chunks_total + conf.end_chunk_arg;
-               } else {
-                       if (conf.end_chunk_arg >= afhi->chunks_total)
-                               return -ERRNO_TO_PARA_ERROR(EINVAL);
-                       last_chunk = conf.end_chunk_arg;
-               }
-       } else
-               last_chunk = afhi->chunks_total - 1;
-       if (first_chunk >= last_chunk)
-               return -ERRNO_TO_PARA_ERROR(EINVAL);
-       if (!afhi->chunks_total)
-               return 1;
-       /* eliminate the possibility of short writes */
-       ret = mark_fd_blocking(STDOUT_FILENO);
-       if (ret < 0)
-               return ret;
-       if (first_chunk > 0 && !conf.no_header_given) {
-               afh_get_header(afhi, audio_format_id, audio_file_data, audio_file_size,
-                       &header, &size);
-               if (size > 0) {
-                       PARA_INFO_LOG("writing header (%zu bytes)\n", size);
-                       ret = write_all(STDOUT_FILENO, header, size);
-                       afh_free_header(header, audio_format_id);
-                       if (ret < 0)
-                               return ret;
-                       if (ret != size)
-                               return -E_AFH_SHORT_WRITE;
-               }
-       }
-       PARA_NOTICE_LOG("writing chunks %lu - %lu\n", first_chunk, last_chunk);
-       gettimeofday(&stream_start, NULL);
-       for (i = first_chunk; i <= last_chunk; i++) {
-               struct timeval now, diff, next_chunk;
-               afh_get_chunk(i, afhi, audio_file_data, &buf, &size);
-               PARA_DEBUG_LOG("chunk %lu: size %zu\n", i, size);
-               if (conf.just_in_time_given) {
-                       compute_chunk_time(i - first_chunk, &afhi->chunk_tv,
-                               &stream_start, &next_chunk);
-                       gettimeofday(&now, NULL);
-                       ret = tv_diff(&next_chunk, &now, &diff);
-                       if (ret > 0) {
-                               ret = para_select(1, NULL, NULL, &diff);
-                               if (ret < 0)
-                                       return ret;
-                       }
-               }
-               if (!size)
-                       continue;
-               PARA_INFO_LOG("writing chunk %lu\n", i);
-               ret = write_all(STDOUT_FILENO, buf, size);
-               if (ret < 0)
-                       return ret;
-       }
-       return 1;
-}
-
 /**
  * The main function of para_afh.
  *
@@ -154,8 +77,6 @@ int main(int argc, char **argv)
        ret = -E_AFH_SYNTAX;
        if (conf.inputs_num == 0)
                goto out;
-       if (conf.stream_given && conf.inputs_num != 1)
-               goto out;
        afh_init();
        for (i = 0; i < conf.inputs_num; i++) {
                int ret2;
@@ -171,16 +92,11 @@ int main(int argc, char **argv)
                        goto out;
 
                audio_format_num = ret;
-               if (conf.stream_given)
-                       ret = cat_file(&afhi, audio_format_num,
-                               audio_file_data, audio_file_size);
-               else {
-                       printf("File %d: %s\n", i + 1, conf.inputs[i]);
-                       print_info(audio_format_num, &afhi);
-                       if (conf.chunk_table_given)
-                               print_chunk_table(&afhi);
-                       printf("\n");
-               }
+               printf("File %d: %s\n", i + 1, conf.inputs[i]);
+               print_info(audio_format_num, &afhi);
+               if (conf.chunk_table_given)
+                       print_chunk_table(&afhi);
+               printf("\n");
                clear_afhi(&afhi);
                ret2 = para_munmap(audio_file_data, audio_file_size);
                if (ret2 < 0 && ret >= 0)