| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /* ************************************************************************** */
- /* */
- /* ::: :::::::: */
- /* pf_s.c :+: :+: :+: */
- /* +:+ +:+ +:+ */
- /* By: bchanot <bchanot@students.42.fr> +#+ +:+ +#+ */
- /* +#+#+#+#+#+ +#+ */
- /* Created: 2016/02/27 01:48:47 by bchanot #+# #+# */
- /* Updated: 2018/10/14 03:43:12 by bchanot ### ########.fr */
- /* */
- /* ************************************************************************** */
- #include "libftprintf.h"
- int pf_width_s(char *s, t_inf inf, int len)
- {
- if (ft_strlen(s) && 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);
- }
- int pf_s(va_list ap, t_inf inf)
- {
- char *s;
- int len;
- len = inf.prec == -1 ? 1 : 0;
- if (inf.l)
- return (pf_s_up(ap, inf));
- if ((s = va_arg(ap, char *)) == NULL)
- s = ft_strdup("(null)");
- if (inf.width > 0 && inf.min == 0)
- while (pf_width_s(s, inf, len) && len++ >= 0)
- ft_putchar_fd((inf.zero == 0 ? ' ' : '0'), inf.fd);
- if (ft_strlen(s) && 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 (!ft_strcmp(s, "(null)"))
- ft_memdel((void **)&s);
- return (len);
- }
|