Improved the fuzzy filename matching algorithm. - sam - An updated version of the sam text editor.
(HTM) git clone git://vernunftzentrum.de/sam.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit ddafc188b6e492d1908ae84e4c2ba02c26464c0b
(DIR) parent 273f9318ba04e45989bbb82cedb596d163156b73
(HTM) Author: Rob King <jking@deadpixi.com>
Date: Thu, 26 May 2016 12:02:47 -0500
Improved the fuzzy filename matching algorithm.
Diffstat:
sam/multi.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
---
(DIR) diff --git a/sam/multi.c b/sam/multi.c
@@ -1,6 +1,8 @@
/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */
#include "sam.h"
+#include <libgen.h>
+
List file;
ushort tag;
@@ -80,20 +82,26 @@ state(File *f, int cleandirty)
}
File *
-lookfile(String *s, int doprefix)
+lookfile(String *s, int fuzzy)
{
int i;
File *b = NULL;
- int l1 = 0;
+ char *sc = Strtoc(s);
+ size_t sl = strlen(sc);
for(i=0; i<file.nused; i++){
int l2;
if(Strcmp(&file.filepptr[i]->name, s, &l2) == 0)
return file.filepptr[i];
- if (doprefix && l2 > l1 && l2 == s->n - 1){
- l1 = l2;
- b = file.filepptr[i];
+ if (fuzzy){
+ char *ac = Strtoc(&file.filepptr[i]->name);
+ if (strcmp(basename(sc), ac) == 0)
+ return free(ac), file.filepptr[i];
+
+ if (!b && strstr(ac, sc))
+ b = file.filepptr[i];
+ free(ac);
}
}