summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2021-01-05 14:45:12 +0100
committerBenBE <BenBE@geshi.org>2021-01-11 20:12:34 +0100
commit958112c5a396815da7a731f406dbfd27bf713572 (patch)
tree49b8640137ba6e70072d5ade0bc8260abc59dc8e
parenta118928dee0874eef98be81531a98577c1ae3f7d (diff)
Refactor setting filter and use safe strncpy
-rw-r--r--IncSet.c7
-rw-r--r--IncSet.h2
-rw-r--r--htop.c7
3 files changed, 10 insertions, 6 deletions
diff --git a/IncSet.c b/IncSet.c
index aba5e750..f1031bd0 100644
--- a/IncSet.c
+++ b/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};
diff --git a/IncSet.h b/IncSet.h
index 28580023..4ff19aad 100644
--- a/IncSet.h
+++ b/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);
diff --git a/htop.c b/htop.c
index 00ff1dab..a8935f40 100644
--- a/htop.c
+++ b/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);

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