| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /* ************************************************************************** */
- /* */
- /* ::: :::::::: */
- /* pf_c_up.c :+: :+: :+: */
- /* +:+ +:+ +:+ */
- /* By: bchanot <bchanot@students.42.fr> +#+ +:+ +#+ */
- /* +#+#+#+#+#+ +#+ */
- /* Created: 2016/02/27 01:59:11 by bchanot #+# #+# */
- /* Updated: 2018/10/14 03:37:20 by bchanot ### ########.fr */
- /* */
- /* ************************************************************************** */
- #include "libftprintf.h"
- #include <wchar.h>
- #include <stdlib.h>
- static int pf_width_c_up(char *s, t_inf inf, int len)
- {
- if (inf.prec < (int)ft_strlen(s) && inf.prec != 0)
- {
- if (len < inf.width - inf.prec)
- return (true);
- }
- else if (len < inf.width - (int)ft_strlen(s))
- return (true);
- return (false);
- }
- static int pf_c_up2(t_inf inf, char *s, int len)
- {
- if (inf.prec > 0 && inf.prec < (int)ft_strlen(s))
- len += pf_putnstr(s, inf.prec, inf.fd);
- else
- len += pf_putstr(s, inf.fd);
- if (inf.width > 0 && inf.min == 1)
- while (len < inf.width && len++ >= 0)
- ft_putchar_fd(' ', inf.fd);
- if (s)
- free(s);
- return (len);
- }
- int pf_c_up(va_list ap, t_inf inf)
- {
- wchar_t c;
- char *s;
- int len;
- len = inf.prec == -1 ? 1 : 0;
- c = va_arg(ap, wchar_t);
- s = ft_widechar(c);
- if (c == 0)
- return (1);
- if (inf.width > 0 && inf.min == 0)
- while (pf_width_c_up(s, inf, len) && len++ >= 0)
- ft_putchar_fd((inf.zero == 0 ? ' ' : '0'), inf.fd);
- if (inf.prec == -1 && c != 0)
- return (len - 1);
- return (pf_c_up2(inf, s, len));
- }
|