# Fix the endian-specific bit-counting code so that it works. # SF:1068324 "netcat_flag_count() fix" # http://sourceforge.net/tracker/?func=detail&aid=1205729&group_id=52204&atid=466046 # SF:1205729 "doen't work on arm linux platform": # http://sourceforge.net/tracker/?func=detail&aid=1068324&group_id=52204&atid=466046 Index: netcat-0.7.1/src/flagset.c =================================================================== --- netcat-0.7.1.orig/src/flagset.c 2010-07-19 13:51:46.000000000 +0100 +++ netcat-0.7.1/src/flagset.c 2010-07-19 13:52:27.000000000 +0100 @@ -134,7 +134,7 @@ int netcat_flag_count(void) { - register char c; + register unsigned char c; register int i; int ret = 0; @@ -154,8 +154,8 @@ Assumed that the bit number 1 is the sign, and that we will shift the bit 1 (or the bit that takes its place later) until the the most right, WHY it has to keep the wrong sign? */ - ret -= (c >> 7); - c <<= 1; + ret += c&1; + c>>=1; } }