diff options
| author | Andrey A. Chernov <ache@FreeBSD.org> | 1994-11-16 14:37:37 +0000 |
|---|---|---|
| committer | Andrey A. Chernov <ache@FreeBSD.org> | 1994-11-16 14:37:37 +0000 |
| commit | 5f5d7caab1c5b509d30df5bd914f2b15998fca65 (patch) | |
| tree | 6d42ce10ce8c7263feab1c0a86525a16826ae40e /gnu/lib/libdialog/kernel.c | |
| parent | 0066ef2281a7155ad3416190995f8398372b0816 (diff) | |
Notes
Diffstat (limited to 'gnu/lib/libdialog/kernel.c')
| -rw-r--r-- | gnu/lib/libdialog/kernel.c | 50 |
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; +} + |
