aboutsummaryrefslogtreecommitdiffstats
path: root/src/nnn.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nnn.c')
-rw-r--r--src/nnn.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/nnn.c b/src/nnn.c
index b205126..20f8cb3 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1420,23 +1420,29 @@ static int nextsel(int *presel)
return 0;
}
+static inline void swap_ent(int id1, int id2)
+{
+ static struct entry _dent, *pdent1, *pdent2;;
+
+ pdent1 = &dents[id1];
+ pdent2 = &dents[id2];
+
+ *(&_dent) = *pdent1;
+ *pdent1 = *pdent2;
+ *pdent2 = *(&_dent);
+}
+
/*
* Move non-matching entries to the end
*/
static int fill(char *fltr, regex_t *re)
{
static int count;
- static struct entry _dent, *pdent1, *pdent2;
for (count = 0; count < ndents; ++count) {
if (filterfn(re, dents[count].name, fltr) == 0) {
if (count != --ndents) {
- pdent1 = &dents[count];
- pdent2 = &dents[ndents];
-
- *(&_dent) = *pdent1;
- *pdent1 = *pdent2;
- *pdent2 = *(&_dent);
+ swap_ent(count, ndents);
--count;
}