From: nicm Date: Mon, 29 May 2017 15:43:48 +0000 (+0000) Subject: Add m: for fnmatch(3) format matching. X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=c1117a7b33b6fbdf2911cec0d1568f373a754e9c;p=openbsd Add m: for fnmatch(3) format matching. --- diff --git a/usr.bin/tmux/format.c b/usr.bin/tmux/format.c index 407b36a67a6..fd20dfacfff 100644 --- a/usr.bin/tmux/format.c +++ b/usr.bin/tmux/format.c @@ -1,4 +1,4 @@ -/* $OpenBSD: format.c,v 1.138 2017/05/12 22:43:15 nicm Exp $ */ +/* $OpenBSD: format.c,v 1.139 2017/05/29 15:43:48 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -868,6 +869,12 @@ format_replace(struct format_tree *ft, const char *key, size_t keylen, /* Is there a length limit or whatnot? */ switch (copy[0]) { + case 'm': + if (copy[1] != ':') + break; + compare = -2; + copy += 2; + break; case '!': if (copy[1] == '=' && copy[2] == ':') { compare = -1; @@ -943,6 +950,8 @@ format_replace(struct format_tree *ft, const char *key, size_t keylen, value = xstrdup("1"); else if (compare == -1 && strcmp(left, right) != 0) value = xstrdup("1"); + else if (compare == -2 && fnmatch(left, right, 0) == 0) + value = xstrdup("1"); else value = xstrdup("0"); free(right); diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1 index 18f7afd83ac..cbc0acfaaad 100644 --- a/usr.bin/tmux/tmux.1 +++ b/usr.bin/tmux/tmux.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: tmux.1,v 1.552 2017/05/29 07:46:32 nicm Exp $ +.\" $OpenBSD: tmux.1,v 1.553 2017/05/29 15:43:48 nicm Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott .\" @@ -3444,6 +3444,13 @@ if running on .Ql myhost , otherwise by .Ql 0. +An +.Ql m +specifies a +.Xr fnmatch 3 +comparison - the first argument is the pattern and the second the string to +compare. For example, +.Ql #{m:*foo*,#{host}} . .Pp A limit may be placed on the length of the resultant string by prefixing it by an