On 04/26/12 17:32, Richard Henderson wrote: > On 04/26/12 08:25, Jes Sorensen wrote: >> Just checking mdadm.h and bswap32() is defined like this: >> >> #define bswap_32(x) (((x) & 0x000000ffU) << 24 | \ >> ((x) & 0xff000000U) >> 24 | \ >> ((x) & 0x0000ff00U) << 8 | \ >> ((x) & 0x00ff0000U) >> 8) >> >> so I am not 100% sure just swapping to an s32 in the struct will work on >> big endian systems? Will the 0x000000ffU not force the conversion back >> to unsigned or what happens in this case? > > This is actually semi-complicated. c89 or c99 rules? X already of a > type larger than unsigned int? This is what I was afraid of :) > But if X is signed int, this entire expression will always be unsigned. > > You're certainly better off with a cast as we discussed on irc. In this particular case X would be a signed int, so we would end up with unsigned and still need the cast. I will opt for the cast in this case - thanks a lot for the clarification. Cheers, Jes -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html