#include <unistd.h> #include <sys/types.h> #include <byteswap.h> /* Updated implementation based on byteswap.h from Miles Bader * <miles@gnu.org>. This should be much faster on arches with machine * specific, optimized definitions in include/bits/byteswap.h (i.e. on * x86, use the bswap instruction on i486 and better boxes). For * platforms that lack such support, this should be no slower than it * was before... */ void swab (const void *source, void *dest, ssize_t count) { const unsigned short *from = source, *from_end = from + (count >> 1); unsigned short junk; unsigned short *to = dest; while (from < from_end) { /* Don't put '*from++'into the bswap_16() macros * or mad things will happen on macro expansion */ junk=*from++; *to++ = bswap_16 (junk); } }