!strcmp(str1, str2)
と書く奴は、もし、その書き方で整合性を取りたいなら、

int32_t ret = (int32_t)strcmp(str1, str2);
if( !ret ){} /* str1 == str2 */
if( ret && !(ret&-0x80000000) ){} /* str1 > str2 */
if( ret&-0x80000000 ){} /* str1 < str2 */
if( ret ){} /* str1 != str2 */
if( !(ret&-0x80000000) ){} /* str1 >= str2 */
if( !ret || ret&-0x80000000 ){} /* str1 <= str2 */

と書かなきゃしょうがないよな。
やってらんねー。