Merge remote-tracking branch 'upstream/v0.23.x'

This commit is contained in:
Michael Herstine
2025-01-20 09:44:07 -08:00
27 changed files with 222 additions and 109 deletions

View File

@@ -254,7 +254,7 @@ PrintAvailableCommands(Response &r, const Partition &partition,
if (cmd->permission == (permission & cmd->permission) &&
command_available(partition, cmd))
r.Fmt(FMT_STRING("command: {}\n"), cmd->cmd);
r.Fmt("command: {}\n", cmd->cmd);
}
return CommandResult::OK;
@@ -267,7 +267,7 @@ PrintUnavailableCommands(Response &r, unsigned permission) noexcept
const struct command *cmd = &i;
if (cmd->permission != (permission & cmd->permission))
r.Fmt(FMT_STRING("command: {}\n"), cmd->cmd);
r.Fmt("command: {}\n", cmd->cmd);
}
return CommandResult::OK;
@@ -325,7 +325,7 @@ command_check_request(const struct command *cmd, Response &r,
{
if (cmd->permission != (permission & cmd->permission)) {
r.FmtError(ACK_ERROR_PERMISSION,
FMT_STRING("you don't have permission for {:?}"),
"you don't have permission for {:?}",
cmd->cmd);
return false;
}
@@ -338,17 +338,17 @@ command_check_request(const struct command *cmd, Response &r,
if (min == max && unsigned(max) != args.size()) {
r.FmtError(ACK_ERROR_ARG,
FMT_STRING("wrong number of arguments for {:?}"),
"wrong number of arguments for {:?}",
cmd->cmd);
return false;
} else if (args.size() < unsigned(min)) {
r.FmtError(ACK_ERROR_ARG,
FMT_STRING("too few arguments for {:?}"),
"too few arguments for {:?}",
cmd->cmd);
return false;
} else if (max >= 0 && args.size() > unsigned(max)) {
r.FmtError(ACK_ERROR_ARG,
FMT_STRING("too many arguments for {:?}"),
"too many arguments for {:?}",
cmd->cmd);
return false;
} else
@@ -362,7 +362,7 @@ command_checked_lookup(Response &r, unsigned permission,
const struct command *cmd = command_lookup(cmd_name);
if (cmd == nullptr) {
r.FmtError(ACK_ERROR_UNKNOWN,
FMT_STRING("unknown command {:?}"), cmd_name);
"unknown command {:?}", cmd_name);
return nullptr;
}

View File

@@ -230,7 +230,7 @@ handle_count_internal(Client &client, Request args, Response &r, bool fold_case)
group = tag_name_parse_i(s);
if (group == TAG_NUM_OF_ITEM_TYPES) {
r.FmtError(ACK_ERROR_ARG,
FMT_STRING("Unknown tag type: {}"), s);
"Unknown tag type: {}", s);
return CommandResult::ERROR;
}
@@ -311,7 +311,7 @@ handle_list(Client &client, Request args, Response &r)
const auto tagType = tag_name_parse_i(tag_name);
if (tagType == TAG_NUM_OF_ITEM_TYPES) {
r.FmtError(ACK_ERROR_ARG,
FMT_STRING("Unknown tag type: {}"), tag_name);
"Unknown tag type: {}", tag_name);
return CommandResult::ERROR;
}
@@ -325,7 +325,7 @@ handle_list(Client &client, Request args, Response &r)
/* for compatibility with < 0.12.0 */
if (tagType != TAG_ALBUM) {
r.FmtError(ACK_ERROR_ARG,
FMT_STRING("should be {:?} for 3 arguments"),
"should be {:?} for 3 arguments",
tag_item_names[TAG_ALBUM]);
return CommandResult::ERROR;
}
@@ -340,7 +340,7 @@ handle_list(Client &client, Request args, Response &r)
const auto group = tag_name_parse_i(s);
if (group == TAG_NUM_OF_ITEM_TYPES) {
r.FmtError(ACK_ERROR_ARG,
FMT_STRING("Unknown tag type: {}"), s);
"Unknown tag type: {}", s);
return CommandResult::ERROR;
}

View File

