mirror of
https://github.com/xzeldon/htop.git
synced 2024-12-24 15:15:44 +00:00
Refactor setting filter and use safe strncpy
This commit is contained in:
parent
a118928dee
commit
958112c5a3
7
IncSet.c
7
IncSet.c
@ -29,6 +29,13 @@ void IncSet_reset(IncSet* this, IncType type) {
|
||||
IncMode_reset(&this->modes[type]);
|
||||
}
|
||||
|
||||
void IncSet_setFilter(IncSet* this, const char* filter) {
|
||||
IncMode* mode = &this->modes[INC_FILTER];
|
||||
size_t len = String_safeStrncpy(mode->buffer, filter, sizeof(mode->buffer));
|
||||
mode->index = len;
|
||||
this->filtering = true;
|
||||
}
|
||||
|
||||
static const char* const searchFunctions[] = {"Next ", "Prev ", "Cancel ", " Search: ", NULL};
|
||||
static const char* const searchKeys[] = {"F3", "S-F3", "Esc", " "};
|
||||
static const int searchEvents[] = {KEY_F(3), KEY_F(15), 27, ERR};
|
||||
|
2
IncSet.h
2
IncSet.h
@ -40,6 +40,8 @@ static inline const char* IncSet_filter(const IncSet* this) {
|
||||
return this->filtering ? this->modes[INC_FILTER].buffer : NULL;
|
||||
}
|
||||
|
||||
void IncSet_setFilter(IncSet* this, const char* filter);
|
||||
|
||||
typedef const char* (*IncMode_GetPanelValue)(Panel*, int);
|
||||
|
||||
void IncSet_reset(IncSet* this, IncType type);
|
||||
|
7
htop.c
7
htop.c
@ -248,13 +248,8 @@ static void setCommFilter(State* state, char** commFilter) {
|
||||
MainPanel* panel = (MainPanel*)state->panel;
|
||||
ProcessList* pl = state->pl;
|
||||
IncSet* inc = panel->inc;
|
||||
size_t maxlen = sizeof(inc->modes[INC_FILTER].buffer) - 1;
|
||||
char* buffer = inc->modes[INC_FILTER].buffer;
|
||||
|
||||
strncpy(buffer, *commFilter, maxlen);
|
||||
buffer[maxlen] = 0;
|
||||
inc->modes[INC_FILTER].index = strlen(buffer);
|
||||
inc->filtering = true;
|
||||
IncSet_setFilter(inc, *commFilter);
|
||||
pl->incFilter = IncSet_filter(inc);
|
||||
|
||||
free(*commFilter);
|
||||
|
Loading…
Reference in New Issue
Block a user