summaryrefslogtreecommitdiffstats
path: root/RichString.c
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2020-12-23 12:20:57 +0100
committerChristian Göttsche <cgzones@googlemail.com>2020-12-23 12:47:53 +0100
commit94d7f0b5853ed17d5364247d82fe2cdb28b349dd (patch)
tree854ead8f0689eaed263ecd2009ceb3f07338e7f3 /RichString.c
parent86d293125565a15bbd94683080dbc755c5d7edee (diff)
RichString: return number of written characters on write/append functions
Diffstat (limited to 'RichString.c')
-rw-r--r--RichString.c44
1 files changed, 25 insertions, 19 deletions
diff --git a/RichString.c b/RichString.c
index 5dc7ada8..3e3d3703 100644
--- a/RichString.c
+++ b/RichString.c
@@ -48,25 +48,29 @@ static void RichString_setLen(RichString* this, int len) {
#ifdef HAVE_LIBNCURSESW
-static inline void RichString_writeFromWide(RichString* this, int attrs, const char* data_c, int from, int len) {
+static inline int RichString_writeFromWide(RichString* this, int attrs, const char* data_c, int from, int len) {
wchar_t data[len + 1];
len = mbstowcs(data, data_c, len);
- if (len < 0)
- return;
+ if (len <= 0)
+ return 0;
int newLen = from + len;
RichString_setLen(this, newLen);
for (int i = from, j = 0; i < newLen; i++, j++) {
this->chptr[i] = (CharType) { .attr = attrs & 0xffffff, .chars = { (iswprint(data[j]) ? data[j] : '?') } };
}
+
+ return len;
}
-static inline void RichString_writeFromAscii(RichString* this, int attrs, const char* data, int from, int len) {
+static inline int RichString_writeFromAscii(RichString* this, int attrs, const char* data, int from, int len) {
int newLen = from + len;
RichString_setLen(this, newLen);
for (int i = from, j = 0; i < newLen; i++, j++) {
this->chptr[i] = (CharType) { .attr = attrs & 0xffffff, .chars = { (isprint(data[j]) ? data[j] : '?') } };
}
+
+ return len;
}
inline void RichString_setAttrn(RichString* this, int attrs, int start, int finish) {
@@ -91,17 +95,19 @@ int RichString_findChar(RichString* this, char c, int start) {
#else /* HAVE_LIBNCURSESW */
-static inline void RichString_writeFromWide(RichString* this, int attrs, const char* data_c, int from, int len) {
+static inline int RichString_writeFromWide(RichString* this, int attrs, const char* data_c, int from, int len) {
int newLen = from + len;
RichString_setLen(this, newLen);
for (int i = from, j = 0; i < newLen; i++, j++) {
this->chptr[i] = (((unsigned char)data_c[j]) >= 32 ? ((unsigned char)data_c[j]) : '?') | attrs;
}
this->chptr[newLen] = 0;
+
+ return len;
}
-static inline void RichString_writeFromAscii(RichString* this, int attrs, const char* data_c, int from, int len) {
- RichString_writeFromWide(this, attrs, data_c, from, len);
+static inline int RichString_writeFromAscii(RichString* this, int attrs, const char* data_c, int from, int len) {
+ return RichString_writeFromWide(this, attrs, data_c, from, len);
}
void RichString_setAttrn(RichString* this, int attrs, int start, int finish) {
@@ -145,26 +151,26 @@ void RichString_setAttr(RichString* this, int attrs) {
RichString_setAttrn(this, attrs, 0, this->chlen - 1);
}
-void RichString_appendWide(RichString* this, int attrs, const char* data) {
- RichString_writeFromWide(this, attrs, data, this->chlen, strlen(data));
+int RichString_appendWide(RichString* this, int attrs, const char* data) {
+ return RichString_writeFromWide(this, attrs, data, this->chlen, strlen(data));
}
-void RichString_appendnWide(RichString* this, int attrs, const char* data, int len) {
- RichString_writeFromWide(this, attrs, data, this->chlen, len);
+int RichString_appendnWide(RichString* this, int attrs, const char* data, int len) {
+ return RichString_writeFromWide(this, attrs, data, this->chlen, len);
}
-void RichString_writeWide(RichString* this, int attrs, const char* data) {
- RichString_writeFromWide(this, attrs, data, 0, strlen(data));
+int RichString_writeWide(RichString* this, int attrs, const char* data) {
+ return RichString_writeFromWide(this, attrs, data, 0, strlen(data));
}
-void RichString_appendAscii(RichString* this, int attrs, const char* data) {
- RichString_writeFromAscii(this, attrs, data, this->chlen, strlen(data));
+int RichString_appendAscii(RichString* this, int attrs, const char* data) {
+ return RichString_writeFromAscii(this, attrs, data, this->chlen, strlen(data));
}
-void RichString_appendnAscii(RichString* this, int attrs, const char* data, int len) {
- RichString_writeFromAscii(this, attrs, data, this->chlen, len);
+int RichString_appendnAscii(RichString* this, int attrs, const char* data, int len) {
+ return RichString_writeFromAscii(this, attrs, data, this->chlen, len);
}
-void RichString_writeAscii(RichString* this, int attrs, const char* data) {
- RichString_writeFromAscii(this, attrs, data, 0, strlen(data));
+int RichString_writeAscii(RichString* this, int attrs, const char* data) {
+ return RichString_writeFromAscii(this, attrs, data, 0, strlen(data));
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy