xref: /freebsd/contrib/xz/src/common/tuklib_mbstr_fw.c (revision f4b37ed0f8b307b1f3f0f630ca725d68f1dff30d)
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 /// \file       tuklib_mstr_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 len;
31 }
32