return -1;
}
+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", /* taginfo 2*/
+ 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.
*
* \param path The full path of the audio file.
* \param data Pointer to the contents of the (mapped) file.
* \param size The file size in bytes.
+ * \param fd The open file descriptor.
* \param afhi Result pointer.
*
* \return The number of the audio format on success, \p -E_AUDIO_FORMAT if no
* path. If this doesn't work, all other audio format handlers are tried until
* one is found that can handle the file.
*/
-int compute_afhi(const char *path, char *data, size_t size,
+int compute_afhi(const char *path, char *data, size_t size, int fd,
struct afh_info *afhi)
{
- int ret, i, format = guess_audio_format(path);
+ int ret, i, format;
+
+ afhi->header_offset = 0;
+ afhi->header_len = 0;
+ format = guess_audio_format(path);
if (format >= 0) {
- ret = afl[format].get_file_info(data, size, afhi);
+ ret = afl[format].get_file_info(data, size, fd, afhi);
if (ret >= 0)
return format;
}
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, afhi);
+ ret = afl[i].get_file_info(data, size, fd, afhi);
if (ret >= 0)
return i;
PARA_WARNING_LOG("%s\n", para_strerror(-ret));
void afh_get_chunk(long unsigned chunk_num, struct afh_info *afhi,
- void *map, char **buf, size_t *len)
+ void *map, const char **buf, size_t *len)
{
size_t pos = afhi->chunk_table[chunk_num];
*buf = map + pos;
* afhi is \p NULL, or if the current audio format does not need special
* header treamtment.
*/
-void afh_get_header(struct afh_info *afhi, void *map, char **buf, size_t *len)
+void afh_get_header(struct afh_info *afhi, void *map, const char **buf, size_t *len)
{
if (!map || !afhi || ! afhi->header_len) {
*buf = NULL;