山本です。新しく追加した関数を説明します。

static char *
find_magic(s, flags, pbeg, pend)
     char *s;
     int flags;
     char **pbeg;
     char **pend;

sからmagicなelemを検索する。
magicなelemは[*pbeg, *pend) の範囲になる。

"hoge/hoge/?-?/mm"
           ^  ^
       *pbeg *pend

もしもヌルターミネータに行き当たったら、find_dirsepと異なり
そのポインタを返す。(find_dirsepはNULL)


static int
do_fnmatch(beg, end, string, flags)
    char *beg;
    char *end;
    const char *string;
    int flags;

[beg, end)をパターンとしてfnmatchを呼び出す。