From 5f171536a3844f1b4c42dc5f34e104e5d23d56ed Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Wed, 3 Jul 2019 18:15:11 -0700 Subject: [PATCH] Prevent empty top-level declarations These macros may be defined as a function definition or defined away. In both cases, the ';' after the macro invocation to be treated as an empty top-level declaration, which is not allowed in ISO C. --- include/alsa-symbols.h | 8 ++++---- src/conf.c | 4 ++-- src/confmisc.c | 32 ++++++++++++++++---------------- src/control/control.c | 6 +++--- src/control/control_hw.c | 2 +- src/control/control_shm.c | 2 +- src/dlmisc.c | 4 ++-- src/hwdep/hwdep_hw.c | 2 +- src/names.c | 4 ++-- src/pcm/pcm.c | 30 +++++++++++++++--------------- src/pcm/pcm_adpcm.c | 2 +- src/pcm/pcm_alaw.c | 2 +- src/pcm/pcm_asym.c | 2 +- src/pcm/pcm_copy.c | 2 +- src/pcm/pcm_dmix.c | 2 +- src/pcm/pcm_dshare.c | 2 +- src/pcm/pcm_dsnoop.c | 2 +- src/pcm/pcm_empty.c | 2 +- src/pcm/pcm_file.c | 2 +- src/pcm/pcm_hooks.c | 4 ++-- src/pcm/pcm_hw.c | 2 +- src/pcm/pcm_iec958.c | 2 +- src/pcm/pcm_ladspa.c | 2 +- src/pcm/pcm_lfloat.c | 2 +- src/pcm/pcm_linear.c | 2 +- src/pcm/pcm_meter.c | 2 +- src/pcm/pcm_mmap_emul.c | 2 +- src/pcm/pcm_mulaw.c | 2 +- src/pcm/pcm_multi.c | 2 +- src/pcm/pcm_null.c | 2 +- src/pcm/pcm_plug.c | 2 +- src/pcm/pcm_rate.c | 2 +- src/pcm/pcm_route.c | 2 +- src/pcm/pcm_share.c | 2 +- src/pcm/pcm_shm.c | 2 +- src/pcm/pcm_softvol.c | 2 +- src/rawmidi/rawmidi_hw.c | 2 +- src/rawmidi/rawmidi_virt.c | 2 +- src/seq/seq_hw.c | 2 +- src/timer/timer.c | 10 +++++----- src/timer/timer_hw.c | 2 +- src/timer/timer_query.c | 6 +++--- src/timer/timer_query_hw.c | 2 +- 43 files changed, 87 insertions(+), 87 deletions(-) diff --git a/include/alsa-symbols.h b/include/alsa-symbols.h index bba9a9d4..26fde696 100644 --- a/include/alsa-symbols.h +++ b/include/alsa-symbols.h @@ -30,9 +30,9 @@ #define INTERNAL(Name) INTERNAL_CONCAT2_2(__, Name) #define symbol_version(real, name, version) \ - __asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@" #version) + __asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@" #version); #define default_symbol_version(real, name, version) \ - __asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@@" #version) + __asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@@" #version); #define EXPORT_SYMBOL __attribute__((visibility("default"),externally_visible)) @@ -46,11 +46,11 @@ #if defined(__alpha__) || defined(__mips__) #define use_default_symbol_version(real, name, version) \ __asm__ (".weak " ASM_NAME(#name)); \ - __asm__ (ASM_NAME(#name) " = " ASM_NAME(#real)) + __asm__ (ASM_NAME(#name) " = " ASM_NAME(#real)); #else #define use_default_symbol_version(real, name, version) \ __asm__ (".weak " ASM_NAME(#name)); \ - __asm__ (".set " ASM_NAME(#name) "," ASM_NAME(#real)) + __asm__ (".set " ASM_NAME(#name) "," ASM_NAME(#real)); #endif #endif diff --git a/src/conf.c b/src/conf.c index 3892b576..3032b071 100644 --- a/src/conf.c +++ b/src/conf.c @@ -3791,7 +3791,7 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_config_hook_load, SND_CONFIG_DLSYM_VERSION_HOOK); +SND_DLSYM_BUILD_VERSION(snd_config_hook_load, SND_CONFIG_DLSYM_VERSION_HOOK) #endif #ifndef DOC_HIDDEN @@ -3859,7 +3859,7 @@ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config, return 0; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_config_hook_load_for_all_cards, SND_CONFIG_DLSYM_VERSION_HOOK); +SND_DLSYM_BUILD_VERSION(snd_config_hook_load_for_all_cards, SND_CONFIG_DLSYM_VERSION_HOOK) #endif /** diff --git a/src/confmisc.c b/src/confmisc.c index eb8218c1..b6e0753b 100644 --- a/src/confmisc.c +++ b/src/confmisc.c @@ -300,7 +300,7 @@ int snd_func_getenv(snd_config_t **dst, snd_config_t *root, snd_config_t *src, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_getenv, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_getenv, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif /** @@ -353,7 +353,7 @@ int snd_func_igetenv(snd_config_t **dst, snd_config_t *root, snd_config_t *src, return 0; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_igetenv, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_igetenv, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif /** @@ -445,7 +445,7 @@ int snd_func_concat(snd_config_t **dst, snd_config_t *root, snd_config_t *src, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_concat, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_concat, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif @@ -534,7 +534,7 @@ int snd_func_iadd(snd_config_t **dst, snd_config_t *root, return snd_func_iops(dst, root, src, private_data, 0); } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_iadd, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_iadd, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif /** @@ -560,7 +560,7 @@ int snd_func_imul(snd_config_t **dst, snd_config_t *root, return snd_func_iops(dst, root, src, private_data, 1); } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_imul, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_imul, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif /** @@ -591,7 +591,7 @@ int snd_func_datadir(snd_config_t **dst, snd_config_t *root ATTRIBUTE_UNUSED, return snd_config_imake_string(dst, id, snd_config_topdir()); } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_datadir, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_datadir, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif static int open_ctl(long card, snd_ctl_t **ctl) @@ -657,7 +657,7 @@ int snd_func_private_string(snd_config_t **dst, snd_config_t *root ATTRIBUTE_UNU return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_private_string, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_private_string, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif #ifndef DOC_HIDDEN @@ -737,7 +737,7 @@ int snd_func_private_card_driver(snd_config_t **dst, snd_config_t *root ATTRIBUT return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_private_card_driver, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_private_card_driver, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif static int parse_card(snd_config_t *root, snd_config_t *src, @@ -801,7 +801,7 @@ int snd_func_card_inum(snd_config_t **dst, snd_config_t *root, snd_config_t *src return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_card_inum, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_card_inum, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif /** @@ -838,7 +838,7 @@ int snd_func_card_driver(snd_config_t **dst, snd_config_t *root, snd_config_t *s return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_card_driver, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_card_driver, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif /** @@ -889,7 +889,7 @@ int snd_func_card_id(snd_config_t **dst, snd_config_t *root, snd_config_t *src, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_card_id, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_card_id, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif /** @@ -940,7 +940,7 @@ int snd_func_card_name(snd_config_t **dst, snd_config_t *root, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_card_name, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_card_name, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif #ifdef BUILD_PCM @@ -1026,7 +1026,7 @@ int snd_func_pcm_id(snd_config_t **dst, snd_config_t *root, snd_config_t *src, v return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_pcm_id, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_pcm_id, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif /** @@ -1139,7 +1139,7 @@ int snd_func_pcm_args_by_class(snd_config_t **dst, snd_config_t *root, snd_confi return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_pcm_args_by_class, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_pcm_args_by_class, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif /** @@ -1193,7 +1193,7 @@ int snd_func_private_pcm_subdevice(snd_config_t **dst, snd_config_t *root ATTRIB return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_private_pcm_subdevice, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_private_pcm_subdevice, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif #endif /* BUILD_PCM */ @@ -1295,7 +1295,7 @@ int snd_func_refer(snd_config_t **dst, snd_config_t *root, snd_config_t *src, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(snd_func_refer, SND_CONFIG_DLSYM_VERSION_EVALUATE); +SND_DLSYM_BUILD_VERSION(snd_func_refer, SND_CONFIG_DLSYM_VERSION_EVALUATE) #endif #ifndef DOC_HIDDEN diff --git a/src/control/control.c b/src/control/control.c index 33650155..d136c2f1 100644 --- a/src/control/control.c +++ b/src/control/control.c @@ -2370,7 +2370,7 @@ int snd_ctl_elem_info_is_indirect(const snd_ctl_elem_info_t *obj) assert(obj); return 0; } -link_warning(snd_ctl_elem_info_is_indirect, "Warning: snd_ctl_elem_info_is_indirect is deprecated, do not use it"); +link_warning(snd_ctl_elem_info_is_indirect, "Warning: snd_ctl_elem_info_is_indirect is deprecated, do not use it") /** * \brief Get owner of a locked element @@ -2523,7 +2523,7 @@ int snd_ctl_elem_info_get_dimensions(const snd_ctl_elem_info_t *obj) break; return i + 1; } -use_default_symbol_version(__snd_ctl_elem_info_get_dimensions, snd_ctl_elem_info_get_dimensions, ALSA_0.9.3); +use_default_symbol_version(__snd_ctl_elem_info_get_dimensions, snd_ctl_elem_info_get_dimensions, ALSA_0.9.3) /** * \brief Get specified of dimension width for given element @@ -2545,7 +2545,7 @@ int snd_ctl_elem_info_get_dimension(const snd_ctl_elem_info_t *obj, unsigned int return 0; return obj->dimen.d[idx]; } -use_default_symbol_version(__snd_ctl_elem_info_get_dimension, snd_ctl_elem_info_get_dimension, ALSA_0.9.3); +use_default_symbol_version(__snd_ctl_elem_info_get_dimension, snd_ctl_elem_info_get_dimension, ALSA_0.9.3) /** * \brief Set width to a specified dimension level of given element information. diff --git a/src/control/control_hw.c b/src/control/control_hw.c index b54d65f2..cd04fdd5 100644 --- a/src/control/control_hw.c +++ b/src/control/control_hw.c @@ -468,4 +468,4 @@ int _snd_ctl_hw_open(snd_ctl_t **handlep, char *name, snd_config_t *root ATTRIBU return -EINVAL; return snd_ctl_hw_open(handlep, name, card, mode); } -SND_DLSYM_BUILD_VERSION(_snd_ctl_hw_open, SND_CONTROL_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_ctl_hw_open, SND_CONTROL_DLSYM_VERSION) diff --git a/src/control/control_shm.c b/src/control/control_shm.c index d7b41398..cdc5d3a6 100644 --- a/src/control/control_shm.c +++ b/src/control/control_shm.c @@ -628,4 +628,4 @@ int _snd_ctl_shm_open(snd_ctl_t **handlep, char *name, snd_config_t *root, snd_c snd_config_delete(sconfig); return err; } -SND_DLSYM_BUILD_VERSION(_snd_ctl_shm_open, SND_CONTROL_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_ctl_shm_open, SND_CONTROL_DLSYM_VERSION) diff --git a/src/dlmisc.c b/src/dlmisc.c index 012e61bc..ce2f8352 100644 --- a/src/dlmisc.c +++ b/src/dlmisc.c @@ -116,8 +116,8 @@ void *INTERNAL(snd_dlopen_old)(const char *name, int mode) } #endif -use_symbol_version(__snd_dlopen_old, snd_dlopen, ALSA_0.9); -use_default_symbol_version(__snd_dlopen, snd_dlopen, ALSA_1.1.6); +use_symbol_version(__snd_dlopen_old, snd_dlopen, ALSA_0.9) +use_default_symbol_version(__snd_dlopen, snd_dlopen, ALSA_1.1.6) /** * \brief Closes a dynamic library - ALSA wrapper for \c dlclose. diff --git a/src/hwdep/hwdep_hw.c b/src/hwdep/hwdep_hw.c index d3037194..1c8e39bf 100644 --- a/src/hwdep/hwdep_hw.c +++ b/src/hwdep/hwdep_hw.c @@ -185,4 +185,4 @@ int _snd_hwdep_hw_open(snd_hwdep_t **hwdep, char *name, return -EINVAL; return snd_hwdep_hw_open(hwdep, name, card, device, mode); } -SND_DLSYM_BUILD_VERSION(_snd_hwdep_hw_open, SND_HWDEP_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_hwdep_hw_open, SND_HWDEP_DLSYM_VERSION) diff --git a/src/names.c b/src/names.c index d909a11d..890d2a34 100644 --- a/src/names.c +++ b/src/names.c @@ -44,7 +44,7 @@ int snd_names_list(const char *iface ATTRIBUTE_UNUSED, { return -ENXIO; } -link_warning(snd_names_list, "Warning: snd_names_list is deprecated, use snd_device_name_hint"); +link_warning(snd_names_list, "Warning: snd_names_list is deprecated, use snd_device_name_hint") /** * \brief This function is unimplemented. @@ -53,4 +53,4 @@ link_warning(snd_names_list, "Warning: snd_names_list is deprecated, use snd_dev void snd_names_list_free(snd_devname_t *list ATTRIBUTE_UNUSED) { } -link_warning(snd_names_list_free, "Warning: snd_names_list_free is deprecated, use snd_device_name_free_hint"); +link_warning(snd_names_list_free, "Warning: snd_names_list_free is deprecated, use snd_device_name_free_hint") diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index c58f5933..e3cf4a10 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -1443,7 +1443,7 @@ snd_pcm_sframes_t snd_pcm_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames) snd_pcm_unlock(pcm); return result; } -use_default_symbol_version(__snd_pcm_forward, snd_pcm_forward, ALSA_0.9.0rc8); +use_default_symbol_version(__snd_pcm_forward, snd_pcm_forward, ALSA_0.9.0rc8) /** * \brief Write interleaved frames to a PCM @@ -2104,7 +2104,7 @@ const char *snd_pcm_start_mode_name(snd_pcm_start_t mode) } #ifndef DOC_HIDDEN -link_warning(snd_pcm_start_mode_name, "Warning: start_mode is deprecated, consider to use start_threshold"); +link_warning(snd_pcm_start_mode_name, "Warning: start_mode is deprecated, consider to use start_threshold") #endif /** @@ -2120,7 +2120,7 @@ const char *snd_pcm_xrun_mode_name(snd_pcm_xrun_t mode) } #ifndef DOC_HIDDEN -link_warning(snd_pcm_xrun_mode_name, "Warning: xrun_mode is deprecated, consider to use stop_threshold"); +link_warning(snd_pcm_xrun_mode_name, "Warning: xrun_mode is deprecated, consider to use stop_threshold") #endif /** @@ -2174,7 +2174,7 @@ const char *snd_pcm_type_name(snd_pcm_type_t type) return NULL; return snd_pcm_type_names[type]; } -use_default_symbol_version(__snd_pcm_type_name, snd_pcm_type_name, ALSA_0.9.0); +use_default_symbol_version(__snd_pcm_type_name, snd_pcm_type_name, ALSA_0.9.0) /** * \brief Dump current hardware setup for PCM @@ -6192,7 +6192,7 @@ int snd_pcm_sw_params_set_start_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params } #ifndef DOC_HIDDEN -link_warning(snd_pcm_sw_params_set_start_mode, "Warning: start_mode is deprecated, consider to use start_threshold"); +link_warning(snd_pcm_sw_params_set_start_mode, "Warning: start_mode is deprecated, consider to use start_threshold") #endif /** @@ -6208,7 +6208,7 @@ snd_pcm_start_t snd_pcm_sw_params_get_start_mode(const snd_pcm_sw_params_t *para } #ifndef DOC_HIDDEN -link_warning(snd_pcm_sw_params_get_start_mode, "Warning: start_mode is deprecated, consider to use start_threshold"); +link_warning(snd_pcm_sw_params_get_start_mode, "Warning: start_mode is deprecated, consider to use start_threshold") #endif /** @@ -6240,7 +6240,7 @@ int snd_pcm_sw_params_set_xrun_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, } #ifndef DOC_HIDDEN -link_warning(snd_pcm_sw_params_set_xrun_mode, "Warning: xrun_mode is deprecated, consider to use stop_threshold"); +link_warning(snd_pcm_sw_params_set_xrun_mode, "Warning: xrun_mode is deprecated, consider to use stop_threshold") #endif /** @@ -6256,7 +6256,7 @@ snd_pcm_xrun_t snd_pcm_sw_params_get_xrun_mode(const snd_pcm_sw_params_t *params } #ifndef DOC_HIDDEN -link_warning(snd_pcm_sw_params_get_xrun_mode, "Warning: xrun_mode is deprecated, consider to use stop_threshold"); +link_warning(snd_pcm_sw_params_get_xrun_mode, "Warning: xrun_mode is deprecated, consider to use stop_threshold") #endif /** @@ -6749,7 +6749,7 @@ void snd_pcm_status_get_trigger_htstamp(const snd_pcm_status_t *obj, snd_htimest assert(obj && ptr); *ptr = obj->trigger_tstamp; } -use_default_symbol_version(__snd_pcm_status_get_trigger_htstamp, snd_pcm_status_get_trigger_htstamp, ALSA_0.9.0rc8); +use_default_symbol_version(__snd_pcm_status_get_trigger_htstamp, snd_pcm_status_get_trigger_htstamp, ALSA_0.9.0rc8) /** * \brief Get "now" timestamp from a PCM status container @@ -6777,7 +6777,7 @@ void snd_pcm_status_get_htstamp(const snd_pcm_status_t *obj, snd_htimestamp_t *p assert(obj && ptr); *ptr = obj->tstamp; } -use_default_symbol_version(__snd_pcm_status_get_htstamp, snd_pcm_status_get_htstamp, ALSA_0.9.0rc8); +use_default_symbol_version(__snd_pcm_status_get_htstamp, snd_pcm_status_get_htstamp, ALSA_0.9.0rc8) /** * \brief Get "now" hi-res audio timestamp from a PCM status container @@ -7451,8 +7451,8 @@ snd_pcm_uframes_t _snd_pcm_boundary(snd_pcm_t *pcm) } #ifndef DOC_HIDDEN -link_warning(_snd_pcm_mmap_hw_ptr, "Warning: _snd_pcm_mmap_hw_ptr() is deprecated, consider to not use this function"); -link_warning(_snd_pcm_boundary, "Warning: _snd_pcm_boundary() is deprecated, consider to use snd_pcm_sw_params_current()"); +link_warning(_snd_pcm_mmap_hw_ptr, "Warning: _snd_pcm_mmap_hw_ptr() is deprecated, consider to not use this function") +link_warning(_snd_pcm_boundary, "Warning: _snd_pcm_boundary() is deprecated, consider to use snd_pcm_sw_params_current()") #endif static const char *const names[SND_PCM_HW_PARAM_LAST_INTERVAL + 1] = { @@ -7717,13 +7717,13 @@ void snd_pcm_unlink_appl_ptr(snd_pcm_t *pcm, snd_pcm_t *slave) #ifdef USE_VERSIONED_SYMBOLS #define OBSOLETE1(name, what, new) \ - default_symbol_version(__##name, name, new); \ - symbol_version(__old_##name, name, what); + default_symbol_version(__##name, name, new) \ + symbol_version(__old_##name, name, what) #else #define OBSOLETE1(name, what, new) \ - use_default_symbol_version(__##name, name, new); + use_default_symbol_version(__##name, name, new) #endif /* USE_VERSIONED_SYMBOLS */ diff --git a/src/pcm/pcm_adpcm.c b/src/pcm/pcm_adpcm.c index ed065318..ae0bfae2 100644 --- a/src/pcm/pcm_adpcm.c +++ b/src/pcm/pcm_adpcm.c @@ -678,5 +678,5 @@ int _snd_pcm_adpcm_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_adpcm_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_adpcm_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_alaw.c b/src/pcm/pcm_alaw.c index 540ba25f..839783cf 100644 --- a/src/pcm/pcm_alaw.c +++ b/src/pcm/pcm_alaw.c @@ -552,5 +552,5 @@ int _snd_pcm_alaw_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_alaw_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_alaw_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_asym.c b/src/pcm/pcm_asym.c index 9c32b1b9..740a85fe 100644 --- a/src/pcm/pcm_asym.c +++ b/src/pcm/pcm_asym.c @@ -115,5 +115,5 @@ int _snd_pcm_asym_open(snd_pcm_t **pcmp, const char *name ATTRIBUTE_UNUSED, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_asym_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_asym_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_copy.c b/src/pcm/pcm_copy.c index 4c099acd..f7769f22 100644 --- a/src/pcm/pcm_copy.c +++ b/src/pcm/pcm_copy.c @@ -298,5 +298,5 @@ int _snd_pcm_copy_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_copy_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_copy_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c index c5592cdb..a8a9617a 100644 --- a/src/pcm/pcm_dmix.c +++ b/src/pcm/pcm_dmix.c @@ -1447,5 +1447,5 @@ int _snd_pcm_dmix_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_dmix_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_dmix_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c index f135b5df..fa9cd1ba 100644 --- a/src/pcm/pcm_dshare.c +++ b/src/pcm/pcm_dshare.c @@ -1007,5 +1007,5 @@ int _snd_pcm_dshare_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_dshare_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_dshare_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c index d08b6241..19ae06e0 100644 --- a/src/pcm/pcm_dsnoop.c +++ b/src/pcm/pcm_dsnoop.c @@ -866,5 +866,5 @@ int _snd_pcm_dsnoop_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_dsnoop_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_dsnoop_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_empty.c b/src/pcm/pcm_empty.c index 869577b6..11dcb37e 100644 --- a/src/pcm/pcm_empty.c +++ b/src/pcm/pcm_empty.c @@ -106,5 +106,5 @@ int _snd_pcm_empty_open(snd_pcm_t **pcmp, const char *name ATTRIBUTE_UNUSED, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_empty_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_empty_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c index 3a19cef9..0f470cdc 100644 --- a/src/pcm/pcm_file.c +++ b/src/pcm/pcm_file.c @@ -996,5 +996,5 @@ int _snd_pcm_file_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_file_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_file_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_hooks.c b/src/pcm/pcm_hooks.c index 4416d363..ed88dd29 100644 --- a/src/pcm/pcm_hooks.c +++ b/src/pcm/pcm_hooks.c @@ -549,7 +549,7 @@ int _snd_pcm_hooks_open(snd_pcm_t **pcmp, const char *name, return 0; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_hooks_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_hooks_open, SND_PCM_DLSYM_VERSION) #endif /** @@ -724,5 +724,5 @@ int _snd_pcm_hook_ctl_elems_install(snd_pcm_t *pcm, snd_config_t *conf) return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_hook_ctl_elems_install, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_hook_ctl_elems_install, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c index 4f104e5e..0f433617 100644 --- a/src/pcm/pcm_hw.c +++ b/src/pcm/pcm_hw.c @@ -1943,7 +1943,7 @@ fail: } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_hw_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_hw_open, SND_PCM_DLSYM_VERSION) #endif /* diff --git a/src/pcm/pcm_iec958.c b/src/pcm/pcm_iec958.c index 76d3ca7b..f994876b 100644 --- a/src/pcm/pcm_iec958.c +++ b/src/pcm/pcm_iec958.c @@ -713,5 +713,5 @@ int _snd_pcm_iec958_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_iec958_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_iec958_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_ladspa.c b/src/pcm/pcm_ladspa.c index ad73347d..4a846af9 100644 --- a/src/pcm/pcm_ladspa.c +++ b/src/pcm/pcm_ladspa.c @@ -1804,5 +1804,5 @@ int _snd_pcm_ladspa_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_ladspa_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_ladspa_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_lfloat.c b/src/pcm/pcm_lfloat.c index f32a82a7..0447d0a2 100644 --- a/src/pcm/pcm_lfloat.c +++ b/src/pcm/pcm_lfloat.c @@ -511,7 +511,7 @@ int _snd_pcm_lfloat_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_lfloat_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_lfloat_open, SND_PCM_DLSYM_VERSION) #endif #else /* BUGGY_GCC */ diff --git a/src/pcm/pcm_linear.c b/src/pcm/pcm_linear.c index 33e7fc45..26b4f4e5 100644 --- a/src/pcm/pcm_linear.c +++ b/src/pcm/pcm_linear.c @@ -553,5 +553,5 @@ int _snd_pcm_linear_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_linear_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_linear_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_meter.c b/src/pcm/pcm_meter.c index 20b41876..b08a36ff 100644 --- a/src/pcm/pcm_meter.c +++ b/src/pcm/pcm_meter.c @@ -831,7 +831,7 @@ int _snd_pcm_meter_open(snd_pcm_t **pcmp, const char *name, } return 0; } -SND_DLSYM_BUILD_VERSION(_snd_pcm_meter_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_meter_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_mmap_emul.c b/src/pcm/pcm_mmap_emul.c index 009cebb3..0011ccf4 100644 --- a/src/pcm/pcm_mmap_emul.c +++ b/src/pcm/pcm_mmap_emul.c @@ -510,5 +510,5 @@ int _snd_pcm_mmap_emul_open(snd_pcm_t **pcmp, const char *name, } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_mmap_emul_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_mmap_emul_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_mulaw.c b/src/pcm/pcm_mulaw.c index 73b0c3bc..58f741b6 100644 --- a/src/pcm/pcm_mulaw.c +++ b/src/pcm/pcm_mulaw.c @@ -566,5 +566,5 @@ int _snd_pcm_mulaw_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_mulaw_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_mulaw_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_multi.c b/src/pcm/pcm_multi.c index 53c414d5..63ca148e 100644 --- a/src/pcm/pcm_multi.c +++ b/src/pcm/pcm_multi.c @@ -1447,5 +1447,5 @@ _free: return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_multi_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_multi_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_null.c b/src/pcm/pcm_null.c index 1d815485..d9d64767 100644 --- a/src/pcm/pcm_null.c +++ b/src/pcm/pcm_null.c @@ -499,5 +499,5 @@ int _snd_pcm_null_open(snd_pcm_t **pcmp, const char *name, return 0; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_null_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_null_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_plug.c b/src/pcm/pcm_plug.c index abf6f1ab..ce48cc45 100644 --- a/src/pcm/pcm_plug.c +++ b/src/pcm/pcm_plug.c @@ -1332,5 +1332,5 @@ int _snd_pcm_plug_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_plug_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_plug_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c index fdcaa8de..0e82a9ed 100644 --- a/src/pcm/pcm_rate.c +++ b/src/pcm/pcm_rate.c @@ -1595,5 +1595,5 @@ int _snd_pcm_rate_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_rate_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_rate_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c index bbcc6118..325eee62 100644 --- a/src/pcm/pcm_route.c +++ b/src/pcm/pcm_route.c @@ -1393,5 +1393,5 @@ int _snd_pcm_route_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_route_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_route_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c index bff9507d..7695ba17 100644 --- a/src/pcm/pcm_share.c +++ b/src/pcm/pcm_share.c @@ -1719,5 +1719,5 @@ _free: return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_share_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_share_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_shm.c b/src/pcm/pcm_shm.c index 26a27a57..31971686 100644 --- a/src/pcm/pcm_shm.c +++ b/src/pcm/pcm_shm.c @@ -903,5 +903,5 @@ int _snd_pcm_shm_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_shm_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_shm_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/pcm/pcm_softvol.c b/src/pcm/pcm_softvol.c index f08208f8..3ea835b8 100644 --- a/src/pcm/pcm_softvol.c +++ b/src/pcm/pcm_softvol.c @@ -1164,5 +1164,5 @@ int _snd_pcm_softvol_open(snd_pcm_t **pcmp, const char *name, return err; } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_pcm_softvol_open, SND_PCM_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_pcm_softvol_open, SND_PCM_DLSYM_VERSION) #endif diff --git a/src/rawmidi/rawmidi_hw.c b/src/rawmidi/rawmidi_hw.c index 7cc8c0d1..00236657 100644 --- a/src/rawmidi/rawmidi_hw.c +++ b/src/rawmidi/rawmidi_hw.c @@ -358,4 +358,4 @@ int _snd_rawmidi_hw_open(snd_rawmidi_t **inputp, snd_rawmidi_t **outputp, return -EINVAL; return snd_rawmidi_hw_open(inputp, outputp, name, card, device, subdevice, mode); } -SND_DLSYM_BUILD_VERSION(_snd_rawmidi_hw_open, SND_RAWMIDI_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_rawmidi_hw_open, SND_RAWMIDI_DLSYM_VERSION) diff --git a/src/rawmidi/rawmidi_virt.c b/src/rawmidi/rawmidi_virt.c index 2c4c27f5..5d2f7112 100644 --- a/src/rawmidi/rawmidi_virt.c +++ b/src/rawmidi/rawmidi_virt.c @@ -467,5 +467,5 @@ int _snd_rawmidi_virtual_open(snd_rawmidi_t **inputp, snd_rawmidi_t **outputp, } #ifndef DOC_HIDDEN -SND_DLSYM_BUILD_VERSION(_snd_rawmidi_virtual_open, SND_RAWMIDI_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_rawmidi_virtual_open, SND_RAWMIDI_DLSYM_VERSION) #endif diff --git a/src/seq/seq_hw.c b/src/seq/seq_hw.c index e4b4d2a0..dddf4bf7 100644 --- a/src/seq/seq_hw.c +++ b/src/seq/seq_hw.c @@ -562,4 +562,4 @@ int _snd_seq_hw_open(snd_seq_t **handlep, char *name, } return snd_seq_hw_open(handlep, name, streams, mode); } -SND_DLSYM_BUILD_VERSION(_snd_seq_hw_open, SND_SEQ_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_seq_hw_open, SND_SEQ_DLSYM_VERSION) diff --git a/src/timer/timer.c b/src/timer/timer.c index 670becd9..8beb90d1 100644 --- a/src/timer/timer.c +++ b/src/timer/timer.c @@ -643,7 +643,7 @@ int snd_timer_params_set_exclusive(snd_timer_params_t * params, int exclusive) params->flags &= ~SNDRV_TIMER_PSFLG_EXCLUSIVE; return 0; } -use_default_symbol_version(__snd_timer_params_set_exclusive, snd_timer_params_set_exclusive, ALSA_0.9.0); +use_default_symbol_version(__snd_timer_params_set_exclusive, snd_timer_params_set_exclusive, ALSA_0.9.0) /** * \brief determine if timer has exclusive flag @@ -659,7 +659,7 @@ int snd_timer_params_get_exclusive(snd_timer_params_t * params) assert(params); return params->flags & SNDRV_TIMER_PSFLG_EXCLUSIVE ? 1 : 0; } -use_default_symbol_version(__snd_timer_params_get_exclusive, snd_timer_params_get_exclusive, ALSA_0.9.0); +use_default_symbol_version(__snd_timer_params_get_exclusive, snd_timer_params_get_exclusive, ALSA_0.9.0) /** * \brief set timer early event @@ -745,7 +745,7 @@ void snd_timer_params_set_filter(snd_timer_params_t * params, unsigned int filte assert(params); params->filter = filter; } -use_default_symbol_version(__snd_timer_params_set_filter, snd_timer_params_set_filter, ALSA_0.9.0); +use_default_symbol_version(__snd_timer_params_set_filter, snd_timer_params_set_filter, ALSA_0.9.0) /** * \brief get timer event filter @@ -761,7 +761,7 @@ unsigned int snd_timer_params_get_filter(snd_timer_params_t * params) assert(params); return params->filter; } -use_default_symbol_version(__snd_timer_params_get_filter, snd_timer_params_get_filter, ALSA_0.9.0); +use_default_symbol_version(__snd_timer_params_get_filter, snd_timer_params_get_filter, ALSA_0.9.0) /** * \brief set parameters for timer handle @@ -954,5 +954,5 @@ long snd_timer_info_get_ticks(snd_timer_info_t * info) return 1; } #ifndef DOC_HIDDEN -link_warning(snd_timer_info_get_ticks, "Warning: snd_timer_info_get_ticks is deprecated"); +link_warning(snd_timer_info_get_ticks, "Warning: snd_timer_info_get_ticks is deprecated") #endif diff --git a/src/timer/timer_hw.c b/src/timer/timer_hw.c index f08c0ac0..3ed78224 100644 --- a/src/timer/timer_hw.c +++ b/src/timer/timer_hw.c @@ -340,4 +340,4 @@ int _snd_timer_hw_open(snd_timer_t **timer, char *name, return -EINVAL; return snd_timer_hw_open(timer, name, dev_class, dev_sclass, card, device, subdevice, mode); } -SND_DLSYM_BUILD_VERSION(_snd_timer_hw_open, SND_TIMER_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_timer_hw_open, SND_TIMER_DLSYM_VERSION) diff --git a/src/timer/timer_query.c b/src/timer/timer_query.c index 084ff61a..83543522 100644 --- a/src/timer/timer_query.c +++ b/src/timer/timer_query.c @@ -393,7 +393,7 @@ int snd_timer_query_info(snd_timer_query_t *timer, snd_timer_ginfo_t *info) assert(info); return timer->ops->info(timer, info); } -use_default_symbol_version(__snd_timer_query_info, snd_timer_query_info, ALSA_0.9.0); +use_default_symbol_version(__snd_timer_query_info, snd_timer_query_info, ALSA_0.9.0) /** * \brief set the timer global parameters @@ -411,7 +411,7 @@ int snd_timer_query_params(snd_timer_query_t *timer, snd_timer_gparams_t *params assert(params); return timer->ops->params(timer, params); } -use_default_symbol_version(__snd_timer_query_params, snd_timer_query_params, ALSA_0.9.0); +use_default_symbol_version(__snd_timer_query_params, snd_timer_query_params, ALSA_0.9.0) /** * \brief get the timer global status @@ -429,7 +429,7 @@ int snd_timer_query_status(snd_timer_query_t *timer, snd_timer_gstatus_t *status assert(status); return timer->ops->status(timer, status); } -use_default_symbol_version(__snd_timer_query_status, snd_timer_query_status, ALSA_0.9.0); +use_default_symbol_version(__snd_timer_query_status, snd_timer_query_status, ALSA_0.9.0) /** * \brief get size of the snd_timer_id_t structure in bytes diff --git a/src/timer/timer_query_hw.c b/src/timer/timer_query_hw.c index dad228c8..7fc7cf4d 100644 --- a/src/timer/timer_query_hw.c +++ b/src/timer/timer_query_hw.c @@ -135,4 +135,4 @@ int _snd_timer_query_hw_open(snd_timer_query_t **timer, char *name, } return snd_timer_query_hw_open(timer, name, mode); } -SND_DLSYM_BUILD_VERSION(_snd_timer_query_hw_open, SND_TIMER_QUERY_DLSYM_VERSION); +SND_DLSYM_BUILD_VERSION(_snd_timer_query_hw_open, SND_TIMER_QUERY_DLSYM_VERSION) -- 2.22.0