Commit 256cfc54 authored by Max Kellermann's avatar Max Kellermann

Merge remote-tracking branches 'neheb/fwhfggwe', 'neheb/nvm2', 'neheb/nvm22',…

Merge remote-tracking branches 'neheb/fwhfggwe', 'neheb/nvm2', 'neheb/nvm22', 'neheb/bvm' and 'neheb/cl2'
......@@ -95,7 +95,7 @@ public:
constexpr double ToDoubleS() const {
return double(count()) / 1000.;
};
}
constexpr bool IsZero() const {
return count() == 0;
......@@ -199,7 +199,7 @@ public:
constexpr double ToDoubleS() const {
return double(count()) / 1000.;
};
}
constexpr bool IsZero() const {
return count() == 0;
......
......@@ -106,7 +106,7 @@ static constexpr OptionDef option_defs[] = {
static constexpr Domain cmdline_domain("cmdline");
gcc_noreturn
[[noreturn]]
static void version()
{
printf("Music Player Daemon " VERSION " (%s)"
......@@ -272,7 +272,7 @@ static void PrintOption(const OptionDef &opt)
opt.GetDescription());
}
gcc_noreturn
[[noreturn]]
static void help()
{
printf("Usage:\n"
......
......@@ -150,13 +150,13 @@ Instance::OnDatabaseSongRemoved(const char *uri) noexcept
#ifdef ENABLE_NEIGHBOR_PLUGINS
void
Instance::FoundNeighbor(gcc_unused const NeighborInfo &info) noexcept
Instance::FoundNeighbor([[maybe_unused]] const NeighborInfo &info) noexcept
{
EmitIdle(IDLE_NEIGHBOR);
}
void
Instance::LostNeighbor(gcc_unused const NeighborInfo &info) noexcept
Instance::LostNeighbor([[maybe_unused]] const NeighborInfo &info) noexcept
{
EmitIdle(IDLE_NEIGHBOR);
}
......
......@@ -46,7 +46,7 @@
#define LOG_DATE_BUF_SIZE 16
#define LOG_DATE_LEN (LOG_DATE_BUF_SIZE - 1)
gcc_unused
[[maybe_unused]]
static constexpr Domain log_domain("log");
#ifndef ANDROID
......
......@@ -216,8 +216,8 @@ static constexpr unsigned num_commands = std::size(commands);
gcc_pure
static bool
command_available(gcc_unused const Partition &partition,
gcc_unused const struct command *cmd) noexcept
command_available([[maybe_unused]] const Partition &partition,
[[maybe_unused]] const struct command *cmd) noexcept
{
#ifdef ENABLE_SQLITE
if (StringIsEqual(cmd->cmd, "sticker"))
......@@ -272,14 +272,14 @@ PrintUnavailableCommands(Response &r, unsigned permission) noexcept
/* don't be fooled, this is the command handler for "commands" command */
static CommandResult
handle_commands(Client &client, gcc_unused Request request, Response &r)
handle_commands(Client &client, [[maybe_unused]] Request request, Response &r)
{
return PrintAvailableCommands(r, client.GetPartition(),
client.GetPermission());
}
static CommandResult
handle_not_commands(Client &client, gcc_unused Request request, Response &r)
handle_not_commands(Client &client, [[maybe_unused]] Request request, Response &r)
{
return PrintUnavailableCommands(r, client.GetPermission());
}
......
......@@ -27,15 +27,15 @@
#include "util/StringAPI.hxx"
CommandResult
handle_close(gcc_unused Client &client, gcc_unused Request args,
gcc_unused Response &r)
handle_close([[maybe_unused]] Client &client, [[maybe_unused]] Request args,
[[maybe_unused]] Response &r)
{
return CommandResult::FINISH;
}
CommandResult
handle_ping(gcc_unused Client &client, gcc_unused Request args,
gcc_unused Response &r)
handle_ping([[maybe_unused]] Client &client, [[maybe_unused]] Request args,
[[maybe_unused]] Response &r)
{
return CommandResult::OK;
}
......
......@@ -72,7 +72,7 @@ handle_unsubscribe(Client &client, Request args, Response &r)
}
CommandResult
handle_channels(Client &client, gcc_unused Request args, Response &r)
handle_channels(Client &client, [[maybe_unused]] Request args, Response &r)
{
assert(args.empty());
......@@ -92,7 +92,7 @@ handle_channels(Client &client, gcc_unused Request args, Response &r)
CommandResult
handle_read_messages(Client &client,
gcc_unused Request args, Response &r)
[[maybe_unused]] Request args, Response &r)
{
assert(args.empty());
......
......@@ -34,7 +34,7 @@ neighbor_commands_available(const Instance &instance) noexcept
}
CommandResult
handle_listneighbors(Client &client, gcc_unused Request args, Response &r)
handle_listneighbors(Client &client, [[maybe_unused]] Request args, Response &r)
{
const NeighborGlue *const neighbors =
client.GetInstance().neighbors.get();
......
......@@ -69,7 +69,7 @@ print_spl_list(Response &r, const PlaylistVector &list)
}
CommandResult
handle_urlhandlers(Client &client, gcc_unused Request args, Response &r)
handle_urlhandlers(Client &client, [[maybe_unused]] Request args, Response &r)
{
if (client.IsLocal())
r.Format("handler: file://\n");
......@@ -78,7 +78,7 @@ handle_urlhandlers(Client &client, gcc_unused Request args, Response &r)
}
CommandResult
handle_decoders(gcc_unused Client &client, gcc_unused Request args,
handle_decoders([[maybe_unused]] Client &client, [[maybe_unused]] Request args,
Response &r)
{
decoder_list_print(r);
......@@ -86,8 +86,8 @@ handle_decoders(gcc_unused Client &client, gcc_unused Request args,
}
CommandResult
handle_kill(gcc_unused Client &client, gcc_unused Request request,
gcc_unused Response &r)
handle_kill([[maybe_unused]] Client &client, [[maybe_unused]] Request request,
[[maybe_unused]] Response &r)
{
return CommandResult::KILL;
}
......@@ -307,7 +307,7 @@ handle_update(Client &client, Request args, Response &r, bool discard)
}
CommandResult
handle_update(Client &client, Request args, gcc_unused Response &r)
handle_update(Client &client, Request args, [[maybe_unused]] Response &r)
{
return handle_update(client, args, r, false);
}
......@@ -360,14 +360,14 @@ handle_volume(Client &client, Request args, Response &r)
}
CommandResult
handle_stats(Client &client, gcc_unused Request args, Response &r)
handle_stats(Client &client, [[maybe_unused]] Request args, Response &r)
{
stats_print(r, client.GetPartition());
return CommandResult::OK;
}
CommandResult
handle_config(Client &client, gcc_unused Request args, Response &r)
handle_config(Client &client, [[maybe_unused]] Request args, Response &r)
{
if (!client.IsLocal()) {
r.Error(ACK_ERROR_PERMISSION,
......
......@@ -118,7 +118,7 @@ handle_outputset(Client &client, Request request, Response &response)
}
CommandResult
handle_devices(Client &client, gcc_unused Request args, Response &r)
handle_devices(Client &client, [[maybe_unused]] Request args, Response &r)
{
assert(args.empty());
......
......@@ -60,7 +60,7 @@
#define COMMAND_STATUS_UPDATING_DB "updating_db"
CommandResult
handle_play(Client &client, Request args, gcc_unused Response &r)
handle_play(Client &client, Request args, [[maybe_unused]] Response &r)
{
int song = args.ParseOptional(0, -1);
......@@ -69,7 +69,7 @@ handle_play(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_playid(Client &client, Request args, gcc_unused Response &r)
handle_playid(Client &client, Request args, [[maybe_unused]] Response &r)
{
int id = args.ParseOptional(0, -1);
......@@ -78,21 +78,21 @@ handle_playid(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_stop(Client &client, gcc_unused Request args, gcc_unused Response &r)
handle_stop(Client &client, [[maybe_unused]] Request args, [[maybe_unused]] Response &r)
{
client.GetPartition().Stop();
return CommandResult::OK;
}
CommandResult
handle_currentsong(Client &client, gcc_unused Request args, Response &r)
handle_currentsong(Client &client, [[maybe_unused]] Request args, Response &r)
{
playlist_print_current(r, client.GetPlaylist());
return CommandResult::OK;
}
CommandResult
handle_pause(Client &client, Request args, gcc_unused Response &r)
handle_pause(Client &client, Request args, [[maybe_unused]] Response &r)
{
auto &pc = client.GetPlayerControl();
......@@ -106,7 +106,7 @@ handle_pause(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_status(Client &client, gcc_unused Request args, Response &r)
handle_status(Client &client, [[maybe_unused]] Request args, Response &r)
{
auto &partition = client.GetPartition();
auto &pc = partition.pc;
......@@ -216,7 +216,7 @@ handle_status(Client &client, gcc_unused Request args, Response &r)
}
CommandResult
handle_next(Client &client, gcc_unused Request args, gcc_unused Response &r)
handle_next(Client &client, [[maybe_unused]] Request args, [[maybe_unused]] Response &r)
{
playlist &playlist = client.GetPlaylist();
......@@ -234,15 +234,15 @@ handle_next(Client &client, gcc_unused Request args, gcc_unused Response &r)
}
CommandResult
handle_previous(Client &client, gcc_unused Request args,
gcc_unused Response &r)
handle_previous(Client &client, [[maybe_unused]] Request args,
[[maybe_unused]] Response &r)
{
client.GetPartition().PlayPrevious();
return CommandResult::OK;
}
CommandResult
handle_repeat(Client &client, Request args, gcc_unused Response &r)
handle_repeat(Client &client, Request args, [[maybe_unused]] Response &r)
{
bool status = args.ParseBool(0);
client.GetPartition().SetRepeat(status);
......@@ -250,7 +250,7 @@ handle_repeat(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_single(Client &client, Request args, gcc_unused Response &r)
handle_single(Client &client, Request args, [[maybe_unused]] Response &r)
{
auto new_mode = SingleFromString(args.front());
client.GetPartition().SetSingle(new_mode);
......@@ -258,7 +258,7 @@ handle_single(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_consume(Client &client, Request args, gcc_unused Response &r)
handle_consume(Client &client, Request args, [[maybe_unused]] Response &r)
{
bool status = args.ParseBool(0);
client.GetPartition().SetConsume(status);
......@@ -266,7 +266,7 @@ handle_consume(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_random(Client &client, Request args, gcc_unused Response &r)
handle_random(Client &client, Request args, [[maybe_unused]] Response &r)
{
bool status = args.ParseBool(0);
auto &partition = client.GetPartition();
......@@ -276,15 +276,15 @@ handle_random(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_clearerror(Client &client, gcc_unused Request args,
gcc_unused Response &r)
handle_clearerror(Client &client, [[maybe_unused]] Request args,
[[maybe_unused]] Response &r)
{
client.GetPlayerControl().LockClearError();
return CommandResult::OK;
}
CommandResult
handle_seek(Client &client, Request args, gcc_unused Response &r)
handle_seek(Client &client, Request args, [[maybe_unused]] Response &r)
{
unsigned song = args.ParseUnsigned(0);
SongTime seek_time = args.ParseSongTime(1);
......@@ -294,7 +294,7 @@ handle_seek(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_seekid(Client &client, Request args, gcc_unused Response &r)
handle_seekid(Client &client, Request args, [[maybe_unused]] Response &r)
{
unsigned id = args.ParseUnsigned(0);
SongTime seek_time = args.ParseSongTime(1);
......@@ -304,7 +304,7 @@ handle_seekid(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_seekcur(Client &client, Request args, gcc_unused Response &r)
handle_seekcur(Client &client, Request args, [[maybe_unused]] Response &r)
{
const char *p = args.front();
bool relative = *p == '+' || *p == '-';
......@@ -315,7 +315,7 @@ handle_seekcur(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_crossfade(Client &client, Request args, gcc_unused Response &r)
handle_crossfade(Client &client, Request args, [[maybe_unused]] Response &r)
{
FloatDuration duration{args.ParseUnsigned(0)};
client.GetPlayerControl().SetCrossFade(duration);
......@@ -323,7 +323,7 @@ handle_crossfade(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_mixrampdb(Client &client, Request args, gcc_unused Response &r)
handle_mixrampdb(Client &client, Request args, [[maybe_unused]] Response &r)
{
float db = args.ParseFloat(0);
client.GetPlayerControl().SetMixRampDb(db);
......@@ -331,7 +331,7 @@ handle_mixrampdb(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_mixrampdelay(Client &client, Request args, gcc_unused Response &r)
handle_mixrampdelay(Client &client, Request args, [[maybe_unused]] Response &r)
{
FloatDuration delay_secs{args.ParseFloat(0)};
client.GetPlayerControl().SetMixRampDelay(delay_secs);
......@@ -349,7 +349,7 @@ handle_replay_gain_mode(Client &client, Request args, Response &)
}
CommandResult
handle_replay_gain_status(Client &client, gcc_unused Request args,
handle_replay_gain_status(Client &client, [[maybe_unused]] Request args,
Response &r)
{
r.Format("replay_gain_mode: %s\n",
......
......@@ -60,14 +60,14 @@ print_spl_list(Response &r, const PlaylistVector &list)
}
CommandResult
handle_save(Client &client, Request args, gcc_unused Response &r)
handle_save(Client &client, Request args, [[maybe_unused]] Response &r)
{
spl_save_playlist(args.front(), client.GetPlaylist());
return CommandResult::OK;
}
CommandResult
handle_load(Client &client, Request args, gcc_unused Response &r)
handle_load(Client &client, Request args, [[maybe_unused]] Response &r)
{
const auto uri = LocateUri(UriPluginKind::PLAYLIST, args.front(),
&client
......@@ -132,7 +132,7 @@ handle_listplaylistinfo(Client &client, Request args, Response &r)
}
CommandResult
handle_rm(gcc_unused Client &client, Request args, gcc_unused Response &r)
handle_rm([[maybe_unused]] Client &client, Request args, [[maybe_unused]] Response &r)
{
const char *const name = args.front();
......@@ -141,7 +141,7 @@ handle_rm(gcc_unused Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_rename(gcc_unused Client &client, Request args, gcc_unused Response &r)
handle_rename([[maybe_unused]] Client &client, Request args, [[maybe_unused]] Response &r)
{
const char *const old_name = args[0];
const char *const new_name = args[1];
......@@ -151,8 +151,8 @@ handle_rename(gcc_unused Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_playlistdelete(gcc_unused Client &client,
Request args, gcc_unused Response &r)
handle_playlistdelete([[maybe_unused]] Client &client,
Request args, [[maybe_unused]] Response &r)
{
const char *const name = args[0];
unsigned from = args.ParseUnsigned(1);
......@@ -162,8 +162,8 @@ handle_playlistdelete(gcc_unused Client &client,
}
CommandResult
handle_playlistmove(gcc_unused Client &client,
Request args, gcc_unused Response &r)
handle_playlistmove([[maybe_unused]] Client &client,
Request args, [[maybe_unused]] Response &r)
{
const char *const name = args.front();
unsigned from = args.ParseUnsigned(1);
......@@ -174,8 +174,8 @@ handle_playlistmove(gcc_unused Client &client,
}
CommandResult
handle_playlistclear(gcc_unused Client &client,
Request args, gcc_unused Response &r)
handle_playlistclear([[maybe_unused]] Client &client,
Request args, [[maybe_unused]] Response &r)
{
const char *const name = args.front();
......@@ -184,7 +184,7 @@ handle_playlistclear(gcc_unused Client &client,
}
CommandResult
handle_playlistadd(Client &client, Request args, gcc_unused Response &r)
handle_playlistadd(Client &client, Request args, [[maybe_unused]] Response &r)
{
const char *const playlist = args[0];
const char *const uri = args[1];
......@@ -209,7 +209,7 @@ handle_playlistadd(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_listplaylists(gcc_unused Client &client, gcc_unused Request args,
handle_listplaylists([[maybe_unused]] Client &client, [[maybe_unused]] Request args,
Response &r)
{
print_spl_list(r, ListPlaylistFiles());
......
......@@ -51,7 +51,7 @@ AddUri(Client &client, const LocatedUri &uri)
static CommandResult
AddDatabaseSelection(Client &client, const char *uri,
gcc_unused Response &r)
[[maybe_unused]] Response &r)
{
#ifdef ENABLE_DATABASE
auto &partition = client.GetPartition();
......@@ -179,7 +179,7 @@ handle_rangeid(Client &client, Request args, Response &r)
}
CommandResult
handle_delete(Client &client, Request args, gcc_unused Response &r)
handle_delete(Client &client, Request args, [[maybe_unused]] Response &r)
{
RangeArg range = args.ParseRange(0);
client.GetPartition().DeleteRange(range.start, range.end);
......@@ -187,7 +187,7 @@ handle_delete(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_deleteid(Client &client, Request args, gcc_unused Response &r)
handle_deleteid(Client &client, Request args, [[maybe_unused]] Response &r)
{
unsigned id = args.ParseUnsigned(0);
client.GetPartition().DeleteId(id);
......@@ -195,14 +195,14 @@ handle_deleteid(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_playlist(Client &client, gcc_unused Request args, Response &r)
handle_playlist(Client &client, [[maybe_unused]] Request args, Response &r)
{
playlist_print_uris(r, client.GetPlaylist());
return CommandResult::OK;
}
CommandResult
handle_shuffle(gcc_unused Client &client, Request args, gcc_unused Response &r)
handle_shuffle([[maybe_unused]] Client &client, Request args, [[maybe_unused]] Response &r)
{
RangeArg range = args.ParseOptional(0, RangeArg::All());
client.GetPartition().Shuffle(range.start, range.end);
......@@ -210,7 +210,7 @@ handle_shuffle(gcc_unused Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_clear(Client &client, gcc_unused Request args, gcc_unused Response &r)
handle_clear(Client &client, [[maybe_unused]] Request args, [[maybe_unused]] Response &r)
{
client.GetPartition().ClearQueue();
return CommandResult::OK;
......@@ -291,7 +291,7 @@ handle_playlistsearch(Client &client, Request args, Response &r)
}
CommandResult
handle_prio(Client &client, Request args, gcc_unused Response &r)
handle_prio(Client &client, Request args, [[maybe_unused]] Response &r)
{
unsigned priority = args.ParseUnsigned(0, 0xff);
args.shift();
......@@ -307,7 +307,7 @@ handle_prio(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_prioid(Client &client, Request args, gcc_unused Response &r)
handle_prioid(Client &client, Request args, [[maybe_unused]] Response &r)
{
unsigned priority = args.ParseUnsigned(0, 0xff);
args.shift();
......@@ -323,7 +323,7 @@ handle_prioid(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_move(Client &client, Request args, gcc_unused Response &r)
handle_move(Client &client, Request args, [[maybe_unused]] Response &r)
{
RangeArg range = args.ParseRange(0);
int to = args.ParseInt(1);
......@@ -332,7 +332,7 @@ handle_move(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_moveid(Client &client, Request args, gcc_unused Response &r)
handle_moveid(Client &client, Request args, [[maybe_unused]] Response &r)
{
unsigned id = args.ParseUnsigned(0);
int to = args.ParseInt(1);
......@@ -341,7 +341,7 @@ handle_moveid(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_swap(Client &client, Request args, gcc_unused Response &r)
handle_swap(Client &client, Request args, [[maybe_unused]] Response &r)
{
unsigned song1 = args.ParseUnsigned(0);
unsigned song2 = args.ParseUnsigned(1);
......@@ -350,7 +350,7 @@ handle_swap(Client &client, Request args, gcc_unused Response &r)
}
CommandResult
handle_swapid(Client &client, Request args, gcc_unused Response &r)
handle_swapid(Client &client, Request args, [[maybe_unused]] Response &r)
{
unsigned id1 = args.ParseUnsigned(0);
unsigned id2 = args.ParseUnsigned(1);
......
......@@ -143,7 +143,7 @@ print_storage_uri(Client &client, Response &r, const Storage &storage)
}
CommandResult
handle_listmounts(Client &client, gcc_unused Request args, Response &r)
handle_listmounts(Client &client, [[maybe_unused]] Request args, Response &r)
{
Storage *_composite = client.GetInstance().storage;
if (_composite == nullptr) {
......
......@@ -126,8 +126,8 @@ public:
*
* @return the job id or 0 if not implemented
*/
virtual unsigned Update(gcc_unused const char *uri_utf8,
gcc_unused bool discard) {
virtual unsigned Update([[maybe_unused]] const char *uri_utf8,
[[maybe_unused]] bool discard) {
/* not implemented: return 0 */
return 0;
}
......
......@@ -277,6 +277,7 @@ Convert(TagType tag_type) noexcept
return MPD_TAG_COUNT;
}
[[noreturn]]
static void
ThrowError(struct mpd_connection *connection)
{
......@@ -574,7 +575,7 @@ ProxyDatabase::Disconnect() noexcept
}
bool
ProxyDatabase::OnSocketReady(gcc_unused unsigned flags) noexcept
ProxyDatabase::OnSocketReady([[maybe_unused]] unsigned flags) noexcept
{
assert(connection != nullptr);
......
......@@ -70,7 +70,7 @@ inline SimpleDatabase::SimpleDatabase(const ConfigBlock &block)
inline SimpleDatabase::SimpleDatabase(AllocatedPath &&_path,
#ifndef ENABLE_ZLIB
gcc_unused
[[maybe_unused]]
#endif
bool _compress) noexcept
:Database(simple_db_plugin),
......@@ -85,7 +85,7 @@ inline SimpleDatabase::SimpleDatabase(AllocatedPath &&_path,
DatabasePtr
SimpleDatabase::Create(EventLoop &, EventLoop &,
gcc_unused DatabaseListener &listener,
[[maybe_unused]] DatabaseListener &listener,
const ConfigBlock &block)
{
return std::make_unique<SimpleDatabase>(block);
......@@ -248,7 +248,7 @@ SimpleDatabase::GetSong(const char *uri) const
}
void
SimpleDatabase::ReturnSong(gcc_unused const LightSong *song) const noexcept
SimpleDatabase::ReturnSong([[maybe_unused]] const LightSong *song) const noexcept
{
assert(song != nullptr);
assert(song == prefixed_light_song || song == &light_song.Get());
......
......@@ -145,7 +145,7 @@ private:
DatabasePtr
UpnpDatabase::Create(EventLoop &, EventLoop &io_event_loop,
gcc_unused DatabaseListener &listener,
[[maybe_unused]] DatabaseListener &listener,
const ConfigBlock &) noexcept
{
return std::make_unique<UpnpDatabase>(io_event_loop);
......
......@@ -31,7 +31,7 @@
#include <sys/inotify.h>
bool
InotifySource::OnSocketReady(gcc_unused unsigned flags) noexcept
InotifySource::OnSocketReady([[maybe_unused]] unsigned flags) noexcept
{
uint8_t buffer[4096];
static_assert(sizeof(buffer) >= sizeof(struct inotify_event) + NAME_MAX + 1,
......
......@@ -236,7 +236,7 @@ WatchDirectory::GetDepth() const noexcept
static void
mpd_inotify_callback(int wd, unsigned mask,
gcc_unused const char *name, gcc_unused void *ctx)
[[maybe_unused]] const char *name, [[maybe_unused]] void *ctx)
{
WatchDirectory *directory;
......
......@@ -111,10 +111,10 @@ private:
#else
bool UpdateArchiveFile(gcc_unused Directory &directory,
gcc_unused const char *name,
gcc_unused const char *suffix,
gcc_unused const StorageFileInfo &info) noexcept {
bool UpdateArchiveFile([[maybe_unused]] Directory &directory,
[[maybe_unused]] const char *name,
[[maybe_unused]] const char *suffix,
[[maybe_unused]] const StorageFileInfo &info) noexcept {
return false;
}
#endif
......
......@@ -53,7 +53,7 @@ static void flacPrintErroredState(FLAC__StreamDecoderState state)
LogError(flac_domain, FLAC__StreamDecoderStateString[state]);
}
static void flacMetadata(gcc_unused const FLAC__StreamDecoder * dec,
static void flacMetadata([[maybe_unused]] const FLAC__StreamDecoder * dec,
const FLAC__StreamMetadata * block, void *vdata)
{
auto &fd = *(FlacDecoder *)vdata;
......@@ -307,7 +307,7 @@ flac_decode(DecoderClient &client, InputStream &input_stream)
}
static bool
oggflac_init(gcc_unused const ConfigBlock &block)
oggflac_init([[maybe_unused]] const ConfigBlock &block)
{
return !!FLAC_API_SUPPORTS_OGG_FLAC;
}
......
......@@ -98,7 +98,7 @@ FlacInput::Error(FLAC__StreamDecoderErrorStatus status)
}
FLAC__StreamDecoderReadStatus
FlacInput::Read(gcc_unused const FLAC__StreamDecoder *flac_decoder,
FlacInput::Read([[maybe_unused]] const FLAC__StreamDecoder *flac_decoder,
FLAC__byte buffer[], size_t *bytes,
void *client_data)
{
......@@ -108,7 +108,7 @@ FlacInput::Read(gcc_unused const FLAC__StreamDecoder *flac_decoder,
}
FLAC__StreamDecoderSeekStatus
FlacInput::Seek(gcc_unused const FLAC__StreamDecoder *flac_decoder,
FlacInput::Seek([[maybe_unused]] const FLAC__StreamDecoder *flac_decoder,
FLAC__uint64 absolute_byte_offset, void *client_data)
{
auto *i = (FlacInput *)client_data;
......@@ -117,7 +117,7 @@ FlacInput::Seek(gcc_unused const FLAC__StreamDecoder *flac_decoder,
}
FLAC__StreamDecoderTellStatus
FlacInput::Tell(gcc_unused const FLAC__StreamDecoder *flac_decoder,
FlacInput::Tell([[maybe_unused]] const FLAC__StreamDecoder *flac_decoder,
FLAC__uint64 *absolute_byte_offset, void *client_data)
{
auto *i = (FlacInput *)client_data;
......@@ -126,7 +126,7 @@ FlacInput::Tell(gcc_unused const FLAC__StreamDecoder *flac_decoder,
}
FLAC__StreamDecoderLengthStatus
FlacInput::Length(gcc_unused const FLAC__StreamDecoder *flac_decoder,
FlacInput::Length([[maybe_unused]] const FLAC__StreamDecoder *flac_decoder,
FLAC__uint64 *stream_length, void *client_data)
{
auto *i = (FlacInput *)client_data;
......@@ -135,7 +135,7 @@ FlacInput::Length(gcc_unused const FLAC__StreamDecoder *flac_decoder,
}
FLAC__bool
FlacInput::Eof(gcc_unused const FLAC__StreamDecoder *flac_decoder,
FlacInput::Eof([[maybe_unused]] const FLAC__StreamDecoder *flac_decoder,
void *client_data)
{
auto *i = (FlacInput *)client_data;
......@@ -144,7 +144,7 @@ FlacInput::Eof(gcc_unused const FLAC__StreamDecoder *flac_decoder,
}
void
FlacInput::Error(gcc_unused const FLAC__StreamDecoder *decoder,
FlacInput::Error([[maybe_unused]] const FLAC__StreamDecoder *decoder,
FLAC__StreamDecoderErrorStatus status, void *client_data)
{
auto *i = (FlacInput *)client_data;
......
......@@ -196,7 +196,7 @@ fluidsynth_file_decode(DecoderClient &client, Path path_fs)
static bool
fluidsynth_scan_file(Path path_fs,
gcc_unused TagHandler &handler) noexcept
[[maybe_unused]] TagHandler &handler) noexcept
{
return fluid_is_midifile(path_fs.c_str());
}
......
......@@ -62,7 +62,7 @@ static int gme_accuracy;
#endif
static bool
gme_plugin_init(gcc_unused const ConfigBlock &block)
gme_plugin_init([[maybe_unused]] const ConfigBlock &block)
{
#if GME_VERSION >= 0x000600
auto accuracy = block.GetBlockParam("accuracy");
......
......@@ -37,7 +37,7 @@
static constexpr Domain mpg123_domain("mpg123");
static bool
mpd_mpg123_init(gcc_unused const ConfigBlock &block)
mpd_mpg123_init([[maybe_unused]] const ConfigBlock &block)
{
mpg123_init();
......
......@@ -64,7 +64,7 @@ IsOpusTags(const ogg_packet &packet) noexcept
}
bool
mpd_opus_init(gcc_unused const ConfigBlock &block)
mpd_opus_init([[maybe_unused]] const ConfigBlock &block)
{
LogDebug(opus_domain, opus_get_version_string());
......
......@@ -34,7 +34,7 @@
static constexpr Domain sndfile_domain("sndfile");
static bool
sndfile_init(gcc_unused const ConfigBlock &block)
sndfile_init([[maybe_unused]] const ConfigBlock &block)
{
LogDebug(sndfile_domain, sf_version_string());
return true;
......@@ -109,9 +109,9 @@ sndfile_vio_read(void *ptr, sf_count_t count, void *user_data)
}
static sf_count_t
sndfile_vio_write(gcc_unused const void *ptr,
gcc_unused sf_count_t count,
gcc_unused void *user_data)
sndfile_vio_write([[maybe_unused]] const void *ptr,
[[maybe_unused]] sf_count_t count,
[[maybe_unused]] void *user_data)
{
/* no writing! */
return -1;
......
......@@ -311,7 +311,7 @@ VorbisDecoder::OnOggEnd()
/* public */
static bool
vorbis_init(gcc_unused const ConfigBlock &block)
vorbis_init([[maybe_unused]] const ConfigBlock &block)
{
#ifndef HAVE_TREMOR
LogDebug(vorbis_domain, vorbis_version_string());
......
......@@ -143,7 +143,7 @@ format_samples_int(void *buffer, uint32_t count)
* No conversion necessary.
*/
static void
format_samples_nop(gcc_unused void *buffer, gcc_unused uint32_t count)
format_samples_nop([[maybe_unused]] void *buffer, [[maybe_unused]] uint32_t count)
{
/* do nothing */
}
......
......@@ -84,7 +84,7 @@ public:
*
* @param tag the tag object
*/
virtual void SendTag(gcc_unused const Tag &tag) {
virtual void SendTag([[maybe_unused]] const Tag &tag) {
}
/**
......
......@@ -69,8 +69,8 @@ private:
static FLAC__StreamEncoderWriteStatus WriteCallback(const FLAC__StreamEncoder *,
const FLAC__byte data[],
size_t bytes,
gcc_unused unsigned samples,
gcc_unused unsigned current_frame,
[[maybe_unused]] unsigned samples,
[[maybe_unused]] unsigned current_frame,
void *client_data) noexcept {
auto &encoder = *(FlacEncoder *)client_data;
encoder.output_buffer.Append((const uint8_t *)data, bytes);
......
......@@ -49,7 +49,7 @@ public:
};
static PreparedEncoder *
null_encoder_init(gcc_unused const ConfigBlock &block)
null_encoder_init([[maybe_unused]] const ConfigBlock &block)
{
return new PreparedNullEncoder();
}
......
......@@ -98,7 +98,7 @@ fill_wave_header(WaveHeader *header, int channels, int bits,
}
static PreparedEncoder *
wave_encoder_init(gcc_unused const ConfigBlock &block)
wave_encoder_init([[maybe_unused]] const ConfigBlock &block)
{
return new PreparedWaveEncoder();
}
......
......@@ -271,7 +271,7 @@ EventLoop::HandleDeferred() noexcept
}
bool
EventLoop::OnSocketReady(gcc_unused unsigned flags) noexcept
EventLoop::OnSocketReady([[maybe_unused]] unsigned flags) noexcept
{
assert(IsInside());
......
......@@ -89,7 +89,7 @@ public:
return epoll.Remove(fd);
}
bool Abandon(gcc_unused int fd) noexcept {
bool Abandon([[maybe_unused]] int fd) noexcept {
// Nothing to do in this implementation.
// Closed descriptors are automatically unregistered.
return true;
......
......@@ -161,7 +161,7 @@ ServerSocket::OneServerSocket::Accept() noexcept
}
bool
ServerSocket::OneServerSocket::OnSocketReady(gcc_unused unsigned flags) noexcept
ServerSocket::OneServerSocket::OnSocketReady([[maybe_unused]] unsigned flags) noexcept
{
Accept();
return true;
......
......@@ -43,7 +43,7 @@ public:
observer.proxy = nullptr;
}
void Clear(gcc_unused Proxy *_child) noexcept {
void Clear([[maybe_unused]] Proxy *_child) noexcept {
assert(child == _child);
child = nullptr;
}
......
......@@ -53,7 +53,7 @@ public:
};
static std::unique_ptr<PreparedFilter>
normalize_filter_init(gcc_unused const ConfigBlock &block)
normalize_filter_init([[maybe_unused]] const ConfigBlock &block)
{
return std::make_unique<PreparedNormalizeFilter>();
}
......
......@@ -38,7 +38,7 @@ public:
};
static std::unique_ptr<PreparedFilter>
null_filter_init(gcc_unused const ConfigBlock &block)
null_filter_init([[maybe_unused]] const ConfigBlock &block)
{
return std::make_unique<PreparedNullFilter>();
}
......
......@@ -81,7 +81,7 @@ FileOutputStream::Open()
#ifdef _WIN32
inline void
FileOutputStream::OpenCreate(gcc_unused bool visible)
FileOutputStream::OpenCreate([[maybe_unused]] bool visible)
{
handle = CreateFile(path.c_str(), GENERIC_WRITE, 0, nullptr,
CREATE_ALWAYS,
......
......@@ -58,7 +58,7 @@ public:
*/
IcyInputStream(InputStreamPtr _input,
std::shared_ptr<IcyMetaDataParser> _parser);
virtual ~IcyInputStream() noexcept;
~IcyInputStream() noexcept override;
IcyInputStream(const IcyInputStream &) = delete;
IcyInputStream &operator=(const IcyInputStream &) = delete;
......
......@@ -69,7 +69,7 @@ InputStream::CheapSeeking() const noexcept
}
void
InputStream::Seek(std::unique_lock<Mutex> &, gcc_unused offset_type new_offset)
InputStream::Seek(std::unique_lock<Mutex> &, [[maybe_unused]] offset_type new_offset)
{
throw std::runtime_error("Seeking is not implemented");
}
......
......@@ -52,7 +52,7 @@ public:
Mutex &_mutex) noexcept
:InputStream(_uri, _mutex) {}
virtual ~ProxyInputStream() noexcept;
~ProxyInputStream() noexcept override;
ProxyInputStream(const ProxyInputStream &) = delete;
ProxyInputStream &operator=(const ProxyInputStream &) = delete;
......
......@@ -110,7 +110,7 @@ protected:
InvalidateSockets();
}
void DoSeek(gcc_unused offset_type new_offset) override {
void DoSeek([[maybe_unused]] offset_type new_offset) override {
/* unreachable because seekable==false */
SeekDone();
}
......@@ -289,7 +289,7 @@ AlsaInputStream::Recover(int err)
if (err == -EAGAIN)
return 0;
/* fall-through to snd_pcm_prepare: */
#if GCC_CHECK_VERSION(7,0)
#if CLANG_OR_GCC_VERSION(7,0)
[[fallthrough]];
#endif
case SND_PCM_STATE_OPEN:
......
......@@ -108,7 +108,7 @@ CurlGlobal::CurlGlobal(EventLoop &_loop)
}
int
CurlSocket::SocketFunction(gcc_unused CURL *easy,
CurlSocket::SocketFunction([[maybe_unused]] CURL *easy,
curl_socket_t s, int action,
void *userp, void *socketp) noexcept
{
......@@ -230,7 +230,7 @@ CurlGlobal::UpdateTimeout(long timeout_ms) noexcept
}
int
CurlGlobal::TimerFunction(gcc_unused CURLM *_multi, long timeout_ms,
CurlGlobal::TimerFunction([[maybe_unused]] CURLM *_multi, long timeout_ms,
void *userp) noexcept
{
auto &global = *(CurlGlobal *)userp;
......
......@@ -80,7 +80,7 @@ public:
throw std::runtime_error("dbus_message_iter_append_fixed_array() failed");
return *this;
};
}
AppendMessageIter &AppendFixedArray(ConstBuffer<uint32_t> value) {
return AppendFixedArray(DBUS_TYPE_UINT32,
......
......@@ -71,7 +71,7 @@ public:
return error.message;
}
gcc_noreturn
[[noreturn]]
void Throw(const char *prefix) const;
void CheckThrow(const char *prefix) const;
};
......
......@@ -47,7 +47,7 @@ FfmpegImportLogLevel(int level) noexcept
}
void
FfmpegLogCallback(gcc_unused void *ptr, int level, const char *fmt, std::va_list vl)
FfmpegLogCallback(void *ptr, int level, const char *fmt, std::va_list vl)
{
const AVClass * cls = nullptr;
......
......@@ -172,7 +172,7 @@ NfsConnection::CancellableCallback::Callback(int err, void *data) noexcept
void
NfsConnection::CancellableCallback::Callback(int err,
gcc_unused struct nfs_context *nfs,
[[maybe_unused]] struct nfs_context *nfs,
void *data,
void *private_data) noexcept
{
......@@ -551,8 +551,8 @@ NfsConnection::OnSocketReady(unsigned flags) noexcept
}
inline void
NfsConnection::MountCallback(int status, gcc_unused nfs_context *nfs,
gcc_unused void *data) noexcept
NfsConnection::MountCallback(int status, [[maybe_unused]] nfs_context *nfs,
[[maybe_unused]] void *data) noexcept
{
assert(GetEventLoop().IsInside());
assert(context == nfs);
......
......@@ -27,11 +27,11 @@
#include <string.h>
static void
mpd_smbc_get_auth_data(gcc_unused const char *srv,
gcc_unused const char *shr,
char *wg, gcc_unused int wglen,
char *un, gcc_unused int unlen,
char *pw, gcc_unused int pwlen)
mpd_smbc_get_auth_data([[maybe_unused]] const char *srv,
[[maybe_unused]] const char *shr,
char *wg, [[maybe_unused]] int wglen,
char *un, [[maybe_unused]] int unlen,
char *pw, [[maybe_unused]] int pwlen)
{
// TODO: implement
strcpy(wg, "WORKGROUP");
......
......@@ -54,7 +54,7 @@ Bind(sqlite3_stmt *stmt, unsigned i, const char *value)
template<typename... Args>
static void
BindAll2(gcc_unused sqlite3_stmt *stmt, gcc_unused unsigned i)
BindAll2([[maybe_unused]] sqlite3_stmt *stmt, [[maybe_unused]] unsigned i)
{
assert(int(i - 1) == sqlite3_bind_parameter_count(stmt));
}
......
......@@ -32,7 +32,7 @@ CountNameValuePairs() noexcept
template<typename... Args>
static constexpr unsigned
CountNameValuePairs(gcc_unused const char *name, gcc_unused const char *value,
CountNameValuePairs([[maybe_unused]] const char *name, [[maybe_unused]] const char *value,
Args... args) noexcept
{
return 1 + CountNameValuePairs(args...);
......
......@@ -119,7 +119,7 @@ FlacIOEof(FLAC__IOHandle handle)
}
static int
FlacIOClose(gcc_unused FLAC__IOHandle handle)
FlacIOClose([[maybe_unused]] FLAC__IOHandle handle)
{
/* no-op because the libFLAC caller is responsible for closing
the #InputStream */
......
......@@ -173,7 +173,7 @@ AlsaMixer::Configure(const ConfigBlock &block)
}
static Mixer *
alsa_mixer_init(EventLoop &event_loop, gcc_unused AudioOutput &ao,
alsa_mixer_init(EventLoop &event_loop, [[maybe_unused]] AudioOutput &ao,
MixerListener &listener,
const ConfigBlock &block)
{
......
......@@ -47,9 +47,9 @@ public:
};
static Mixer *
haiku_mixer_init(gcc_unused EventLoop &event_loop, AudioOutput &ao,
haiku_mixer_init([[maybe_unused]] EventLoop &event_loop, AudioOutput &ao,
MixerListener &listener,
gcc_unused const ConfigBlock &block)
[[maybe_unused]] const ConfigBlock &block)
{
return new HaikuMixer((HaikuOutput &)ao, listener);
}
......
......@@ -49,10 +49,10 @@ public:
};
static Mixer *
null_mixer_init(gcc_unused EventLoop &event_loop,
gcc_unused AudioOutput &ao,
null_mixer_init([[maybe_unused]] EventLoop &event_loop,
[[maybe_unused]] AudioOutput &ao,
MixerListener &listener,
gcc_unused const ConfigBlock &block)
[[maybe_unused]] const ConfigBlock &block)
{
return new NullMixer(listener);
}
......
......@@ -54,9 +54,9 @@ OSXMixer::SetVolume(unsigned new_volume)
}
static Mixer *
osx_mixer_init(gcc_unused EventLoop &event_loop, AudioOutput &ao,
osx_mixer_init([[maybe_unused]] EventLoop &event_loop, AudioOutput &ao,
MixerListener &listener,
gcc_unused const ConfigBlock &block)
[[maybe_unused]] const ConfigBlock &block)
{
OSXOutput &osxo = (OSXOutput &)ao;
return new OSXMixer(osxo, listener);
......
......@@ -97,8 +97,8 @@ OssMixer::Configure(const ConfigBlock &block)
}
static Mixer *
oss_mixer_init(gcc_unused EventLoop &event_loop,
gcc_unused AudioOutput &ao,
oss_mixer_init([[maybe_unused]] EventLoop &event_loop,
[[maybe_unused]] AudioOutput &ao,
MixerListener &listener,
const ConfigBlock &block)
{
......
......@@ -104,7 +104,7 @@ PulseMixer::VolumeCallback(const pa_sink_input_info *i, int eol)
* value.
*/
static void
pulse_mixer_volume_cb(gcc_unused pa_context *context, const pa_sink_input_info *i,
pulse_mixer_volume_cb([[maybe_unused]] pa_context *context, const pa_sink_input_info *i,
int eol, void *userdata)
{
auto *pm = (PulseMixer *)userdata;
......@@ -133,7 +133,7 @@ PulseMixer::Update(pa_context *context, pa_stream *stream)
}
void
pulse_mixer_on_connect(gcc_unused PulseMixer &pm,
pulse_mixer_on_connect([[maybe_unused]] PulseMixer &pm,
struct pa_context *context)
{
pa_operation *o;
......@@ -182,7 +182,7 @@ parse_volume_scale_factor(const char *value) {
}
static Mixer *
pulse_mixer_init(gcc_unused EventLoop &event_loop, AudioOutput &ao,
pulse_mixer_init([[maybe_unused]] EventLoop &event_loop, AudioOutput &ao,
MixerListener &listener,
const ConfigBlock &block)
{
......
......@@ -45,10 +45,10 @@ public:
};
static Mixer *
sndio_mixer_init(gcc_unused EventLoop &event_loop,
sndio_mixer_init([[maybe_unused]] EventLoop &event_loop,
AudioOutput &ao,
MixerListener &listener,
gcc_unused const ConfigBlock &block)
[[maybe_unused]] const ConfigBlock &block)
{
return new SndioMixer((SndioOutput &)ao, listener);
}
......
......@@ -57,10 +57,10 @@ public:
};
static Mixer *
software_mixer_init(gcc_unused EventLoop &event_loop,
gcc_unused AudioOutput &ao,
software_mixer_init([[maybe_unused]] EventLoop &event_loop,
[[maybe_unused]] AudioOutput &ao,
MixerListener &listener,
gcc_unused const ConfigBlock &block)
[[maybe_unused]] const ConfigBlock &block)
{
return new SoftwareMixer(listener);
}
......
......@@ -63,9 +63,9 @@ winmm_volume_encode(int volume)
}
static Mixer *
winmm_mixer_init(gcc_unused EventLoop &event_loop, AudioOutput &ao,
winmm_mixer_init([[maybe_unused]] EventLoop &event_loop, AudioOutput &ao,
MixerListener &listener,
gcc_unused const ConfigBlock &block)
[[maybe_unused]] const ConfigBlock &block)
{
return new WinmmMixer((WinmmOutput &)ao, listener);
}
......
......@@ -252,9 +252,9 @@ SmbclientNeighborExplorer::ThreadFunc() noexcept
}
static std::unique_ptr<NeighborExplorer>
smbclient_neighbor_create(gcc_unused EventLoop &loop,
smbclient_neighbor_create([[maybe_unused]] EventLoop &loop,
NeighborListener &listener,
gcc_unused const ConfigBlock &block)
[[maybe_unused]] const ConfigBlock &block)
{
SmbclientInit();
......
......@@ -259,7 +259,7 @@ UdisksNeighborExplorer::HandleMessage(DBusConnection *connection,
static std::unique_ptr<NeighborExplorer>
udisks_neighbor_create(EventLoop &event_loop,
NeighborListener &listener,
gcc_unused const ConfigBlock &block)
[[maybe_unused]] const ConfigBlock &block)
{
return std::make_unique<UdisksNeighborExplorer>(event_loop, listener);
}
......
......@@ -127,7 +127,7 @@ UpnpNeighborExplorer::LostUPnP(const ContentDirectoryService &service)
static std::unique_ptr<NeighborExplorer>
upnp_neighbor_create(EventLoop &event_loop,
NeighborListener &listener,
gcc_unused const ConfigBlock &block)
[[maybe_unused]] const ConfigBlock &block)
{
return std::make_unique<UpnpNeighborExplorer>(event_loop, listener);
}
......
......@@ -23,8 +23,8 @@
#include <stdexcept>
void
AudioOutput::SetAttribute(gcc_unused std::string &&name,
gcc_unused std::string &&value)
AudioOutput::SetAttribute([[maybe_unused]] std::string &&name,
[[maybe_unused]] std::string &&value)
{
throw std::invalid_argument("Unsupported attribute");
}
......@@ -76,7 +76,7 @@ public:
const MusicChunk *Get() noexcept;
void Consume(gcc_unused const MusicChunk &_chunk) {
void Consume([[maybe_unused]] const MusicChunk &_chunk) {
assert(chunk != nullptr);
assert(chunk == &_chunk);
......@@ -86,7 +86,7 @@ public:
gcc_pure
bool IsConsumed(const MusicChunk &_chunk) const noexcept;
void ClearTail(gcc_unused const MusicChunk &_chunk) noexcept {
void ClearTail([[maybe_unused]] const MusicChunk &_chunk) noexcept {
assert(chunk == &_chunk);
assert(consumed);
chunk = nullptr;
......
......@@ -763,7 +763,7 @@ AlsaOutput::Recover(int err) noexcept
if (err == -EAGAIN)
return 0;
/* fall-through to snd_pcm_prepare: */
#if GCC_CHECK_VERSION(7,0)
#if CLANG_OR_GCC_VERSION(7,0)
[[fallthrough]];
#endif
case SND_PCM_STATE_OPEN:
......
......@@ -81,9 +81,9 @@ private:
std::chrono::steady_clock::duration Delay() const noexcept override;
static void _FillBuffer(void* cookie, void* _buffer, size_t size,
gcc_unused const media_raw_audio_format& _format);
[[maybe_unused]] const media_raw_audio_format& _format);
void FillBuffer(void* _buffer, size_t size,
gcc_unused const media_raw_audio_format& _format);
[[maybe_unused]] const media_raw_audio_format& _format);
void SendTag(const Tag &tag) override;
};
......@@ -154,7 +154,7 @@ HaikuOutput::_FillBuffer(void* cookie, void* buffer, size_t size,
void
HaikuOutput::FillBuffer(void* _buffer, size_t size,
gcc_unused const media_raw_audio_format& _format)
[[maybe_unused]] const media_raw_audio_format& _format)
{
buffer = (uint8*)_buffer;
......
......@@ -53,7 +53,7 @@ private:
: std::chrono::steady_clock::duration::zero();
}
size_t Play(gcc_unused const void *chunk, size_t size) override {
size_t Play([[maybe_unused]] const void *chunk, size_t size) override {
if (sync) {
if (!timer->IsStarted())
timer->Start();
......
......@@ -710,9 +710,9 @@ osx_output_set_device(OSXOutput *oo)
*/
static OSStatus
osx_render(void *vdata,
gcc_unused AudioUnitRenderActionFlags *io_action_flags,
gcc_unused const AudioTimeStamp *in_timestamp,
gcc_unused UInt32 in_bus_number,
[[maybe_unused]] AudioUnitRenderActionFlags *io_action_flags,
[[maybe_unused]] const AudioTimeStamp *in_timestamp,
[[maybe_unused]] UInt32 in_bus_number,
UInt32 in_number_frames,
AudioBufferList *buffer_list)
{
......
......@@ -57,7 +57,7 @@ PipeOutput::PipeOutput(const ConfigBlock &block)
}
inline void
PipeOutput::Open(gcc_unused AudioFormat &audio_format)
PipeOutput::Open([[maybe_unused]] AudioFormat &audio_format)
{
fh = popen(cmd.c_str(), "w");
if (fh == nullptr)
......
......@@ -62,7 +62,7 @@ class PulseOutput final : AudioOutput {
public:
void SetMixer(PulseMixer &_mixer);
void ClearMixer(gcc_unused PulseMixer &old_mixer) {
void ClearMixer([[maybe_unused]] PulseMixer &old_mixer) {
assert(mixer == &old_mixer);
mixer = nullptr;
......@@ -277,8 +277,8 @@ pulse_wait_for_operation(struct pa_threaded_mainloop *mainloop,
* the caller thread, to wake pulse_wait_for_operation() up.
*/
static void
pulse_output_stream_success_cb(gcc_unused pa_stream *s,
gcc_unused int success, void *userdata)
pulse_output_stream_success_cb([[maybe_unused]] pa_stream *s,
[[maybe_unused]] int success, void *userdata)
{
PulseOutput &po = *(PulseOutput *)userdata;
......@@ -342,7 +342,7 @@ PulseOutput::OnServerLayoutChanged(pa_subscription_event_type_t t,
}
static void
pulse_output_subscribe_cb(gcc_unused pa_context *context,
pulse_output_subscribe_cb([[maybe_unused]] pa_context *context,
pa_subscription_event_type_t t,
uint32_t idx, void *userdata)
{
......@@ -508,7 +508,7 @@ PulseOutput::WaitConnection()
}
inline void
PulseOutput::OnStreamSuspended(gcc_unused pa_stream *_stream)
PulseOutput::OnStreamSuspended([[maybe_unused]] pa_stream *_stream)
{
assert(_stream == stream || stream == nullptr);
assert(mainloop != nullptr);
......@@ -574,7 +574,7 @@ PulseOutput::OnStreamWrite(size_t nbytes)
}
static void
pulse_output_stream_write_cb(gcc_unused pa_stream *stream, size_t nbytes,
pulse_output_stream_write_cb([[maybe_unused]] pa_stream *stream, size_t nbytes,
void *userdata)
{
PulseOutput &po = *(PulseOutput *)userdata;
......
......@@ -121,7 +121,7 @@ HttpdOutput::OnDeferredBroadcast() noexcept
void
HttpdOutput::OnAccept(UniqueSocketDescriptor fd,
SocketAddress, gcc_unused int uid) noexcept
SocketAddress, [[maybe_unused]] int uid) noexcept
{
/* the listener socket has become readable - a client has
connected */
......
......@@ -111,7 +111,7 @@ private:
* been consumed. It synthesises and enqueues the next
* buffer.
*/
static void PlayedCallback(gcc_unused SLAndroidSimpleBufferQueueItf caller,
static void PlayedCallback([[maybe_unused]] SLAndroidSimpleBufferQueueItf caller,
void *pContext)
{
SlesOutput &sles = *(SlesOutput *)pContext;
......
......@@ -1176,7 +1176,9 @@ try {
}
/* fall through */
gcc_fallthrough;
#if CLANG_OR_GCC_VERSION(7,0)
[[fallthrough]];
#endif
case PlayerCommand::PAUSE:
next_song.reset();
......
......@@ -82,7 +82,7 @@ ExtractCuesheetTagHandler::OnPair(StringView name, StringView value) noexcept
static std::unique_ptr<SongEnumerator>
embcue_playlist_open_uri(const char *uri,
gcc_unused Mutex &mutex)
[[maybe_unused]] Mutex &mutex)
{
if (!PathTraitsUTF8::IsAbsolute(uri))
/* only local files supported */
......
......@@ -79,7 +79,7 @@ static constexpr struct tag_table xspf_tag_elements[] = {
static void XMLCALL
xspf_start_element(void *user_data, const XML_Char *element_name,
gcc_unused const XML_Char **atts)
[[maybe_unused]] const XML_Char **atts)
{
auto *parser = (XspfParser *)user_data;
parser->value.clear();
......
......@@ -87,7 +87,7 @@ class CompositeStorage final : public Storage {
public:
CompositeStorage() noexcept;
virtual ~CompositeStorage();
~CompositeStorage() override;
/**
* Get the #Storage at the specified mount point. Returns
......
......@@ -36,7 +36,7 @@ MemoryStorageDirectoryReader::Read() noexcept
}
StorageFileInfo
MemoryStorageDirectoryReader::GetInfo(gcc_unused bool follow)
MemoryStorageDirectoryReader::GetInfo([[maybe_unused]] bool follow)
{
assert(!first);
assert(!entries.empty());
......
......@@ -22,7 +22,7 @@
#include "fs/Traits.hxx"
AllocatedPath
Storage::MapFS(gcc_unused const char *uri_utf8) const noexcept
Storage::MapFS([[maybe_unused]] const char *uri_utf8) const noexcept
{
return nullptr;
}
......
......@@ -315,7 +315,7 @@ private:
/* virtual methods from CommonExpatParser */
void StartElement(const XML_Char *name,
gcc_unused const XML_Char **attrs) final {
[[maybe_unused]] const XML_Char **attrs) final {
switch (state) {
case State::ROOT:
if (strcmp(name, "DAV:|response") == 0)
......@@ -447,7 +447,7 @@ protected:
};
StorageFileInfo
CurlStorage::GetInfo(const char *uri_utf8, gcc_unused bool follow)
CurlStorage::GetInfo(const char *uri_utf8, [[maybe_unused]] bool follow)
{
// TODO: escape the given URI
......
......@@ -288,7 +288,7 @@ protected:
connection.Lstat(path, *this);
}
void HandleResult(gcc_unused unsigned status, void *data) noexcept override {
void HandleResult([[maybe_unused]] unsigned status, void *data) noexcept override {
Copy(info, *(const struct nfs_stat_64 *)data);
}
};
......@@ -356,7 +356,7 @@ protected:
connection.OpenDirectory(path, *this);
}
void HandleResult(gcc_unused unsigned status,
void HandleResult([[maybe_unused]] unsigned status,
void *data) noexcept override {
auto *const dir = (struct nfsdir *)data;
......
......@@ -117,7 +117,7 @@ GetInfo(const char *path)
}
StorageFileInfo
SmbclientStorage::GetInfo(const char *uri_utf8, gcc_unused bool follow)
SmbclientStorage::GetInfo(const char *uri_utf8, [[maybe_unused]] bool follow)
{
const std::string mapped = MapUTF8(uri_utf8);
return ::GetInfo(mapped.c_str());
......@@ -172,14 +172,14 @@ SmbclientDirectoryReader::Read() noexcept
}
StorageFileInfo
SmbclientDirectoryReader::GetInfo(gcc_unused bool follow)
SmbclientDirectoryReader::GetInfo([[maybe_unused]] bool follow)
{
const std::string path = PathTraitsUTF8::Build(base.c_str(), name);
return ::GetInfo(path.c_str());
}
static std::unique_ptr<Storage>
CreateSmbclientStorageURI(gcc_unused EventLoop &event_loop, const char *base)
CreateSmbclientStorageURI([[maybe_unused]] EventLoop &event_loop, const char *base)
{
if (!StringStartsWithCaseASCII(base, "smb://"))
return nullptr;
......
......@@ -56,6 +56,6 @@ EventFD::Write() noexcept
assert(fd.IsDefined());
static constexpr eventfd_t value = 1;
gcc_unused ssize_t nbytes =
[[maybe_unused]] ssize_t nbytes =
fd.Write(&value, sizeof(value));
}
......@@ -85,7 +85,7 @@ EventPipe::Write() noexcept
#ifdef _WIN32
send(fds[1], "", 1, 0);
#else
gcc_unused ssize_t nbytes = write(fds[1], "", 1);
[[maybe_unused]] ssize_t nbytes = write(fds[1], "", 1);
#endif
}
......
......@@ -36,7 +36,7 @@
static constexpr Domain fatal_error_domain("fatal_error");
gcc_noreturn
[[noreturn]]
static void
Abort()
{
......
......@@ -29,11 +29,11 @@
/**
* Log the specified message and abort the process.
*/
gcc_noreturn
[[noreturn]]
void
FatalError(const char *msg);
gcc_noreturn
[[noreturn]]
void
FormatFatalError(const char *fmt, ...);
......@@ -42,19 +42,19 @@ FormatFatalError(const char *fmt, ...);
* fail. Prints the given message, the system error message (from
* errno or GetLastError()) and abort the process.
*/
gcc_noreturn
[[noreturn]]
void
FatalSystemError(const char *msg);
#ifdef _WIN32
gcc_noreturn
[[noreturn]]
void
FatalSystemError(const char *msg, DWORD code);
#endif
gcc_noreturn
[[noreturn]]
void
FormatFatalSystemError(const char *fmt, ...);
......
......@@ -41,7 +41,7 @@ NullTagHandler::OnPicture(const char *, ConstBuffer<void>) noexcept
}
void
NullTagHandler::OnAudioFormat(gcc_unused AudioFormat af) noexcept
NullTagHandler::OnAudioFormat([[maybe_unused]] AudioFormat af) noexcept
{
}
......
......@@ -124,7 +124,7 @@ public:
explicit NullTagHandler(unsigned _want_mask) noexcept
:TagHandler(_want_mask) {}
void OnDuration(gcc_unused SongTime duration) noexcept override {}
void OnDuration([[maybe_unused]] SongTime duration) noexcept override {}
void OnTag(TagType type, StringView value) noexcept override;
void OnPair(StringView key, StringView value) noexcept override;
void OnAudioFormat(AudioFormat af) noexcept override;
......
......@@ -53,7 +53,7 @@ class ScopeUnlock {
public:
explicit ScopeUnlock(Mutex &_mutex) noexcept:mutex(_mutex) {
mutex.unlock();
};
}
~ScopeUnlock() noexcept {
mutex.lock();
......
......@@ -58,7 +58,7 @@ SetThreadName(const char *name) noexcept
template<typename... Args>
static inline void
FormatThreadName(const char *fmt, gcc_unused Args&&... args) noexcept
FormatThreadName(const char *fmt, [[maybe_unused]] Args&&... args) noexcept
{
#ifdef HAVE_THREAD_NAME
SetThreadName(StringFormat<16>(fmt, args...));
......
......@@ -45,10 +45,12 @@ daemonize_finish()
* pid file.
*/
#ifndef _WIN32
[[noreturn]]
void
daemonize_kill();
#else
#include <stdexcept>
[[noreturn]]
static inline void
daemonize_kill()
{
......
......@@ -25,7 +25,7 @@
#include <string.h>
#include <unistd.h>
gcc_noreturn
[[noreturn]]
static void
oom()
{
......
......@@ -68,16 +68,12 @@
/* GCC 4.x */
#define gcc_const __attribute__((const))
#define gcc_deprecated __attribute__((deprecated))
#define gcc_may_alias __attribute__((may_alias))
#define gcc_malloc __attribute__((malloc))
#define gcc_noreturn __attribute__((noreturn))
#define gcc_packed __attribute__((packed))
#define gcc_printf(a,b) __attribute__((format(printf, a, b)))
#define gcc_pure __attribute__((pure))
#define gcc_sentinel __attribute__((sentinel))
#define gcc_unused __attribute__((unused))
#define gcc_warn_unused_result __attribute__((warn_unused_result))
#define gcc_nonnull(...) __attribute__((nonnull(__VA_ARGS__)))
#define gcc_nonnull_all __attribute__((nonnull))
......@@ -98,16 +94,12 @@
/* generic C compiler */
#define gcc_const
#define gcc_deprecated
#define gcc_may_alias
#define gcc_malloc
#define gcc_noreturn
#define gcc_packed
#define gcc_printf(a,b)
#define gcc_pure
#define gcc_sentinel
#define gcc_unused
#define gcc_warn_unused_result
#define gcc_nonnull(...)
#define gcc_nonnull_all
......@@ -167,12 +159,6 @@
#define __has_feature(x) 0
#endif
#if __has_feature(attribute_unused_on_fields)
#define gcc_unused_field gcc_unused
#else
#define gcc_unused_field
#endif
#if defined(__GNUC__) || defined(__clang__)
#define gcc_unreachable() __builtin_unreachable()
#else
......
......@@ -42,14 +42,14 @@
* the std::exception_ptr itself.
*/
template<typename T>
gcc_noreturn
[[noreturn]]
inline void
ThrowException(T &&t)
{
throw std::forward<T>(t);
}
gcc_noreturn
[[noreturn]]
inline void
ThrowException(std::exception_ptr ep)
{
......
......@@ -204,7 +204,7 @@ struct CheckSequenceUTF8 {
template<>
struct CheckSequenceUTF8<0U> {
constexpr bool operator()(gcc_unused const char *p) const noexcept {
constexpr bool operator()([[maybe_unused]] const char *p) const noexcept {
return true;
}
};
......
......@@ -64,8 +64,8 @@ service_notify_status(DWORD status_code)
}
static DWORD WINAPI
service_dispatcher(gcc_unused DWORD control, gcc_unused DWORD event_type,
gcc_unused void *event_data, gcc_unused void *context)
service_dispatcher([[maybe_unused]] DWORD control, [[maybe_unused]] DWORD event_type,
[[maybe_unused]] void *event_data, [[maybe_unused]] void *context)
{
switch (control) {
case SERVICE_CONTROL_SHUTDOWN:
......@@ -78,7 +78,7 @@ service_dispatcher(gcc_unused DWORD control, gcc_unused DWORD event_type,
}
static void WINAPI
service_main(gcc_unused DWORD argc, gcc_unused LPTSTR argv[])
service_main([[maybe_unused]] DWORD argc, [[maybe_unused]] LPTSTR argv[])
{
service_handle =
RegisterServiceCtrlHandlerEx(service_name,
......
......@@ -49,7 +49,7 @@ AvahiRegisterService(AvahiClient *c);
static void
AvahiGroupCallback(AvahiEntryGroup *g,
AvahiEntryGroupState state,
gcc_unused void *userdata)
[[maybe_unused]] void *userdata)
{
assert(g != nullptr);
......@@ -149,7 +149,7 @@ AvahiRegisterService(AvahiClient *c)
/* Callback when avahi changes state */
static void
MyAvahiClientCallback(AvahiClient *c, AvahiClientState state,
gcc_unused void *userdata)
[[maybe_unused]] void *userdata)
{
assert(c != nullptr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment