diff -r 68626467b639 -r 4fc80c5c8c84 console/libgnt/gntutils.c --- a/console/libgnt/gntutils.c Sat Sep 02 20:17:43 2006 +0000 +++ b/console/libgnt/gntutils.c Sat Sep 02 23:06:25 2006 +0000 @@ -68,3 +68,32 @@ return str; } +char *gnt_util_onscreen_fit_string(const char *string, int maxw) +{ + const char *start, *end; + GString *str; + + if (maxw <= 0) + maxw = getmaxx(stdscr) - 4; + + start = string; + str = g_string_new(NULL); + + while (*start) { + if ((end = strchr(start, '\n')) != NULL || + (end = strchr(start, '\r')) != NULL) { + if (gnt_util_onscreen_width(start, end) <= maxw) { + ++end; + } else + end = NULL; + } + if (end == NULL) + end = gnt_util_onscreen_width_to_pointer(start, maxw, NULL); + str = g_string_append_len(str, start, end - start); + start = end; + if (*end && *end != '\n' && *end != '\r') + str = g_string_append_c(str, '\n'); + } + return g_string_free(str, FALSE); +} +