From 5cddd659cdd6021faee07533509598d1abe403e6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 11 Apr 2018 19:52:25 +0200 Subject: string-util: tweak ellipsation a bit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This primarily changes to things: 1. Ellipsation to 0, 1 or 2 characters is now supported. Previously we'd hit an assert if the new lengths was < 3, this is now permitted. The result strings won't show too much info still of course, but the code becomes a bit more generic and robust to use. 2. If a UTF-8 mode is disabled and the input string is pure ASCII, then "..." is used for ellipsation, otherwise (as before) "…". This means on a pure-ASCII system we should remain pure-ASCII, matching behaviour otherwise exposed with special_glyph() and friends. Note that we'll use "…" for ellipsiation as soon as either the locale settings indicate an UTF-8 mode or the input string already contains non-ASCII unicode characters. Testing for these special cases is improved. --- src/test/test-ellipsize.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/test') diff --git a/src/test/test-ellipsize.c b/src/test/test-ellipsize.c index ba4b043fc..902bc3342 100644 --- a/src/test/test-ellipsize.c +++ b/src/test/test-ellipsize.c @@ -17,6 +17,30 @@ static void test_one(const char *p) { _cleanup_free_ char *t; t = ellipsize(p, columns(), 70); puts(t); + free(t); + t = ellipsize(p, columns(), 0); + puts(t); + free(t); + t = ellipsize(p, columns(), 100); + puts(t); + free(t); + t = ellipsize(p, 0, 50); + puts(t); + free(t); + t = ellipsize(p, 1, 50); + puts(t); + free(t); + t = ellipsize(p, 2, 50); + puts(t); + free(t); + t = ellipsize(p, 3, 50); + puts(t); + free(t); + t = ellipsize(p, 4, 50); + puts(t); + free(t); + t = ellipsize(p, 5, 50); + puts(t); } int main(int argc, char *argv[]) { -- cgit v1.2.3