| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /* ************************************************************************** */
- /* */
- /* ::: :::::::: */
- /* pf_more_inf.c :+: :+: :+: */
- /* +:+ +:+ +:+ */
- /* By: bchanot <bchanot@students.42.fr> +#+ +:+ +#+ */
- /* +#+#+#+#+#+ +#+ */
- /* Created: 2016/03/10 02:39:52 by bchanot #+# #+# */
- /* Updated: 2016/11/08 11:10:31 by bchanot ### ########.fr */
- /* */
- /* ************************************************************************** */
- #include "libftprintf.h"
- int pf_wrong_conv(char **str, const char **format, t_inf inf, int *len)
- {
- int cpt;
- cpt = 0;
- if (**str == '\0')
- {
- *format = *str;
- return (1);
- }
- if (inf.width > 0 && inf.min == 0)
- while (++cpt < inf.width)
- {
- ft_putchar_fd((inf.zero == 1 ? '0' : ' '), inf.fd);
- *len += 1;
- }
- ft_putchar_fd(**str, inf.fd);
- if (inf.width > 0 && inf.min == 1)
- while (++cpt < inf.width)
- {
- ft_putchar_fd(' ', inf.fd);
- *len += 1;
- }
- *format = *str + 1;
- *len += 1;
- return (0);
- }
- int pf_more_flag(char **s, t_inf *inf)
- {
- if (**s == 'j')
- inf->j = 1;
- if (**s == 'z')
- inf->z = 1;
- if (**s == 'l')
- {
- *s += 1;
- if (**s == 'l')
- inf->ll = 1;
- else
- return (inf->l = 1);
- }
- if (**s == 'h')
- {
- *s += 1;
- if (**s == 'h')
- inf->hh = 1;
- else
- return (inf->h = 1);
- }
- return (0);
- }
- void take_prec(char **s, t_inf *inf, va_list ap, int cpt)
- {
- inf->prec = 0;
- *s += 1;
- if (**s == '*' && cpt++ >= 0)
- {
- inf->prec = va_arg(ap, int);
- if (inf->prec < 0)
- inf->prec = -1;
- *s += 1;
- }
- else
- {
- while (ft_isdigit(**s) && cpt++ >= 0)
- {
- inf->prec = inf->prec * 10 + **s - '0';
- *s += 1;
- }
- }
- if (cpt == 0 || inf->prec == 0)
- inf->prec = -1;
- else if (inf->prec == -1)
- inf->prec = 0;
- }
- static int pf_more_color_please(char tmp[8], int fd)
- {
- if (ft_strstr(tmp, "red"))
- ft_putstr_fd(RED, fd);
- else if (ft_strstr(tmp, "black"))
- ft_putstr_fd(BLACK, fd);
- else if (ft_strstr(tmp, "green"))
- ft_putstr_fd(GREEN, fd);
- else if (ft_strstr(tmp, "yellow"))
- ft_putstr_fd(YELLOW, fd);
- else if (ft_strstr(tmp, "blue"))
- ft_putstr_fd(BLUE, fd);
- else if (ft_strstr(tmp, "purple"))
- ft_putstr_fd(PURPLE, fd);
- else if (ft_strstr(tmp, "cyan"))
- ft_putstr_fd(CYAN, fd);
- else if (ft_strstr(tmp, "grey"))
- ft_putstr_fd(GREY, fd);
- else if (ft_strstr(tmp, "eoc"))
- ft_putstr_fd(EOC, fd);
- else
- return (0);
- return (1);
- }
- int pf_take_color(char **str, const char **format, int *len, int fd)
- {
- int cpt;
- char tmp[8];
- cpt = 0;
- tmp[7] = '\0';
- *len += pf_print_part(*format, *str, fd);
- *str += 1;
- while (**str != '}' && cpt < 7)
- {
- tmp[cpt] = **str;
- *str += 1;
- cpt++;
- }
- *str += 1;
- if (!pf_more_color_please(tmp, fd))
- {
- *str -= cpt + 2;
- *format = *str;
- return (0);
- }
- *format = *str;
- return (1);
- }
|