diff options
Diffstat (limited to 'stpntolower.c')
| -rw-r--r-- | stpntolower.c | 115 | 
1 files changed, 115 insertions, 0 deletions
diff --git a/stpntolower.c b/stpntolower.c new file mode 100644 index 0000000..9fc4466 --- /dev/null +++ b/stpntolower.c @@ -0,0 +1,115 @@ +/* See LICENSE file for copyright and license details. */ +#include "libsimple.h" +#ifndef TEST + + +char * +libsimple_stpntolower(char *d, const char *s, size_t n) /* TODO man */ +{ +	size_t i; +	char *ret; +	if (d == s) { +		for (; n && *d; d++, n--) +			*d = tolower(*d); +		return d; +	} else if (d < s) { +		for (; n && *s; d++, s++, n--) +			*d = tolower(*s); +		if (n) +			*d = '\0'; +		return d; +	} else { +		for (i = 0; i < n && s[i]; i++); +		ret = &d[i]; +		if (i != n) +			d[i] = tolower(s[i]); +		while (i--) +			d[i] = tolower(s[i]); +		return ret; +	} +} + + +#else +#include "test.h" + +int +main(void) +{ +	char buf[100]; + +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_stpntolower(&buf[3], &buf[0], SIZE_MAX), "")); +	assert(!strcmp(buf, "ABCabcdeabcde12345")); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_stpntolower(&buf[0], &buf[3], SIZE_MAX), "")); +	assert(!strcmp(buf, "deabcde12345")); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_stpntolower(&buf[0], &buf[0], SIZE_MAX), "")); +	assert(!strcmp(buf, "abcdeabcde12345")); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_strntolower(&buf[3], &buf[0], SIZE_MAX), "abcdeabcde12345")); +	assert(!strcmp(buf, "ABCabcdeabcde12345")); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_strntolower(&buf[0], &buf[3], SIZE_MAX), "deabcde12345")); +	assert(!strcmp(buf, "deabcde12345")); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_strntolower(&buf[0], &buf[0], SIZE_MAX), "abcdeabcde12345")); +	assert(!strcmp(buf, "abcdeabcde12345")); + +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	buf[18] = 'X'; +	assert(!strcmpnul(libsimple_stpntolower(&buf[3], &buf[0], 15), "X")); +	assert(!strcmp(buf, "ABCabcdeabcde12345X")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_stpntolower(&buf[0], &buf[3], 12), "345")); +	assert(!strcmp(buf, "deabcde12345345")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345X"); +	assert(!strcmpnul(libsimple_stpntolower(&buf[0], &buf[0], 15), "X")); +	assert(!strcmp(buf, "abcdeabcde12345X")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	buf[18] = 'X'; +	assert(!strcmpnul(libsimple_strntolower(&buf[3], &buf[0], 15), "abcdeabcde12345X")); +	assert(!strcmp(buf, "ABCabcdeabcde12345X")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_strntolower(&buf[0], &buf[3], 12), "deabcde12345345")); +	assert(!strcmp(buf, "deabcde12345345")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345X"); +	assert(!strcmpnul(libsimple_strntolower(&buf[0], &buf[0], 15), "abcdeabcde12345X")); +	assert(!strcmp(buf, "abcdeabcde12345X")); + +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_stpntolower(&buf[3], &buf[0], 0), "DEabcde12345")); +	assert(!strcmp(buf, "ABCDEabcde12345")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_stpntolower(&buf[0], &buf[3], 0), "ABCDEabcde12345")); +	assert(!strcmp(buf, "ABCDEabcde12345")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_stpntolower(&buf[0], &buf[0], 0), "ABCDEabcde12345")); +	assert(!strcmp(buf, "ABCDEabcde12345")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_strntolower(&buf[3], &buf[0], 0), "DEabcde12345")); +	assert(!strcmp(buf, "ABCDEabcde12345")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_strntolower(&buf[0], &buf[3], 0), "ABCDEabcde12345")); +	assert(!strcmp(buf, "ABCDEabcde12345")); +	memset(buf, 0, sizeof(buf)); +	stpcpy(buf, "ABCDEabcde12345"); +	assert(!strcmpnul(libsimple_strntolower(&buf[0], &buf[0], 0), "ABCDEabcde12345")); +	assert(!strcmp(buf, "ABCDEabcde12345")); + +	return 0; +} + +#endif  | 
