/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_printf.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/07 13:31:16 by tmaze #+# #+# */ /* Updated: 2019/02/11 14:00:11 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ #include "libftprintf.h" int pf_convp(t_flags *flags, va_list *ap) { flags = NULL; ap = NULL; return (1); } int pf_convd(t_flags *flags, va_list *ap) { flags = NULL; ap = NULL; return (1); } int pf_convi(t_flags *flags, va_list *ap) { flags = NULL; ap = NULL; return (1); } int pf_convo(t_flags *flags, va_list *ap) { flags = NULL; ap = NULL; return (1); } int pf_convu(t_flags *flags, va_list *ap) { flags = NULL; ap = NULL; return (1); } int pf_convx(t_flags *flags, va_list *ap) { flags = NULL; ap = NULL; return (1); } int pf_convf(t_flags *flags, va_list *ap) { flags = NULL; ap = NULL; return (1); } int ft_printf(const char *format, ...) { va_list ap; size_t i; size_t j; t_flags flags; static int (*convf[11])(t_flags *flags, va_list *ap) = {pf_convc, pf_convc, pf_convs, pf_convp, pf_convd, pf_convi, pf_convo, pf_convu, pf_convx, pf_convx, pf_convf}; va_start(ap, format); flags.buffer = NULL; i = 0; while (format[i]) { j = 0; while (format[i + j] && format[i + j] != '%') j++; write(1, &format[i], j); i += j; if (format[i] == '%') { pf_getflags(&format[i], &flags); if ((j = (*convf[flags.convtype])(&flags, &ap)) != -1) { va_end(ap); return (-1); } i += j; write(1, flags.buffer, pf_strlen(flags.buffer)); free(flags.buffer); } } return (i); }