summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwain Ainsworth <oga@cvs.openbsd.org>2009-06-26 12:45:13 +0000
committerOwain Ainsworth <oga@cvs.openbsd.org>2009-06-26 12:45:13 +0000
commit52bc928e28ef348318080838cf7bf6b1e5c24ac9 (patch)
treefd62da8c9e0152fd271dad939f00cdc3bf6fb439
parent3ae608dbbb53c012cee9d190c2de95eccded2c9b (diff)
use fnmatch to glob the entries in the exec menu.
allows shell globbing constructs such as *ctl, etc in the exec menu (m-? by default). Adapted from a diff from Thomas Pfaff, okan@ got almost the same diff as me when reworking it, and oked this one.
-rw-r--r--app/cwm/search.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/app/cwm/search.c b/app/cwm/search.c
index a3efec2c4..b3ae65bcd 100644
--- a/app/cwm/search.c
+++ b/app/cwm/search.c
@@ -14,9 +14,10 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $Id: search.c,v 1.16 2009/06/17 12:30:17 okan Exp $
+ * $Id: search.c,v 1.17 2009/06/26 12:45:12 oga Exp $
*/
+#include <fnmatch.h>
#include "headers.h"
#include "calmwm.h"
@@ -178,8 +179,9 @@ search_match_exec(struct menu_q *menuq, struct menu_q *resultq, char *search)
TAILQ_INIT(resultq);
TAILQ_FOREACH(mi, menuq, entry) {
- if (strsubmatch(search, mi->text, 1) == 0)
- continue;
+ if (strsubmatch(search, mi->text, 1) == 0 &&
+ fnmatch(search, mi->text, 0) == FNM_NOMATCH)
+ continue;
for (mj = TAILQ_FIRST(resultq); mj != NULL;
mj = TAILQ_NEXT(mj, resultentry)) {
if (strcasecmp(mi->text, mj->text) < 0) {