aboutsummaryrefslogtreecommitdiff
path: root/termkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'termkey.c')
-rw-r--r--termkey.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/termkey.c b/termkey.c
index 20527a3..4239c66 100644
--- a/termkey.c
+++ b/termkey.c
@@ -198,19 +198,26 @@ static int snprint_cameltospaces(char *str, size_t size, const char *src)
{
int prev_lower = 0;
size_t l = 0;
- while(*src && l < size) {
+ while(*src && l < size - 1) {
if(isupper(*src) && prev_lower) {
if(str)
str[l++] = ' ';
- if(l >= size)
- return -1;
+ if(l >= size - 1)
+ break;
}
prev_lower = islower(*src);
str[l++] = tolower(*src++);
}
- if(l >= size)
- return -1;
str[l] = 0;
+ /* For consistency with snprintf, return the number of bytes that would have
+ * been written, excluding '\0' */
+ while(*src) {
+ if(isupper(*src) && prev_lower) {
+ l++;
+ }
+ prev_lower = islower(*src);
+ src++; l++;
+ }
return l;
}