summaryrefslogtreecommitdiff
path: root/gnu/lib/libdialog/kernel.c
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>1994-11-16 14:37:37 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>1994-11-16 14:37:37 +0000
commit5f5d7caab1c5b509d30df5bd914f2b15998fca65 (patch)
tree6d42ce10ce8c7263feab1c0a86525a16826ae40e /gnu/lib/libdialog/kernel.c
parent0066ef2281a7155ad3416190995f8398372b0816 (diff)
Notes
Diffstat (limited to 'gnu/lib/libdialog/kernel.c')
-rw-r--r--gnu/lib/libdialog/kernel.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/gnu/lib/libdialog/kernel.c b/gnu/lib/libdialog/kernel.c
index 4e30c51372a4..9309fecd168e 100644
--- a/gnu/lib/libdialog/kernel.c
+++ b/gnu/lib/libdialog/kernel.c
@@ -422,3 +422,53 @@ void end_dialog(void)
{
endwin();
}
+
+int strwidth(const char *p)
+{
+ int i = 0, len, incr;
+ const char *start, *s, *s1, *s2;
+
+ for (start = s = p; ; start = (s += incr)) {
+ s1 = strchr(s, '\n');
+ s2 = strstr(s, "\\n");
+ if (s2 == NULL)
+ s = s1;
+ else if (s1 == NULL)
+ s = s2;
+ else
+ s = MIN(s1, s2);
+ if (s == NULL)
+ break;
+ incr = 1 + (s == s2);
+ len = s - start;
+ if (len > i)
+ i = len;
+ }
+ len = strlen(start);
+ if (len > i)
+ i = len;
+ return i;
+}
+
+int strheight(const char *p)
+{
+ int i = 1, incr;
+ const char *s, *s1, *s2;
+
+ for (s = p; ; s += incr) {
+ s1 = strchr(s, '\n');
+ s2 = strstr(s, "\\n");
+ if (s2 == NULL)
+ s = s1;
+ else if (s1 == NULL)
+ s = s2;
+ else
+ s = MIN(s1, s2);
+ if (s == NULL)
+ break;
+ incr = 1 + (s == s2);
+ i++;
+ }
+ return i;
+}
+