1*3b35e7eeSXin LI // SPDX-License-Identifier: 0BSD 2*3b35e7eeSXin LI 3e0f0e66dSMartin Matuska /////////////////////////////////////////////////////////////////////////////// 4e0f0e66dSMartin Matuska // 5a8675d92SXin LI /// \file tuklib_mbstr_fw.c 6e0f0e66dSMartin Matuska /// \brief Get the field width for printf() e.g. to align table columns 7e0f0e66dSMartin Matuska // 8e0f0e66dSMartin Matuska // Author: Lasse Collin 9e0f0e66dSMartin Matuska // 10e0f0e66dSMartin Matuska /////////////////////////////////////////////////////////////////////////////// 11e0f0e66dSMartin Matuska 12e0f0e66dSMartin Matuska #include "tuklib_mbstr.h" 13e0f0e66dSMartin Matuska 14e0f0e66dSMartin Matuska 15e0f0e66dSMartin Matuska extern int 16e0f0e66dSMartin Matuska tuklib_mbstr_fw(const char *str, int columns_min) 17e0f0e66dSMartin Matuska { 18e0f0e66dSMartin Matuska size_t len; 19e0f0e66dSMartin Matuska const size_t width = tuklib_mbstr_width(str, &len); 20e0f0e66dSMartin Matuska if (width == (size_t)-1) 21e0f0e66dSMartin Matuska return -1; 22e0f0e66dSMartin Matuska 23e0f0e66dSMartin Matuska if (width > (size_t)columns_min) 24e0f0e66dSMartin Matuska return 0; 25e0f0e66dSMartin Matuska 26e0f0e66dSMartin Matuska if (width < (size_t)columns_min) 27e0f0e66dSMartin Matuska len += (size_t)columns_min - width; 28e0f0e66dSMartin Matuska 29c917796cSXin LI return (int)len; 30e0f0e66dSMartin Matuska } 31