From cdb660adabada0c293ed86ebf5638d435950a03f Mon Sep 17 00:00:00 2001 From: Benny Baumann Date: Sat, 10 Apr 2021 11:10:50 +0200 Subject: Move mergeCommand to global process struct --- Process.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'Process.h') diff --git a/Process.h b/Process.h index 2350775f..2a198441 100644 --- a/Process.h +++ b/Process.h @@ -55,6 +55,35 @@ typedef enum ProcessField_ { struct Settings_; +/* Holds information about regions of the cmdline that should be + * highlighted (e.g. program basename, delimiter, comm). */ +typedef struct ProcessCmdlineHighlight_ { + size_t offset; /* first character to highlight */ + size_t length; /* How many characters to highlight, zero if unused */ + int attr; /* The attributes used to highlight */ + int flags; /* Special flags used for selective highlighting, zero for always */ +} ProcessCmdlineHighlight; + +/* ProcessMergedCommand is populated by Process_makeCommandStr: It + * contains the merged Command string, and the information needed by + * Process_writeCommand to color the string. str will be NULL for kernel + * threads and zombies */ +typedef struct ProcessMergedCommand_ { + char *str; /* merged Command string */ + size_t maxLen; /* maximum expected length of Command string */ + size_t highlightCount; /* how many portions of cmdline to highlight */ + ProcessCmdlineHighlight highlights[8]; /* which portions of cmdline to highlight */ + bool separateComm : 1; /* whether comm is a separate field */ + bool unmatchedExe : 1; /* whether exe matched with cmdline */ + bool cmdlineChanged : 1; /* whether cmdline changed */ + bool exeChanged : 1; /* whether exe changed */ + bool commChanged : 1; /* whether comm changed */ + bool prevMergeSet : 1; /* whether showMergedCommand was set */ + bool prevPathSet : 1; /* whether showProgramPath was set */ + bool prevCommSet : 1; /* whether findCommInCmdline was set */ + bool prevCmdlineSet : 1; /* whether stripExeFromCmdline was set */ +} ProcessMergedCommand; + typedef struct Process_ { /* Super object for emulated OOP */ Object super; @@ -200,6 +229,11 @@ typedef struct Process_ { unsigned int tree_right; unsigned int tree_depth; unsigned int tree_index; + + /* + * Internal state for merged Command display + */ + ProcessMergedCommand mergedCommand; } Process; typedef struct ProcessFieldData_ { -- cgit v1.2.3