12940b44dSPeter Avalos ///////////////////////////////////////////////////////////////////////////////
22940b44dSPeter Avalos //
3*e151908bSDaniel Fojt /// \file       tuklib_mbstr_fw.c
42940b44dSPeter Avalos /// \brief      Get the field width for printf() e.g. to align table columns
52940b44dSPeter Avalos //
62940b44dSPeter Avalos //  Author:     Lasse Collin
72940b44dSPeter Avalos //
82940b44dSPeter Avalos //  This file has been put into the public domain.
92940b44dSPeter Avalos //  You can do whatever you want with this file.
102940b44dSPeter Avalos //
112940b44dSPeter Avalos ///////////////////////////////////////////////////////////////////////////////
122940b44dSPeter Avalos 
132940b44dSPeter Avalos #include "tuklib_mbstr.h"
142940b44dSPeter Avalos 
152940b44dSPeter Avalos 
162940b44dSPeter Avalos extern int
tuklib_mbstr_fw(const char * str,int columns_min)172940b44dSPeter Avalos tuklib_mbstr_fw(const char *str, int columns_min)
182940b44dSPeter Avalos {
192940b44dSPeter Avalos 	size_t len;
202940b44dSPeter Avalos 	const size_t width = tuklib_mbstr_width(str, &len);
212940b44dSPeter Avalos 	if (width == (size_t)-1)
222940b44dSPeter Avalos 		return -1;
232940b44dSPeter Avalos 
242940b44dSPeter Avalos 	if (width > (size_t)columns_min)
252940b44dSPeter Avalos 		return 0;
262940b44dSPeter Avalos 
272940b44dSPeter Avalos 	if (width < (size_t)columns_min)
282940b44dSPeter Avalos 		len += (size_t)columns_min - width;
292940b44dSPeter Avalos 
302940b44dSPeter Avalos 	return len;
312940b44dSPeter Avalos }
32