1234567891011121314151617181920212223 |
- #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);
- }
- }
|