@@ -68,12 +68,12 @@ handle_listfiles_local(Response &r, Path path_fs)
continue;
if (fi.IsRegular())
r.Fmt(FMT_STRING("file: {}\n"
"size: {}\n"),
r.Fmt("file: {}\n"
"size: {}\n",
name_utf8,
fi.GetSize());
else if (fi.IsDirectory())
r.Fmt(FMT_STRING("directory: {}\n"), name_utf8);
r.Fmt("directory: {}\n", name_utf8);
else
continue;
@@ -111,7 +111,7 @@ public:
void OnPair(std::string_view key, std::string_view value) noexcept override {
if (IsValidName(key) && IsValidValue(value))
response.Fmt(FMT_STRING("{}: {}\n"), key, value);
response.Fmt("{}: {}\n", key, value);
}
};
@@ -200,7 +200,7 @@ read_stream_art(Response &r, const std::string_view art_directory,
read_size = is->Read(lock, {buffer.get(), buffer_size});
}
r.Fmt(FMT_STRING("size: {}\n"), art_file_size);
r.Fmt("size: {}\n", art_file_size);
r.WriteBinary({buffer.get(), read_size});
@@ -330,10 +330,10 @@ public:
return;
}
response.Fmt(FMT_STRING("size: {}\n"), buffer.size());
response.Fmt("size: {}\n", buffer.size());
if (mime_type != nullptr)
response.Fmt(FMT_STRING("type: {}\n"), mime_type);
response.Fmt("type: {}\n", mime_type);
buffer = buffer.subspan(offset);

View File

