summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2020-12-23 22:55:35 +0100
committerDaniel Lange <DLange@git.local>2020-12-23 22:55:35 +0100
commit1cc3f8074f710dbd30e82cdb3e558106535e51d1 (patch)
treee16ead4d45f22d3eba18596a2fe08b7d3f6e22e4
parentaa08279964c74202ea2c98bbe025c53c325d46cd (diff)
parent5359eae28b38809f1977a901740ecaab8f7ade6c (diff)
Merge branch 'user_wide' of cgzones/htop
-rw-r--r--Process.c13
-rw-r--r--RichString.c44
-rw-r--r--RichString.h12
3 files changed, 37 insertions, 32 deletions
diff --git a/Process.c b/Process.c
index fc105cbe..8dfd504c 100644
--- a/Process.c
+++ b/Process.c
@@ -363,15 +363,14 @@ void Process_writeField(const Process* this, RichString* str, ProcessField field
case USER: {
if (Process_getuid != this->st_uid)
attr = CRT_colors[PROCESS_SHADOW];
+
if (this->user) {
- xSnprintf(buffer, n, "%-9s ", this->user);
- } else {
- xSnprintf(buffer, n, "%-9d ", this->st_uid);
- }
- if (buffer[9] != '\0') {
- buffer[9] = ' ';
- buffer[10] = '\0';
+ int c = RichString_appendnWide(str, attr, this->user, MINIMUM(9, strlen(this->user)));
+ RichString_appendChr(str, ' ', 10 - c);
+ return;
}
+
+ xSnprintf(buffer, n, "%-9d ", this->st_uid);
break;
}
default:
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));
}
diff --git a/RichString.h b/RichString.h
index 163a970d..1cae1cea 100644
--- a/RichString.h
+++ b/RichString.h
@@ -52,16 +52,16 @@ void RichString_setAttr(RichString* this, int attrs);
void RichString_appendChr(RichString* this, char c, int count);
-void RichString_appendWide(RichString* this, int attrs, const char* data);
+int RichString_appendWide(RichString* this, int attrs, const char* data);
-void RichString_appendnWide(RichString* this, int attrs, const char* data, int len);
+int RichString_appendnWide(RichString* this, int attrs, const char* data, int len);
-void RichString_writeWide(RichString* this, int attrs, const char* data);
+int RichString_writeWide(RichString* this, int attrs, const char* data);
-void RichString_appendAscii(RichString* this, int attrs, const char* data);
+int RichString_appendAscii(RichString* this, int attrs, const char* data);
-void RichString_appendnAscii(RichString* this, int attrs, const char* data, int len);
+int RichString_appendnAscii(RichString* this, int attrs, const char* data, int len);
-void RichString_writeAscii(RichString* this, int attrs, const char* data);
+int RichString_writeAscii(RichString* this, int attrs, const char* data);
#endif

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