icy_server: pass pointer to _metadata_page()
Don't use va_list.
This commit is contained in:
parent
f5c0b0d316
commit
f8ff45b212
@ -85,9 +85,8 @@ icy_server_metadata_string(const char *stream_title, const char* stream_url)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct page*
|
struct page*
|
||||||
icy_server_metadata_page(const struct tag *tag, ...)
|
icy_server_metadata_page(const struct tag *tag, const enum tag_type *types)
|
||||||
{
|
{
|
||||||
va_list args;
|
|
||||||
const gchar *tag_items[TAG_NUM_OF_ITEM_TYPES];
|
const gchar *tag_items[TAG_NUM_OF_ITEM_TYPES];
|
||||||
gint last_item, item;
|
gint last_item, item;
|
||||||
guint position;
|
guint position;
|
||||||
@ -100,22 +99,11 @@ icy_server_metadata_page(const struct tag *tag, ...)
|
|||||||
|
|
||||||
last_item = -1;
|
last_item = -1;
|
||||||
|
|
||||||
va_start(args, tag);
|
while (*types != TAG_NUM_OF_ITEM_TYPES) {
|
||||||
while (1) {
|
const gchar *tag_item = tag_get_value(tag, *types);
|
||||||
enum tag_type type;
|
|
||||||
const gchar *tag_item;
|
|
||||||
|
|
||||||
type = va_arg(args, enum tag_type);
|
|
||||||
|
|
||||||
if (type == TAG_NUM_OF_ITEM_TYPES)
|
|
||||||
break;
|
|
||||||
|
|
||||||
tag_item = tag_get_value(tag, type);
|
|
||||||
|
|
||||||
if (tag_item)
|
if (tag_item)
|
||||||
tag_items[++last_item] = tag_item;
|
tag_items[++last_item] = tag_item;
|
||||||
}
|
}
|
||||||
va_end(args);
|
|
||||||
|
|
||||||
position = item = 0;
|
position = item = 0;
|
||||||
while (position < sizeof(stream_title) && item <= last_item) {
|
while (position < sizeof(stream_title) && item <= last_item) {
|
||||||
|
@ -23,8 +23,6 @@
|
|||||||
#include "page.h"
|
#include "page.h"
|
||||||
#include "tag.h"
|
#include "tag.h"
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@ -35,7 +33,7 @@ icy_server_metadata_header(const char *name,
|
|||||||
const char *content_type, int metaint);
|
const char *content_type, int metaint);
|
||||||
|
|
||||||
struct page*
|
struct page*
|
||||||
icy_server_metadata_page(const struct tag *tag, ...);
|
icy_server_metadata_page(const struct tag *tag, const enum tag_type *types);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -505,9 +505,12 @@ HttpdOutput::SendTag(const struct tag *tag)
|
|||||||
if (metadata != NULL)
|
if (metadata != NULL)
|
||||||
page_unref(metadata);
|
page_unref(metadata);
|
||||||
|
|
||||||
metadata = icy_server_metadata_page(tag, TAG_ALBUM,
|
static constexpr tag_type types[] = {
|
||||||
TAG_ARTIST, TAG_TITLE,
|
TAG_ALBUM, TAG_ARTIST, TAG_TITLE,
|
||||||
TAG_NUM_OF_ITEM_TYPES);
|
TAG_NUM_OF_ITEM_TYPES
|
||||||
|
};
|
||||||
|
|
||||||
|
metadata = icy_server_metadata_page(tag, &types[0]);
|
||||||
if (metadata != NULL) {
|
if (metadata != NULL) {
|
||||||
const ScopeLock protect(mutex);
|
const ScopeLock protect(mutex);
|
||||||
for (auto &client : clients)
|
for (auto &client : clients)
|
||||||
|
Loading…
Reference in New Issue
Block a user