lib/fmt: remove even more now-broken uses of FMT_STRING

MPD stopped building since fmt 11.1.0; see
<https://github.com/fmtlib/fmt/issues/4304>. The first commit
fixing this was 9db7144, followed by 5de0909 (both on the
unstable branch).

This commit removes what the author believes to be the remaining
uses in the MPD codebase.
This commit is contained in:
Michael Herstine 2025-01-20 19:54:41 -08:00
parent b24b3c1054
commit 194ecd69e0
21 changed files with 62 additions and 62 deletions

@ -19,9 +19,9 @@ void
playlist_vector_save(BufferedOutputStream &os, const PlaylistVector &pv)
{
for (const PlaylistInfo &pi : pv) {
os.Fmt(FMT_STRING(PLAYLIST_META_BEGIN "{}\n"), pi.name);
os.Fmt(PLAYLIST_META_BEGIN "{}\n", pi.name);
if (!IsNegative(pi.mtime))
os.Fmt(FMT_STRING("mtime: {}\n"),
os.Fmt("mtime: {}\n",
std::chrono::system_clock::to_time_t(pi.mtime));
os.Write("playlist_end\n");
}

@ -26,11 +26,11 @@ playlist_print_path(BufferedOutputStream &os, const Path path)
"narrow" charset (i.e. CP_ACP) is incapable of storing all
Unicode paths */
try {
os.Fmt(FMT_STRING("{}\n"), path.ToUTF8Throw());
os.Fmt("{}\n", path.ToUTF8Throw());
} catch (...) {
}
#else
os.Fmt(FMT_STRING("{}\n"), path.c_str());
os.Fmt("{}\n", path.c_str());
#endif
}

@ -29,35 +29,35 @@ static void
range_save(BufferedOutputStream &os, unsigned start_ms, unsigned end_ms)
{
if (end_ms > 0)
os.Fmt(FMT_STRING("Range: {}-{}\n"), start_ms, end_ms);
os.Fmt("Range: {}-{}\n", start_ms, end_ms);
else if (start_ms > 0)
os.Fmt(FMT_STRING("Range: {}-\n"), start_ms);
os.Fmt("Range: {}-\n", start_ms);
}
void
song_save(BufferedOutputStream &os, const Song &song)
{
os.Fmt(FMT_STRING(SONG_BEGIN "{}\n"), song.filename);
os.Fmt(SONG_BEGIN "{}\n", song.filename);
if (!song.target.empty())
os.Fmt(FMT_STRING("Target: {}\n"), song.target);
os.Fmt("Target: {}\n", song.target);
range_save(os, song.start_time.ToMS(), song.end_time.ToMS());
tag_save(os, song.tag);
if (song.audio_format.IsDefined())
os.Fmt(FMT_STRING("Format: {}\n"), song.audio_format);
os.Fmt("Format: {}\n", song.audio_format);
if (song.in_playlist)
os.Write("InPlaylist: yes\n");
if (!IsNegative(song.mtime))
os.Fmt(FMT_STRING(SONG_MTIME ": {}\n"),
os.Fmt(SONG_MTIME ": {}\n",
std::chrono::system_clock::to_time_t(song.mtime));
if (!IsNegative(song.added))
os.Fmt(FMT_STRING(SONG_ADDED ": {}\n"),
os.Fmt(SONG_ADDED ": {}\n",
std::chrono::system_clock::to_time_t(song.added));
os.Write(SONG_END "\n");
}
@ -65,18 +65,18 @@ song_save(BufferedOutputStream &os, const Song &song)
void
song_save(BufferedOutputStream &os, const DetachedSong &song)
{
os.Fmt(FMT_STRING(SONG_BEGIN "{}\n"), song.GetURI());
os.Fmt(SONG_BEGIN "{}\n", song.GetURI());
range_save(os, song.GetStartTime().ToMS(), song.GetEndTime().ToMS());
tag_save(os, song.GetTag());
if (!IsNegative(song.GetLastModified()))
os.Fmt(FMT_STRING(SONG_MTIME ": {}\n"),
os.Fmt(SONG_MTIME ": {}\n",
std::chrono::system_clock::to_time_t(song.GetLastModified()));
if (!IsNegative(song.GetAdded()))
os.Fmt(FMT_STRING(SONG_ADDED ": {}\n"),
os.Fmt(SONG_ADDED ": {}\n",
std::chrono::system_clock::to_time_t(song.GetAdded()));
os.Write(SONG_END "\n");
}

@ -23,11 +23,11 @@ tag_print_types_available(Response &r) noexcept
{
for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; i++)
if (global_tag_mask.Test(TagType(i)))
r.Fmt(FMT_STRING("tagtype: {}\n"), tag_item_names[i]);
r.Fmt("tagtype: {}\n", tag_item_names[i]);
}
void
tag_print(Response &r, TagType type, std::string_view value) noexcept
tag_print(Response &r, TagType type, std::string_view _value) noexcept
{
const std::string_view value{_value};
r.Fmt("{}: {}\n", tag_item_names[type], value);

@ -14,12 +14,12 @@ void
tag_save(BufferedOutputStream &os, const Tag &tag)
{
if (!tag.duration.IsNegative())
os.Fmt(FMT_STRING(SONG_TIME "{}\n"), tag.duration.ToDoubleS());
os.Fmt(SONG_TIME "{}\n", tag.duration.ToDoubleS());
if (tag.has_playlist)
os.Write("Playlist: yes\n");
for (const auto &i : tag)
os.Fmt(FMT_STRING("{}: {}\n"),
os.Fmt("{}: {}\n",
tag_item_names[i.type], i.value);
}

@ -50,14 +50,14 @@ protocol_features_print(Client &client, Response &r) noexcept
const auto protocol_feature = client.GetProtocolFeatures();
for (unsigned i = 0; i < PF_NUM_OF_ITEM_TYPES; i++)
if (protocol_feature.Test(ProtocolFeatureType(i)))
r.Fmt(FMT_STRING("feature: {}\n"), protocol_feature_names[i]);
r.Fmt("feature: {}\n", protocol_feature_names[i]);
}
void
protocol_features_print_all(Response &r) noexcept
{
for (unsigned i = 0; i < PF_NUM_OF_ITEM_TYPES; i++)
r.Fmt(FMT_STRING("feature: {}\n"), protocol_feature_names[i]);
r.Fmt("feature: {}\n", protocol_feature_names[i]);
}
ProtocolFeatureType

@ -377,7 +377,7 @@ handle_config(Client &client, [[maybe_unused]] Request args, Response &r)
#endif
if (const auto spl_path = map_spl_path(); !spl_path.IsNull())
r.Fmt(FMT_STRING("playlist_directory: {}\n"), spl_path.ToUTF8());
r.Fmt("playlist_directory: {}\n", spl_path.ToUTF8());
#ifdef HAVE_PCRE
r.Write("pcre: 1\n");

@ -458,7 +458,7 @@ handle_sticker(Client &client, Request args, Response &r)
/* set */
if (args.size() == 5 && StringIsEqual(cmd, "set"))
return handler->Set(uri, sticker_name, args[4]);
/* inc */
if (args.size() == 5 && StringIsEqual(cmd, "inc"))
return handler->Inc(uri, sticker_name, args[4]);
@ -550,6 +550,6 @@ handle_sticker_types(Client &client, Request args, Response &r)
for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; i++)
if (sticker_allowed_tags.Test(TagType(i)) &&
tag_mask.Test(TagType(i)))
r.Fmt(FMT_STRING("stickertype: {}\n"), tag_item_names[i]);
r.Fmt("stickertype: {}\n", tag_item_names[i]);
return CommandResult::OK;
}

@ -37,13 +37,13 @@ void
db_save_internal(BufferedOutputStream &os, const Directory &music_root)
{
os.Write(DIRECTORY_INFO_BEGIN "\n");
os.Fmt(FMT_STRING(DB_FORMAT_PREFIX "{}\n"), DB_FORMAT);
os.Fmt(DB_FORMAT_PREFIX "{}\n", DB_FORMAT);
os.Write(DIRECTORY_MPD_VERSION VERSION "\n");
os.Fmt(FMT_STRING(DIRECTORY_FS_CHARSET "{}\n"), GetFSCharset());
os.Fmt(DIRECTORY_FS_CHARSET "{}\n", GetFSCharset());
for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; ++i)
if (IsTagEnabled(i))
os.Fmt(FMT_STRING(DB_TAG_PREFIX "{}\n"),
os.Fmt(DB_TAG_PREFIX "{}\n",
tag_item_names[i]);
os.Write(DIRECTORY_INFO_END "\n");

@ -67,20 +67,20 @@ directory_save(BufferedOutputStream &os, const Directory &directory)
if (!directory.IsRoot()) {
const char *type = DeviceToTypeString(directory.device);
if (type != nullptr)
os.Fmt(FMT_STRING(DIRECTORY_TYPE "{}\n"), type);
os.Fmt(DIRECTORY_TYPE "{}\n", type);
if (!IsNegative(directory.mtime))
os.Fmt(FMT_STRING(DIRECTORY_MTIME "{}\n"),
os.Fmt(DIRECTORY_MTIME "{}\n",
std::chrono::system_clock::to_time_t(directory.mtime));
os.Fmt(FMT_STRING(DIRECTORY_BEGIN "{}\n"), directory.GetPath());
os.Fmt(DIRECTORY_BEGIN "{}\n", directory.GetPath());
}
for (const auto &child : directory.children) {
if (child.IsMount())
continue;
os.Fmt(FMT_STRING(DIRECTORY_DIR "{}\n"), child.GetName());
os.Fmt(DIRECTORY_DIR "{}\n", child.GetName());
directory_save(os, child);
}
@ -90,7 +90,7 @@ directory_save(BufferedOutputStream &os, const Directory &directory)
playlist_vector_save(os, directory.playlists);
if (!directory.IsRoot())
os.Fmt(FMT_STRING(DIRECTORY_END "{}\n"), directory.GetPath());
os.Fmt(DIRECTORY_END "{}\n", directory.GetPath());
}
static bool

@ -27,7 +27,7 @@ decoder_plugin_print(Response &r,
if (plugin.suffixes_function != nullptr)
for (const auto &i : plugin.suffixes_function())
r.Fmt(FMT_STRING("suffix: {}\n"), i);
r.Fmt("suffix: {}\n", i);
if (plugin.mime_types != nullptr)
for (p = plugin.mime_types; *p != nullptr; ++p)

@ -41,7 +41,7 @@ IcuConverter::Create(const char *charset)
UConverter *converter = ucnv_open(charset, &code);
if (converter == nullptr)
throw ICU::MakeError(code,
FmtBuffer<256>(FMT_STRING("Failed to initialize charset {:?}"),
FmtBuffer<256>("Failed to initialize charset {:?}",
charset));
return std::unique_ptr<IcuConverter>(new IcuConverter(converter));
@ -54,7 +54,7 @@ IcuConverter::Create(const char *charset)
iconv_close(to);
if (from != (iconv_t)-1)
iconv_close(from);
throw FmtErrno(e, FMT_STRING("Failed to initialize charset {:?}"),
throw FmtErrno(e, "Failed to initialize charset {:?}",
charset);
}

@ -76,5 +76,5 @@ MixerMemento::LoadSoftwareVolumeState(const char *line, MultipleOutputs &outputs
void
MixerMemento::SaveSoftwareVolumeState(BufferedOutputStream &os) const
{
os.Fmt(FMT_STRING(SW_VOLUME_STATE "{}\n"), volume_software_set);
os.Fmt(SW_VOLUME_STATE "{}\n", volume_software_set);
}

@ -29,7 +29,7 @@ audio_output_state_save(BufferedOutputStream &os,
const auto &ao = outputs.Get(i);
const std::scoped_lock lock{ao.mutex};
os.Fmt(FMT_STRING(AUDIO_DEVICE_STATE "{}:{}\n"),
os.Fmt(AUDIO_DEVICE_STATE "{}:{}\n",
(unsigned)ao.IsEnabled(), ao.GetName());
}
}

@ -43,9 +43,9 @@ playlist_provider_length(Response &r,
playtime += get_duration(*song);
i++;
}
r.Fmt(FMT_STRING("songs: {}\n"), i);
r.Fmt("songs: {}\n", i);
const auto seconds = std::chrono::round<std::chrono::seconds>(playtime);
r.Fmt(FMT_STRING("playtime: {}\n"), seconds.count());
r.Fmt("playtime: {}\n", seconds.count());
}
void

@ -89,7 +89,7 @@ playlist_provider_search_print(Response &r,
if (detail) {
song_print_info(r, *song);
r.Fmt(FMT_STRING("Pos: {}\n"), position);
r.Fmt("Pos: {}\n", position);
} else
/* fallback if no detail was requested or no
detail was available */

@ -60,33 +60,33 @@ playlist_state_save(BufferedOutputStream &os, const struct playlist &playlist,
default:
os.Write(PLAYLIST_STATE_FILE_STATE_PLAY "\n");
}
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_CURRENT "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_CURRENT "{}\n",
playlist.queue.OrderToPosition(playlist.current));
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_TIME "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_TIME "{}\n",
player_status.elapsed_time.ToDoubleS());
} else {
os.Write(PLAYLIST_STATE_FILE_STATE_STOP "\n");
if (playlist.current >= 0)
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_CURRENT "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_CURRENT "{}\n",
playlist.queue.OrderToPosition(playlist.current));
}
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_RANDOM "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_RANDOM "{}\n",
(unsigned)playlist.queue.random);
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_REPEAT "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_REPEAT "{}\n",
(unsigned)playlist.queue.repeat);
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_SINGLE "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_SINGLE "{}\n",
SingleToString(playlist.queue.single));
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_CONSUME "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_CONSUME "{}\n",
ConsumeToString(playlist.queue.consume));
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_CROSSFADE "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_CROSSFADE "{}\n",
pc.GetCrossFade().count());
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_MIXRAMPDB "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_MIXRAMPDB "{}\n",
pc.GetMixRampDb());
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_MIXRAMPDELAY "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_MIXRAMPDELAY "{}\n",
pc.GetMixRampDelay().count());
os.Fmt(FMT_STRING(PLAYLIST_STATE_FILE_LOADED_PLAYLIST "{}\n"),
os.Fmt(PLAYLIST_STATE_FILE_LOADED_PLAYLIST "{}\n",
playlist.GetLastLoadedPlaylist());
os.Write(PLAYLIST_STATE_FILE_PLAYLIST_BEGIN "\n");
queue_save(os, playlist.queue);

@ -29,12 +29,12 @@ queue_print_song_info(Response &r, const Queue &queue,
unsigned position)
{
song_print_info(r, queue.Get(position));
r.Fmt(FMT_STRING("Pos: {}\nId: {}\n"),
r.Fmt("Pos: {}\nId: {}\n",
position, queue.PositionToId(position));
uint8_t priority = queue.GetPriorityAtPosition(position);
if (priority != 0)
r.Fmt(FMT_STRING("Prio: {}\n"), priority);
r.Fmt("Prio: {}\n", priority);
}
void
@ -56,7 +56,7 @@ queue_print_uris(Response &r, const Queue &queue,
assert(end <= queue.GetLength());
for (unsigned i = start; i < end; ++i) {
r.Fmt(FMT_STRING("{}:"), i);
r.Fmt("{}:", i);
song_print_uri(r, queue.Get(i));
}
}
@ -84,7 +84,7 @@ queue_print_changes_position(Response &r, const Queue &queue,
for (unsigned i = start; i < end; i++)
if (queue.IsNewerAtPosition(i, version))
r.Fmt(FMT_STRING("cpos: {}\nId: {}\n"),
r.Fmt("cpos: {}\nId: {}\n",
i, queue.PositionToId(i));
}

@ -24,7 +24,7 @@ static void
queue_save_database_song(BufferedOutputStream &os,
int idx, const DetachedSong &song)
{
os.Fmt(FMT_STRING("{}:{}\n"), idx, song.GetURI());
os.Fmt("{}:{}\n", idx, song.GetURI());
}
static void
@ -53,7 +53,7 @@ queue_save(BufferedOutputStream &os, const Queue &queue)
for (unsigned i = 0; i < queue.GetLength(); i++) {
uint8_t prio = queue.GetPriorityAtPosition(i);
if (prio != 0)
os.Fmt(FMT_STRING(PRIO_LABEL "{}\n"), prio);
os.Fmt(PRIO_LABEL "{}\n", prio);
queue_save_song(os, i, queue.Get(i));
}

@ -11,7 +11,7 @@
std::string
PrioritySongFilter::ToExpression() const noexcept
{
return fmt::format(FMT_STRING("(prio >= {})"), value);
return fmt::format("(prio >= {})", value);
}
bool

@ -38,10 +38,10 @@ storage_state_save(BufferedOutputStream &os, const Instance &instance)
if (uri.empty() || StringIsEmpty(mount_uri))
return;
os.Fmt(FMT_STRING(MOUNT_STATE_BEGIN "\n"
MOUNT_STATE_STORAGE_URI "{}\n"
MOUNT_STATE_MOUNTED_URL "{}\n"
MOUNT_STATE_END "\n"),
os.Fmt(MOUNT_STATE_BEGIN "\n"
MOUNT_STATE_STORAGE_URI "{}\n"
MOUNT_STATE_MOUNTED_URL "{}\n"
MOUNT_STATE_END "\n",
mount_uri, uri);
};
@ -80,7 +80,7 @@ storage_state_restore(const char *line, LineReader &file,
return true;
if (url.empty() || uri.empty()) {
LogError(storage_domain, "Missing value in mountpoint state.");
LogError(storage_domain, "Missing value in mountpoint state.");
return true;
}