0.4.11 (to be announced "mutual diversity")
-------------------------------------------
+ - Documentation improvements.
------------------------------------------
0.4.10 (2012-03-30) "heterogeneous vacuum"
------------------------------------------
#include "version.h"
static struct afh_args_info conf;
-/** The list of all status items */
-const char *status_item_list[] = {STATUS_ITEM_ARRAY};
-
INIT_AFH_ERRLISTS;
static int loglevel;
print_chunk_table(&afhi);
printf("\n");
}
- free(afhi.techinfo);
- free(afhi.tags.artist);
- free(afhi.tags.title);
- free(afhi.tags.year);
- free(afhi.tags.album);
- free(afhi.tags.comment);
- free(afhi.chunk_table);
+ clear_afhi(&afhi);
ret2 = para_munmap(audio_file_data, audio_file_size);
if (ret2 < 0 && ret >= 0)
ret = ret2;
void afh_get_header(struct afh_info *afhi, uint8_t audio_format_id,
void *map, size_t mapsize, char **buf, size_t *len);
void afh_free_header(char *header_buf, uint8_t audio_format_id);
+void clear_afhi(struct afh_info *afhi);
#endif
void wma_afh_init(struct audio_format_handler *);
+
+/** The list of all status items */
+const char *status_item_list[] = {STATUS_ITEM_ARRAY};
+
/**
* The list of supported audio formats.
*
return ret;
}
+/**
+ * Deallocate contents of a filled-in ahi structure
+ *
+ * \param afhi The structure to clear.
+ *
+ * The given pointer is kept, everything else is freed.
+ */
+void clear_afhi(struct afh_info *afhi)
+{
+ if (!afhi)
+ return;
+ free(afhi->chunk_table);
+ free(afhi->techinfo);
+ free(afhi->tags.artist);
+ free(afhi->tags.title);
+ free(afhi->tags.year);
+ free(afhi->tags.album);
+ free(afhi->tags.comment);
+}
+
/**
* Get the name of the given audio format.
*
send_ret = sc_send_va_buffer(&pad->cc->scc,
"failed to add %s (%s)\n", path, para_strerror(-ret));
free(obj.data);
- if (afhi_ptr) {
- free(afhi_ptr->chunk_table);
- free(afhi_ptr->techinfo);
- free(afhi_ptr->tags.artist);
- free(afhi_ptr->tags.title);
- free(afhi_ptr->tags.year);
- free(afhi_ptr->tags.album);
- free(afhi_ptr->tags.comment);
- }
+ clear_afhi(afhi_ptr);
/* Stop adding files only on send errors. */
return send_ret;
}
if (!btrn)
return;
- PARA_NOTICE_LOG("removing btr node %s from buffer tree\n", btrn->name);
+ PARA_INFO_LOG("removing btr node %s from buffer tree\n", btrn->name);
FOR_EACH_CHILD(ch, btrn)
ch->parent = NULL;
btr_drain(btrn);
list_move(&ch->node, &btrn->parent->children);
}
assert(list_empty(&btrn->children));
+ btrn->parent = NULL;
}
/**
if (ret < 0)
return ret;
if (value_result && *value_result)
- PARA_NOTICE_LOG("%s(%s): %s\n", command, parent->name,
+ PARA_INFO_LOG("%s(%s): %s\n", command, parent->name,
*value_result);
return 1;
}
return 1;
}
-static void client_sighandler(int s)
-{
- i9e_signal_dispatch(s);
-}
-
static struct i9e_completer completers[] = {
SERVER_COMPLETERS
AFS_COMPLETERS
}
ici.history_file = history_file;
- act.sa_handler = client_sighandler;
+ act.sa_handler = i9e_signal_dispatch;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
sigaction(SIGINT, &act, NULL);
extern struct sender senders[];
int send_afs_status(struct command_context *cc, int parser_friendly);
-const char *status_item_list[] = {STATUS_ITEM_ARRAY};
-
static void dummy(__a_unused int s)
{
}
static void *http_recv_parse_config(int argc, char **argv)
{
- struct http_recv_args_info *tmp = para_calloc(sizeof(struct http_recv_args_info));
+ struct http_recv_args_info *tmp = para_calloc(sizeof(*tmp));
if (!http_recv_cmdline_parser(argc, argv, tmp))
return tmp;
PARA_WARNING_LOG("set to nonblock failed: (fd0 %d, %s)\n",
i9ep->ici->fds[0], para_strerror(-ret));
para_fd_set(i9ep->ici->fds[0], &s->rfds, &s->max_fileno);
- return;
}
static void update_winsize(void)
return ret;
i9ep->task.pre_select = i9e_pre_select;
i9ep->task.post_select = i9e_post_select;
+ sprintf(i9ep->task.status, "i9e");
register_task(s, &i9ep->task);
rl_readline_name = "para_i9e";
rl_basic_word_break_characters = " ";
rl_attempted_completion_function = i9e_completer;
i9ep->ici = ici;
i9ep->stderr_stream = fdopen(ici->fds[2], "w");
+ setvbuf(i9ep->stderr_stream, NULL, _IONBF, 0);
if (ici->history_file)
read_history(ici->history_file);