/*
- * Copyright (C) 2008-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2008-2012 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file afh.c Paraslash's standalone audio format handler tool. */
#include <regex.h>
-#include <dirent.h>
#include <sys/time.h>
#include "para.h"
#include "fd.h"
#include "afh.h"
#include "error.h"
+#include "version.h"
static struct afh_args_info conf;
/** The list of all status items */
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(STDOUT_FILENO, header, size); /* FIXME */
+ ret = write_all(STDOUT_FILENO, header, size);
afh_free_header(header, audio_format_id);
if (ret < 0)
return ret;
if (!size)
continue;
PARA_INFO_LOG("writing chunk %lu\n", i);
- ret = write_all(STDOUT_FILENO, buf, &size);
+ ret = write_all(STDOUT_FILENO, buf, size);
if (ret < 0)
return ret;
}
int ret2;
ret = mmap_full_file(conf.inputs[i], O_RDONLY, &audio_file_data,
&audio_file_size, &fd);
- if (ret < 0)
+ if (ret < 0) {
+ PARA_ERROR_LOG("failed to mmap \"%s\"\n", conf.inputs[i]);
goto out;
+ }
ret = compute_afhi(conf.inputs[i], audio_file_data, audio_file_size,
fd, &afhi);
if (ret < 0)