xref: /freebsd/contrib/xz/src/common/tuklib_mbstr_fw.c (revision aa1a8ff2d6dbc51ef058f46f3db5a8bb77967145)
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 /// \file       tuklib_mbstr_fw.c
4 /// \brief      Get the field width for printf() e.g. to align table columns
5 //
6 //  Author:     Lasse Collin
7 //
8 //  This file has been put into the public domain.
9 //  You can do whatever you want with this file.
10 //
11 ///////////////////////////////////////////////////////////////////////////////
12 
13 #include "tuklib_mbstr.h"
14 
15 
16 extern int
17 tuklib_mbstr_fw(const char *str, int columns_min)
18 {
19 	size_t len;
20 	const size_t width = tuklib_mbstr_width(str, &len);
21 	if (width == (size_t)-1)
22 		return -1;
23 
24 	if (width > (size_t)columns_min)
25 		return 0;
26 
27 	if (width < (size_t)columns_min)
28 		len += (size_t)columns_min - width;
29 
30 	return (int)len;
31 }
32