summaryrefslogtreecommitdiffstats
path: root/Process.c
diff options
context:
space:
mode:
Diffstat (limited to 'Process.c')
-rw-r--r--Process.c40
1 files changed, 24 insertions, 16 deletions
diff --git a/Process.c b/Process.c
index 1962c5d0..6c75d92f 100644
--- a/Process.c
+++ b/Process.c
@@ -275,25 +275,33 @@ void Process_printTime(RichString* str, unsigned long long totalHundredths) {
}
static inline void Process_writeCommand(Process* this, int attr, int baseattr, RichString* str) {
- int start = RichString_size(str);
- RichString_append(str, attr, this->comm);
- if (this->settings->highlightBaseName) {
- int finish = RichString_size(str) - 1;
- if (this->basenameOffset != -1)
- finish = (start + this->basenameOffset) - 1;
- int colon = RichString_findChar(str, ':', start);
- if (colon != -1 && colon < finish) {
- finish = colon;
- } else {
- for (int i = finish - start; i >= 0; i--) {
- if (this->comm[i] == '/') {
- start += i+1;
- break;
- }
+ int start = RichString_size(str), finish = 0;
+ char* comm = this->comm;
+
+ if (this->settings->highlightBaseName || !this->settings->showProgramPath) {
+ int i, basename = 0;
+ for (i = 0; i < this->basenameOffset; i++) {
+ if (comm[i] == '/') {
+ basename = i + 1;
+ } else if (comm[i] == ':') {
+ finish = i + 1;
+ break;
}
}
- RichString_setAttrn(str, baseattr, start, finish);
+ if (!finish) {
+ if (this->settings->showProgramPath)
+ start += basename;
+ else
+ comm += basename;
+ finish = this->basenameOffset - basename;
+ }
+ finish += start - 1;
}
+
+ RichString_append(str, attr, comm);
+
+ if (this->settings->highlightBaseName)
+ RichString_setAttrn(str, baseattr, start, finish);
}
void Process_outputRate(RichString* str, char* buffer, int n, double rate, int coloring) {