From beca89d99a21e0fb1da16541d4206cfb3afbae82 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 3 Apr 2002 10:55:50 +0000 Subject: Add the xopen swab() function, contributed by Kensuke Otake --- libc/unistd/Makefile | 2 +- libc/unistd/swab.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 libc/unistd/swab.c (limited to 'libc/unistd') diff --git a/libc/unistd/Makefile b/libc/unistd/Makefile index c325eae3a..97cd21c49 100644 --- a/libc/unistd/Makefile +++ b/libc/unistd/Makefile @@ -27,7 +27,7 @@ DIRS:= CSRC=execl.c execlp.c execv.c execvep.c execvp.c execle.c getcwd.c \ sleep.c usleep.c getpass.c sysconf_src.c getlogin.c \ - fpathconf.c confstr.c pathconf.c + fpathconf.c confstr.c pathconf.c swab.c ifeq ($(strip $(HAS_MMU)),true) CSRC+=daemon.c endif diff --git a/libc/unistd/swab.c b/libc/unistd/swab.c new file mode 100644 index 000000000..c63ca7284 --- /dev/null +++ b/libc/unistd/swab.c @@ -0,0 +1,18 @@ +#include +#include + +/* swab() swaps the position of two adjacent bytes, every two bytes. + * Contributed by Kensuke Otake */ + +void swab(const void *source, void *dest, ssize_t count) { + const char *from = (const char *)source; + char *to = (char *)dest; + + count &= ~((ssize_t)1); + + while (count > 1) { + const char b0 = from[--count], b1 = from[--count]; + to[count] = b0; + to[count + 1] = b1; + } +} -- cgit v1.2.3