xz, xzdec, lzmainfo: Use tuklib_attr_noreturn.

For compatibility with C23's [[noreturn]], tuklib_attr_noreturn
must be at the beginning of declaration (before "extern" or
"static", and even before any GNU C's __attribute__).

This commit also moves all other function attributes to
the beginning of function declarations. "extern" is kept
at the beginning of a line so the attributes are listed on
separate lines before "extern" or "static".

(cherry picked from commit b71b8922ef)
This commit is contained in:
Lasse Collin 2023-09-11 19:03:35 +03:00
parent 015e62b18d
commit 737318447a
7 changed files with 37 additions and 25 deletions

View File

@ -26,7 +26,8 @@
#endif #endif
static void lzma_attribute((__noreturn__)) tuklib_attr_noreturn
static void
help(void) help(void)
{ {
printf( printf(
@ -45,7 +46,8 @@ _("Usage: %s [--help] [--version] [FILE]...\n"
} }
static void lzma_attribute((__noreturn__)) tuklib_attr_noreturn
static void
version(void) version(void)
{ {
puts("lzmainfo (" PACKAGE_NAME ") " LZMA_VERSION_STRING); puts("lzmainfo (" PACKAGE_NAME ") " LZMA_VERSION_STRING);

View File

@ -123,7 +123,8 @@ coder_add_filter(lzma_vli id, void *options)
} }
static void lzma_attribute((__noreturn__)) tuklib_attr_noreturn
static void
memlimit_too_small(uint64_t memory_usage) memlimit_too_small(uint64_t memory_usage)
{ {
message(V_ERROR, _("Memory usage limit is too low for the given " message(V_ERROR, _("Memory usage limit is too low for the given "

View File

@ -34,4 +34,5 @@ extern void hardware_memlimit_set(uint64_t new_memlimit,
extern uint64_t hardware_memlimit_get(enum operation_mode mode); extern uint64_t hardware_memlimit_get(enum operation_mode mode);
/// Display the amount of RAM and memory usage limits and exit. /// Display the amount of RAM and memory usage limits and exit.
extern void hardware_memlimit_show(void) lzma_attribute((__noreturn__)); tuklib_attr_noreturn
extern void hardware_memlimit_show(void);

View File

@ -44,42 +44,44 @@ extern enum message_verbosity message_verbosity_get(void);
/// \brief Print a message if verbosity level is at least "verbosity" /// \brief Print a message if verbosity level is at least "verbosity"
/// ///
/// This doesn't touch the exit status. /// This doesn't touch the exit status.
extern void message(enum message_verbosity verbosity, const char *fmt, ...) lzma_attribute((__format__(__printf__, 2, 3)))
lzma_attribute((__format__(__printf__, 2, 3))); extern void message(enum message_verbosity verbosity, const char *fmt, ...);
/// \brief Prints a warning and possibly sets exit status /// \brief Prints a warning and possibly sets exit status
/// ///
/// The message is printed only if verbosity level is at least V_WARNING. /// The message is printed only if verbosity level is at least V_WARNING.
/// The exit status is set to WARNING unless it was already at ERROR. /// The exit status is set to WARNING unless it was already at ERROR.
extern void message_warning(const char *fmt, ...) lzma_attribute((__format__(__printf__, 1, 2)))
lzma_attribute((__format__(__printf__, 1, 2))); extern void message_warning(const char *fmt, ...);
/// \brief Prints an error message and sets exit status /// \brief Prints an error message and sets exit status
/// ///
/// The message is printed only if verbosity level is at least V_ERROR. /// The message is printed only if verbosity level is at least V_ERROR.
/// The exit status is set to ERROR. /// The exit status is set to ERROR.
extern void message_error(const char *fmt, ...) lzma_attribute((__format__(__printf__, 1, 2)))
lzma_attribute((__format__(__printf__, 1, 2))); extern void message_error(const char *fmt, ...);
/// \brief Prints an error message and exits with EXIT_ERROR /// \brief Prints an error message and exits with EXIT_ERROR
/// ///
/// The message is printed only if verbosity level is at least V_ERROR. /// The message is printed only if verbosity level is at least V_ERROR.
extern void message_fatal(const char *fmt, ...) tuklib_attr_noreturn
lzma_attribute((__format__(__printf__, 1, 2))) lzma_attribute((__format__(__printf__, 1, 2)))
lzma_attribute((__noreturn__)); extern void message_fatal(const char *fmt, ...);
/// Print an error message that an internal error occurred and exit with /// Print an error message that an internal error occurred and exit with
/// EXIT_ERROR. /// EXIT_ERROR.
extern void message_bug(void) lzma_attribute((__noreturn__)); tuklib_attr_noreturn
extern void message_bug(void);
/// Print a message that establishing signal handlers failed, and exit with /// Print a message that establishing signal handlers failed, and exit with
/// exit status ERROR. /// exit status ERROR.
extern void message_signal_handler(void) lzma_attribute((__noreturn__)); tuklib_attr_noreturn
extern void message_signal_handler(void);
/// Convert lzma_ret to a string. /// Convert lzma_ret to a string.
@ -116,11 +118,13 @@ extern void message_try_help(void);
/// Prints the version number to stdout and exits with exit status SUCCESS. /// Prints the version number to stdout and exits with exit status SUCCESS.
extern void message_version(void) lzma_attribute((__noreturn__)); tuklib_attr_noreturn
extern void message_version(void);
/// Print the help message. /// Print the help message.
extern void message_help(bool long_help) lzma_attribute((__noreturn__)); tuklib_attr_noreturn
extern void message_help(bool long_help);
/// \brief Set the total number of files to be processed /// \brief Set the total number of files to be processed

View File

@ -241,7 +241,8 @@ enum {
}; };
static void lzma_attribute((__noreturn__)) tuklib_attr_noreturn
static void
error_lzma_preset(const char *valuestr) error_lzma_preset(const char *valuestr)
{ {
message_fatal(_("Unsupported LZMA1/LZMA2 preset: %s"), valuestr); message_fatal(_("Unsupported LZMA1/LZMA2 preset: %s"), valuestr);

View File

@ -19,8 +19,8 @@
/// \brief Safe realloc() that never returns NULL /// \brief Safe realloc() that never returns NULL
extern void *xrealloc(void *ptr, size_t size) lzma_attr_alloc_size(2)
lzma_attr_alloc_size(2); extern void *xrealloc(void *ptr, size_t size);
/// \brief Safe strdup() that never returns NULL /// \brief Safe strdup() that never returns NULL
@ -101,8 +101,8 @@ extern const char *uint64_to_nicestr(uint64_t value,
/// ///
/// A maximum of *left bytes is written starting from *pos. *pos and *left /// A maximum of *left bytes is written starting from *pos. *pos and *left
/// are updated accordingly. /// are updated accordingly.
extern void my_snprintf(char **pos, size_t *left, const char *fmt, ...) lzma_attribute((__format__(__printf__, 3, 4)))
lzma_attribute((__format__(__printf__, 3, 4))); extern void my_snprintf(char **pos, size_t *left, const char *fmt, ...);
/// \brief Check if filename is empty and print an error message /// \brief Check if filename is empty and print an error message

View File

@ -40,7 +40,8 @@
static int display_errors = 2; static int display_errors = 2;
static void lzma_attribute((__format__(__printf__, 1, 2))) lzma_attribute((__format__(__printf__, 1, 2)))
static void
my_errorf(const char *fmt, ...) my_errorf(const char *fmt, ...)
{ {
va_list ap; va_list ap;
@ -57,7 +58,8 @@ my_errorf(const char *fmt, ...)
} }
static void lzma_attribute((__noreturn__)) tuklib_attr_noreturn
static void
help(void) help(void)
{ {
printf( printf(
@ -81,7 +83,8 @@ PACKAGE_NAME " home page: <" PACKAGE_URL ">\n", progname);
} }
static void lzma_attribute((__noreturn__)) tuklib_attr_noreturn
static void
version(void) version(void)
{ {
printf(TOOL_FORMAT "dec (" PACKAGE_NAME ") " LZMA_VERSION_STRING "\n" printf(TOOL_FORMAT "dec (" PACKAGE_NAME ") " LZMA_VERSION_STRING "\n"