kopia lustrzana https://github.com/Hamlib/Hamlib
Distinguish wanted from unwanted fall through instances
Compile with -Wimplicit-fallthrough; analyze the results. Define macro to mark valid fall through constructs. Mark all of the good ones, and fix the bad. Not available with all compilers - for those without the feature this commit does nothing.pull/1818/head
rodzic
a7c8c3fa9e
commit
6c372f981f
|
@ -73,6 +73,23 @@
|
|||
#include <hamlib/riglist.h>
|
||||
//#include <hamlib/config.h>
|
||||
|
||||
/* Define macros for handling attributes, if the compiler implements them
|
||||
* Should be available in c23-capable compilers, or c++11 ones
|
||||
*/
|
||||
// From ISO/IEC 9899:202y n3301 working draft
|
||||
#ifndef __has_c_attribute
|
||||
#define __has_c_attribute(x) 0
|
||||
#endif
|
||||
|
||||
// Macro to mark fallthrough as OK
|
||||
// Squelch warnings if -Wimplicit-fallthrough added to CFLAGS
|
||||
#if __has_c_attribute(fallthrough)
|
||||
#define HL_FALLTHROUGH [[fallthrough]];
|
||||
#else
|
||||
/* Fall back */
|
||||
#define HL_FALLTHROUGH
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \addtogroup rig
|
||||
* @{
|
||||
|
|
|
@ -3393,6 +3393,7 @@ int icom_set_vfo(RIG *rig, vfo_t vfo)
|
|||
rig_debug(RIG_DEBUG_ERR, "%s: unknown vfo '%s'\n", __func__,
|
||||
rig_strvfo(rs->current_vfo));
|
||||
}
|
||||
HL_FALLTHROUGH // Fall into outer default
|
||||
|
||||
default:
|
||||
if (priv->x25cmdfails == 0 || priv_caps->x25x26_always)
|
||||
|
@ -9111,12 +9112,14 @@ static int icom_parse_spectrum_frame(RIG *rig, size_t length,
|
|||
|
||||
case SCOPE_MODE_FIXED:
|
||||
cache->spectrum_mode = RIG_SPECTRUM_MODE_FIXED;
|
||||
HL_FALLTHROUGH
|
||||
|
||||
case SCOPE_MODE_SCROLL_C:
|
||||
if (cache->spectrum_mode == RIG_SPECTRUM_MODE_NONE)
|
||||
{
|
||||
cache->spectrum_mode = RIG_SPECTRUM_MODE_CENTER_SCROLL;
|
||||
}
|
||||
HL_FALLTHROUGH
|
||||
|
||||
case SCOPE_MODE_SCROLL_F:
|
||||
if (cache->spectrum_mode == RIG_SPECTRUM_MODE_NONE)
|
||||
|
|
|
@ -5600,7 +5600,7 @@ int kenwood_send_morse(RIG *rig, vfo_t vfo, const char *msg)
|
|||
SNPRINTF(morsebuf, sizeof morsebuf, "KY2%s", m2);
|
||||
break;
|
||||
}
|
||||
/* FALL THROUGH */
|
||||
HL_FALLTHROUGH
|
||||
|
||||
default:
|
||||
/* the command must consist of 28 bytes 0x20 padded */
|
||||
|
|
|
@ -1298,6 +1298,7 @@ static int get_freq_and_mode(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode,
|
|||
|
||||
case MD_CWN:
|
||||
*width = rig_passband_narrow(rig, RIG_MODE_CW);
|
||||
HL_FALLTHROUGH
|
||||
|
||||
case MD_CW:
|
||||
*mode = RIG_MODE_CW;
|
||||
|
@ -1305,6 +1306,7 @@ static int get_freq_and_mode(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode,
|
|||
|
||||
case MD_CWNR:
|
||||
*width = rig_passband_narrow(rig, RIG_MODE_CW);
|
||||
HL_FALLTHROUGH
|
||||
|
||||
case MD_CWR:
|
||||
*mode = RIG_MODE_CWR;
|
||||
|
@ -1312,6 +1314,7 @@ static int get_freq_and_mode(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode,
|
|||
|
||||
case MD_AMN:
|
||||
*width = rig_passband_narrow(rig, RIG_MODE_AM);
|
||||
HL_FALLTHROUGH
|
||||
|
||||
case MD_AM:
|
||||
*mode = RIG_MODE_AM;
|
||||
|
@ -1319,6 +1322,7 @@ static int get_freq_and_mode(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode,
|
|||
|
||||
case MD_FMN:
|
||||
*width = rig_passband_narrow(rig, RIG_MODE_FM);
|
||||
HL_FALLTHROUGH
|
||||
|
||||
case MD_FM:
|
||||
*mode = RIG_MODE_FM;
|
||||
|
|
|
@ -794,6 +794,7 @@ static int ft920_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
|||
{
|
||||
return err;
|
||||
}
|
||||
HL_FALLTHROUGH
|
||||
|
||||
case RIG_VFO_MEM: /* MEM TUNE or user doesn't care */
|
||||
case RIG_VFO_MAIN:
|
||||
|
@ -965,6 +966,7 @@ static int ft920_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
{
|
||||
return err;
|
||||
}
|
||||
HL_FALLTHROUGH
|
||||
|
||||
case RIG_VFO_MEM: /* MEM TUNE or user doesn't care */
|
||||
case RIG_VFO_MAIN:
|
||||
|
|
|
@ -4414,9 +4414,9 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
case RIG_METER_VDD: SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), format, 5);
|
||||
break;
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unknown val.i=%d\n", __func__, val.i);
|
||||
|
||||
default: RETURNFUNC(-RIG_EINVAL);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -408,8 +408,8 @@ int HAMLIB_API port_close(hamlib_port_t *p, rig_port_t port_type)
|
|||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s(): Unknown port type %d\n",
|
||||
__func__, port_type);
|
||||
HL_FALLTHROUGH
|
||||
|
||||
/* fall through */
|
||||
case RIG_PORT_DEVICE:
|
||||
ret = close(p->fd);
|
||||
}
|
||||
|
|
|
@ -3611,8 +3611,8 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
|
|||
{
|
||||
ptt = RIG_PTT_ON;
|
||||
}
|
||||
HL_FALLTHROUGH
|
||||
|
||||
/* fall through */
|
||||
case RIG_PTT_RIG_MICDATA:
|
||||
if (caps->set_ptt == NULL)
|
||||
{
|
||||
|
|
|
@ -412,15 +412,25 @@ do {
|
|||
hashv += keylen; \
|
||||
switch ( _hj_k ) { \
|
||||
case 11: hashv += ( (unsigned)_hj_key[10] << 24 ); \
|
||||
HL_FALLTHROUGH \
|
||||
case 10: hashv += ( (unsigned)_hj_key[9] << 16 ); \
|
||||
HL_FALLTHROUGH \
|
||||
case 9: hashv += ( (unsigned)_hj_key[8] << 8 ); \
|
||||
HL_FALLTHROUGH \
|
||||
case 8: _hj_j += ( (unsigned)_hj_key[7] << 24 ); \
|
||||
HL_FALLTHROUGH \
|
||||
case 7: _hj_j += ( (unsigned)_hj_key[6] << 16 ); \
|
||||
HL_FALLTHROUGH \
|
||||
case 6: _hj_j += ( (unsigned)_hj_key[5] << 8 ); \
|
||||
HL_FALLTHROUGH \
|
||||
case 5: _hj_j += _hj_key[4]; \
|
||||
HL_FALLTHROUGH \
|
||||
case 4: _hj_i += ( (unsigned)_hj_key[3] << 24 ); \
|
||||
HL_FALLTHROUGH \
|
||||
case 3: _hj_i += ( (unsigned)_hj_key[2] << 16 ); \
|
||||
HL_FALLTHROUGH \
|
||||
case 2: _hj_i += ( (unsigned)_hj_key[1] << 8 ); \
|
||||
HL_FALLTHROUGH \
|
||||
case 1: _hj_i += _hj_key[0]; \
|
||||
} \
|
||||
HASH_JEN_MIX(_hj_i, _hj_j, hashv); \
|
||||
|
@ -547,7 +557,9 @@ do { \
|
|||
uint32_t _mur_k1=0; \
|
||||
switch((keylen) & 3) { \
|
||||
case 3: _mur_k1 ^= _mur_tail[2] << 16; \
|
||||
HL_FALLTHROUGH \
|
||||
case 2: _mur_k1 ^= _mur_tail[1] << 8; \
|
||||
HL_FALLTHROUGH \
|
||||
case 1: _mur_k1 ^= _mur_tail[0]; \
|
||||
_mur_k1 *= _mur_c1; \
|
||||
_mur_k1 = MUR_ROTL32(_mur_k1,15); \
|
||||
|
|
Ładowanie…
Reference in New Issue