diff options
author | Pádraig Brady <P@draigBrady.com> | 2010-03-08 18:29:01 +0000 |
---|---|---|
committer | Karel Zak <kzak@redhat.com> | 2010-03-16 15:16:11 +0100 |
commit | 104b92f84802e4043e6a8db034985fa726b9a6ab (patch) | |
tree | 4f14c42489093933ced300199bde89cde8ace538 /include | |
parent | 03e062e5930bf89ce2ccae5ed76f445e87525921 (diff) | |
download | util-linux-old-104b92f84802e4043e6a8db034985fa726b9a6ab.tar.gz |
cal: factor out and update multibyte alignment code
* include/mbsalign.h: New module interface
* lib/mbsalign.c: Updated implementation synced from coreutils
* include/Makefile.am: Add mbsalign.h
* misc-utils/Makefile.am: Make cal dependent on mbsalign module
* misc-utils/cal.c: Call mbsalign()
[kzak@redhat.com: - use min() macro from c.h]
Signed-off-by: Pádraig Brady <P@draigBrady.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/Makefile.am | 1 | ||||
-rw-r--r-- | include/mbsalign.h | 43 |
2 files changed, 44 insertions, 0 deletions
diff --git a/include/Makefile.am b/include/Makefile.am index 1da31fe1..ccae85d7 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -12,6 +12,7 @@ dist_noinst_HEADERS = \ linux_reboot.h \ linux_version.h \ md5.h \ + mbsalign.h \ nls.h \ pathnames.h \ setproctitle.h \ diff --git a/include/mbsalign.h b/include/mbsalign.h new file mode 100644 index 00000000..b8a588c2 --- /dev/null +++ b/include/mbsalign.h @@ -0,0 +1,43 @@ +/* Align/Truncate a string in a given screen width + Copyright (C) 2009-2010 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <stddef.h> + +typedef enum { MBS_ALIGN_LEFT, MBS_ALIGN_RIGHT, MBS_ALIGN_CENTER } mbs_align_t; + +enum { + /* Use unibyte mode for invalid multibyte strings or + or when heap memory is exhausted. */ + MBA_UNIBYTE_FALLBACK = 0x0001, + +#if 0 /* Other possible options. */ + /* Skip invalid multibyte chars rather than failing */ + MBA_IGNORE_INVALID = 0x0002, + + /* Align multibyte strings using "figure space" (\u2007) */ + MBA_USE_FIGURE_SPACE = 0x0004, + + /* Don't add any padding */ + MBA_TRUNCATE_ONLY = 0x0008, + + /* Don't truncate */ + MBA_PAD_ONLY = 0x0010, +#endif +}; + +size_t +mbsalign (const char *src, char *dest, size_t dest_size, + size_t *width, mbs_align_t align, int flags); |