summaryrefslogtreecommitdiff
path: root/lib/libc/unistd/swab.c
blob: b1a47c03783829fa257b853da51cd8225994cc52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <unistd.h> // for ssize_t, swab

void swab(const void *restrict src, void *restrict dest, ssize_t nbytes)
{
	const char *s = src;
	char *d = dest;

	if (nbytes <= 0)
		return;

	ssize_t n = nbytes & ~1;

	for (ssize_t i = 0; i < n; i += 2) {
		d[i] = s[i + 1];
		d[i + 1] = s[i];
	}
}