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);
                }
            }