Hi, /usr/src/usr.sbin/sasyncd/carp.c:157:12: warning: comparison of unsigned enum expression < 0 is always false [-Wtautological-compare] if (state < 0 || state > FAIL) ~~~~~ ^ ~ /usr/src/usr.sbin/sasyncd/carp.c:166:20: warning: comparison of unsigned enum expression < 0 is always false [-Wtautological-compare] if (current_state < 0 || current_state > FAIL) { ~~~~~~~~~~~~~ ^ ~
this warning is a tiny bit interesting. A compiler is free to choose the type of the enum, as long as it can represent all given values. So another compiler might choose not to make it unsigned. So I came up with this fix that is not depending on the signedness of the type. But most of the time avoiding enum is better, I suppose. -Otto Index: carp.c =================================================================== RCS file: /cvs/src/usr.sbin/sasyncd/carp.c,v retrieving revision 1.15 diff -u -p -r1.15 carp.c --- carp.c 27 Aug 2016 04:21:08 -0000 1.15 +++ carp.c 31 Aug 2017 12:03:59 -0000 @@ -154,7 +154,7 @@ carp_state_name(enum RUNSTATE state) { static const char *carpstate[] = CARPSTATES; - if (state < 0 || state > FAIL) + if ((unsigned)state > FAIL) state = FAIL; return carpstate[state]; } @@ -163,7 +163,7 @@ void carp_update_state(enum RUNSTATE current_state) { - if (current_state < 0 || current_state > FAIL) { + if ((unsigned)current_state > FAIL) { log_err("carp_update_state: invalid carp state, abort"); cfgstate.runstate = FAIL; return;