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