summaryrefslogtreecommitdiffstats
path: root/RichString.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2012-11-10 00:31:37 +0000
committerHisham Muhammad <hisham@gobolinux.org>2012-11-10 00:31:37 +0000
commit2a73405cd060b543d56987650327b18078a137d7 (patch)
tree3f20c358aea5787d4ea79d52c08d0bd591751def /RichString.c
parent259e1a29384003c0c4ac6c84a499c0e05f789a90 (diff)
search and filter for the strace and lsof screens!
Diffstat (limited to 'RichString.c')
-rw-r--r--RichString.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/RichString.c b/RichString.c
index eca2293e..33f5880d 100644
--- a/RichString.c
+++ b/RichString.c
@@ -83,16 +83,15 @@ static inline void RichString_setLen(RichString* this, int len) {
#ifdef HAVE_LIBNCURSESW
-inline void RichString_appendn(RichString* this, int attrs, const char* data_c, int len) {
+static inline void RichString_writeFrom(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;
- int oldLen = this->chlen;
- int newLen = len + oldLen;
+ int newLen = from + len;
RichString_setLen(this, newLen);
- for (int i = oldLen, j = 0; i < newLen; i++, j++) {
- memset(&this->chptr[i], 0, sizeof(this->chptr[i]));
+ memset(&this->chptr[from], 0, sizeof(CharType) * (newLen - from));
+ for (int i = from, j = 0; i < newLen; i++, j++) {
this->chptr[i].chars[0] = data[j];
this->chptr[i].attr = attrs;
}
@@ -120,11 +119,10 @@ int RichString_findChar(RichString* this, char c, int start) {
#else
-inline void RichString_appendn(RichString* this, int attrs, const char* data_c, int len) {
- int oldLen = this->chlen;
- int newLen = len + oldLen;
+static inline void RichString_writeFrom(RichString* this, int attrs, const char* data_c, int from, int len) {
+ int newLen = from + len;
RichString_setLen(this, newLen);
- for (int i = oldLen, j = 0; i < newLen; i++, j++)
+ for (int i = from, j = 0; i < newLen; i++, j++)
this->chptr[i] = (isprint(data_c[j]) ? data_c[j] : '?') | attrs;
this->chptr[newLen] = 0;
}
@@ -160,11 +158,14 @@ void RichString_setAttr(RichString* this, int attrs) {
RichString_setAttrn(this, attrs, 0, this->chlen - 1);
}
-inline void RichString_append(RichString* this, int attrs, const char* data) {
- RichString_appendn(this, attrs, data, strlen(data));
+void RichString_append(RichString* this, int attrs, const char* data) {
+ RichString_writeFrom(this, attrs, data, this->chlen, strlen(data));
+}
+
+void RichString_appendn(RichString* this, int attrs, const char* data, int len) {
+ RichString_writeFrom(this, attrs, data, this->chlen, len);
}
void RichString_write(RichString* this, int attrs, const char* data) {
- RichString_setLen(this, 0);
- RichString_appendn(this, attrs, data, strlen(data));
+ RichString_writeFrom(this, attrs, data, 0, strlen(data));
}

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