From 3efd1f5014f889d276298e0b7411169ff50114bc Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Sun, 18 Jan 2009 17:20:52 +0000 Subject: find-window command. --- util.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 util.c (limited to 'util.c') diff --git a/util.c b/util.c new file mode 100644 index 00000000..97b405e3 --- /dev/null +++ b/util.c @@ -0,0 +1,52 @@ +/* $Id: util.c,v 1.1 2009-01-18 17:20:52 nicm Exp $ */ + +/* + * Copyright (c) 2009 Nicholas Marriott + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include + +#include "tmux.h" + +/* Return a section of a string around a point. */ +char * +section_string(char *buf, size_t len, size_t sectoff, size_t sectlen) +{ + char *s; + size_t first, last; + + if (len <= sectlen) { + first = 0; + last = len; + } else if (sectoff < sectlen / 2) { + first = 0; + last = sectlen; + } else if (sectoff + sectlen / 2 > len) { + last = len; + first = last - sectlen; + } else { + first = sectoff - sectlen / 2; + last = first + sectlen; + } + + if (last - first > 3 && first != 0) + first += 3; + if (last - first > 3 && last != len) + last -= 3; + + xasprintf(&s, "%s%.*s%s", first == 0 ? "" : "...", + (int) (last - first), buf + first, last == len ? "" : "..."); + return (s); +} -- cgit