@@ -46,7 +46,7 @@ protected:
void Run() override;
void SendResponse(Response &r) noexcept override {
r.Fmt(FMT_STRING("chromaprint: {}\n"),
r.Fmt("chromaprint: {}\n",
GetFingerprint());
}

View File

@@ -70,7 +70,7 @@ handle_channels(Client &client, [[maybe_unused]] Request args, Response &r)
}
for (const auto &channel : channels)
r.Fmt(FMT_STRING("channel: {}\n"), channel);
r.Fmt("channel: {}\n", channel);
return CommandResult::OK;
}
@@ -82,7 +82,7 @@ handle_read_messages(Client &client,
assert(args.empty());
client.ConsumeMessages([&r](const auto &msg){
r.Fmt(FMT_STRING("channel: {}\nmessage: {}\n"),
r.Fmt("channel: {}\nmessage: {}\n",
msg.GetChannel(), msg.GetMessage());
});

View File

@@ -30,8 +30,8 @@ handle_listneighbors(Client &client, [[maybe_unused]] Request args, Response &r)
}
for (const auto &i : neighbors->GetList())
r.Fmt(FMT_STRING("neighbor: {}\n"
"name: {}\n"),
r.Fmt("neighbor: {}\n"
"name: {}\n",
i.uri,
i.display_name);
return CommandResult::OK;

View File

@@ -46,7 +46,7 @@ static void
print_spl_list(Response &r, const PlaylistVector &list)
{
for (const auto &i : list) {
r.Fmt(FMT_STRING("playlist: {}\n"), i.name);
r.Fmt("playlist: {}\n", i.name);
if (!IsNegative(i.mtime))
time_print(r, "Last-Modified", i.mtime);
@@ -233,7 +233,7 @@ handle_update(Response &r, UpdateService &update,
const char *uri_utf8, bool discard)
{
unsigned ret = update.Enqueue(uri_utf8, discard);
r.Fmt(FMT_STRING("updating_db: {}\n"), ret);
r.Fmt("updating_db: {}\n", ret);
return CommandResult::OK;
}
@@ -243,7 +243,7 @@ handle_update(Response &r, Database &db,
{
unsigned id = db.Update(uri_utf8, discard);
if (id > 0) {
r.Fmt(FMT_STRING("updating_db: {}\n"), id);
r.Fmt("updating_db: {}\n", id);
return CommandResult::OK;
} else {
/* Database::Update() has returned 0 without setting
@@ -308,7 +308,7 @@ handle_getvol(Client &client, Request, Response &r)
const auto volume = partition.mixer_memento.GetVolume(partition.outputs);
if (volume >= 0)
r.Fmt(FMT_STRING("volume: {}\n"), volume);
r.Fmt("volume: {}\n", volume);
return CommandResult::OK;
}
@@ -372,7 +372,7 @@ handle_config(Client &client, [[maybe_unused]] Request args, Response &r)
#ifdef ENABLE_DATABASE
if (const Storage *storage = client.GetStorage()) {
const auto path = storage->MapUTF8("");
r.Fmt(FMT_STRING("music_directory: {}\n"), path);
r.Fmt("music_directory: {}\n", path);
}
#endif
@@ -394,7 +394,7 @@ handle_idle(Client &client, Request args, Response &r)
unsigned event = idle_parse_name(i);
if (event == 0) {
r.FmtError(ACK_ERROR_ARG,
FMT_STRING("Unrecognized idle event: {}"),
"Unrecognized idle event: {}",
i);
return CommandResult::ERROR;
}

View File

@@ -33,7 +33,7 @@ CommandResult
handle_listpartitions(Client &client, Request, Response &r)
{
for (const auto &partition : client.GetInstance().partitions) {
r.Fmt(FMT_STRING("partition: {}\n"), partition.name);
r.Fmt("partition: {}\n", partition.name);
}
return CommandResult::OK;

View File

@@ -119,18 +119,18 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r)
const auto volume = partition.mixer_memento.GetVolume(partition.outputs);
if (volume >= 0)
r.Fmt(FMT_STRING("volume: {}\n"), volume);
r.Fmt("volume: {}\n", volume);
r.Fmt(FMT_STRING(COMMAND_STATUS_REPEAT ": {}\n"
COMMAND_STATUS_RANDOM ": {}\n"
COMMAND_STATUS_SINGLE ": {}\n"
COMMAND_STATUS_CONSUME ": {}\n"
"partition: {}\n"
COMMAND_STATUS_PLAYLIST ": {}\n"
COMMAND_STATUS_PLAYLIST_LENGTH ": {}\n"
COMMAND_STATUS_MIXRAMPDB ": {}\n"
COMMAND_STATUS_STATE ": {}\n"
COMMAND_STATUS_LOADED_PLAYLIST ": {}\n"),
r.Fmt(COMMAND_STATUS_REPEAT ": {}\n"
COMMAND_STATUS_RANDOM ": {}\n"
COMMAND_STATUS_SINGLE ": {}\n"
COMMAND_STATUS_CONSUME ": {}\n"
"partition: {}\n"
COMMAND_STATUS_PLAYLIST ": {}\n"
COMMAND_STATUS_PLAYLIST_LENGTH ": {}\n"
COMMAND_STATUS_MIXRAMPDB ": {}\n"
COMMAND_STATUS_STATE ": {}\n",
COMMAND_STATUS_LOADED_PLAYLIST ": {}\n",
(unsigned)playlist.GetRepeat(),
(unsigned)playlist.GetRandom(),
SingleToString(playlist.GetSingle()),
@@ -143,24 +143,24 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r)
playlist.GetLastLoadedPlaylist());
if (pc.GetCrossFade() > FloatDuration::zero())
r.Fmt(FMT_STRING(COMMAND_STATUS_CROSSFADE ": {}\n"),
r.Fmt(COMMAND_STATUS_CROSSFADE ": {}\n",
lround(pc.GetCrossFade().count()));
if (pc.GetMixRampDelay() > FloatDuration::zero())
r.Fmt(FMT_STRING(COMMAND_STATUS_MIXRAMPDELAY ": {}\n"),
r.Fmt(COMMAND_STATUS_MIXRAMPDELAY ": {}\n",
pc.GetMixRampDelay().count());
song = playlist.GetCurrentPosition();
if (song >= 0) {
r.Fmt(FMT_STRING(COMMAND_STATUS_SONG ": {}\n"
COMMAND_STATUS_SONGID ": {}\n"),
r.Fmt(COMMAND_STATUS_SONG ": {}\n"
COMMAND_STATUS_SONGID ": {}\n",
song, playlist.PositionToId(song));
}
if (player_status.state != PlayerState::STOP) {
r.Fmt(FMT_STRING(COMMAND_STATUS_TIME ": {}:{}\n"
"elapsed: {:1.3f}\n"
COMMAND_STATUS_BITRATE ": {}\n"),
r.Fmt(COMMAND_STATUS_TIME ": {}:{}\n"
"elapsed: {:1.3f}\n"
COMMAND_STATUS_BITRATE ": {}\n",
player_status.elapsed_time.RoundS(),
player_status.total_time.IsNegative()
? 0U
@@ -169,11 +169,11 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r)
player_status.bit_rate);
if (!player_status.total_time.IsNegative())
r.Fmt(FMT_STRING("duration: {:1.3f}\n"),
r.Fmt("duration: {:1.3f}\n",
player_status.total_time.ToDoubleS());
if (player_status.audio_format.IsDefined())
r.Fmt(FMT_STRING(COMMAND_STATUS_AUDIO ": {}\n"),
r.Fmt(COMMAND_STATUS_AUDIO ": {}\n",
player_status.audio_format);
}
@@ -183,7 +183,7 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r)
? update_service->GetId()
: 0;
if (updateJobId != 0) {
r.Fmt(FMT_STRING(COMMAND_STATUS_UPDATING_DB ": {}\n"),
r.Fmt(COMMAND_STATUS_UPDATING_DB ": {}\n",
updateJobId);
}
#endif
@@ -191,14 +191,14 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r)
try {
pc.LockCheckRethrowError();
} catch (...) {
r.Fmt(FMT_STRING(COMMAND_STATUS_ERROR ": {}\n"),
r.Fmt(COMMAND_STATUS_ERROR ": {}\n",
GetFullMessage(std::current_exception()));
}
song = playlist.GetNextPosition();
if (song >= 0)
r.Fmt(FMT_STRING(COMMAND_STATUS_NEXTSONG ": {}\n"
COMMAND_STATUS_NEXTSONGID ": {}\n"),
r.Fmt(COMMAND_STATUS_NEXTSONG ": {}\n"
COMMAND_STATUS_NEXTSONGID ": {}\n",
song, playlist.PositionToId(song));
return CommandResult::OK;
@@ -341,7 +341,7 @@ CommandResult
handle_replay_gain_status(Client &client, [[maybe_unused]] Request args,
Response &r)
{
r.Fmt(FMT_STRING("replay_gain_mode: {}\n"),
r.Fmt("replay_gain_mode: {}\n",
ToString(client.GetPartition().replay_gain_mode));
return CommandResult::OK;
}

View File

@@ -43,7 +43,7 @@ static void
print_spl_list(Response &r, const PlaylistVector &list)
{
for (const auto &i : list) {
r.Fmt(FMT_STRING("playlist: {}\n"), i.name);
r.Fmt("playlist: {}\n", i.name);
if (!IsNegative(i.mtime))
time_print(r, "Last-Modified", i.mtime);

View File

@@ -140,7 +140,7 @@ handle_addid(Client &client, Request args, Response &r)
partition.instance.LookupRemoteTag(uri);
r.Fmt(FMT_STRING("Id: {}\n"), added_id);
r.Fmt("Id: {}\n", added_id);
return CommandResult::OK;
}

View File

@@ -50,14 +50,14 @@ handle_listfiles_storage(Response &r, StorageDirectoryReader &reader)
continue;
case StorageFileInfo::Type::REGULAR:
r.Fmt(FMT_STRING("file: {}\n"
"size: {}\n"),
r.Fmt("file: {}\n"
"size: {}\n",
name_utf8,
info.size);
break;
case StorageFileInfo::Type::DIRECTORY:
r.Fmt(FMT_STRING("directory: {}\n"), name_utf8);
r.Fmt("directory: {}\n", name_utf8);
break;
}
@@ -110,7 +110,7 @@ print_storage_uri(Client &client, Response &r, const Storage &storage)
uri = std::move(allocated);
}
r.Fmt(FMT_STRING("storage: {}\n"), uri);
r.Fmt("storage: {}\n", uri);
}
CommandResult
@@ -126,7 +126,7 @@ handle_listmounts(Client &client, [[maybe_unused]] Request args, Response &r)
const auto visitor = [&client, &r](const char *mount_uri,
const Storage &storage){
r.Fmt(FMT_STRING("mount: {}\n"), mount_uri);
r.Fmt("mount: {}\n", mount_uri);
print_storage_uri(client, r, storage);
};

View File

@@ -19,7 +19,7 @@ handle_addtagid(Client &client, Request args, Response &r)
const char *const tag_name = args[1];
const TagType tag_type = tag_name_parse_i(tag_name);
if (tag_type == TAG_NUM_OF_ITEM_TYPES) {
r.FmtError(ACK_ERROR_ARG, FMT_STRING("Unknown tag type: {}"),
r.FmtError(ACK_ERROR_ARG, "Unknown tag type: {}",
tag_name);
return CommandResult::ERROR;
}
@@ -41,7 +41,7 @@ handle_cleartagid(Client &client, Request args, Response &r)
tag_type = tag_name_parse_i(tag_name);
if (tag_type == TAG_NUM_OF_ITEM_TYPES) {
r.FmtError(ACK_ERROR_ARG,
FMT_STRING("Unknown tag type: {}"),
"Unknown tag type: {}",
tag_name);
return CommandResult::ERROR;
}