printf fd
This commit is contained in:
parent
99ebd75ca7
commit
dd3633f4f7
3 changed files with 26 additions and 8 deletions
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/07 13:22:54 by jhalford #+# #+# */
|
/* Created: 2016/11/07 13:22:54 by jhalford #+# #+# */
|
||||||
/* Updated: 2016/11/07 17:26:13 by jhalford ### ########.fr */
|
/* Updated: 2016/11/16 10:53:57 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -42,6 +42,8 @@ struct s_fmt
|
||||||
t_conv conv;
|
t_conv conv;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int ft_vdprintf(int fd, const char *format, va_list ap);
|
||||||
|
|
||||||
extern t_conv g_convs[];
|
extern t_conv g_convs[];
|
||||||
|
|
||||||
t_fmt *ft_fmt_init(void);
|
t_fmt *ft_fmt_init(void);
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/07 13:49:04 by jhalford #+# #+# */
|
/* Created: 2016/11/07 13:49:04 by jhalford #+# #+# */
|
||||||
/* Updated: 2016/11/08 11:25:08 by jhalford ### ########.fr */
|
/* Updated: 2016/11/16 10:53:34 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -117,4 +117,5 @@ int ft_time_isrecent(time_t event);
|
||||||
char *ft_path_notdir(char *path);
|
char *ft_path_notdir(char *path);
|
||||||
|
|
||||||
int ft_printf(const char *format, ...);
|
int ft_printf(const char *format, ...);
|
||||||
|
int ft_dprintf(int fd, const char *format, ...);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/11/07 13:33:27 by jhalford #+# #+# */
|
/* Created: 2016/11/07 13:33:27 by jhalford #+# #+# */
|
||||||
/* Updated: 2016/11/07 16:20:10 by jhalford ### ########.fr */
|
/* Updated: 2016/11/16 10:55:16 by jhalford ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -27,12 +27,26 @@ t_conv g_convs[] =
|
||||||
|
|
||||||
int ft_printf(const char *format, ...)
|
int ft_printf(const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list ap1;
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, format);
|
||||||
|
return(ft_vdprintf(0, format, ap));
|
||||||
|
}
|
||||||
|
|
||||||
|
int ft_dprintf(int fd, const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, format);
|
||||||
|
return(ft_vdprintf(fd, format, ap));
|
||||||
|
}
|
||||||
|
|
||||||
|
int ft_vdprintf(int fd, const char *format, va_list ap)
|
||||||
|
{
|
||||||
char *str;
|
char *str;
|
||||||
char final[1000];
|
char final[1000];
|
||||||
t_fmt *fmt;
|
t_fmt *fmt;
|
||||||
|
|
||||||
va_start(ap1, format);
|
|
||||||
str = ft_strdup(format);
|
str = ft_strdup(format);
|
||||||
ft_bzero(final, 1000);
|
ft_bzero(final, 1000);
|
||||||
while (*str)
|
while (*str)
|
||||||
|
|
@ -40,16 +54,17 @@ int ft_printf(const char *format, ...)
|
||||||
if (*str == '%')
|
if (*str == '%')
|
||||||
{
|
{
|
||||||
str++;
|
str++;
|
||||||
if (!(fmt = ft_printf_parse(&str, ap1)))
|
if (!(fmt = ft_printf_parse(&str, ap)))
|
||||||
return (1);
|
return (1);
|
||||||
if (!fmt->valid)
|
if (!fmt->valid)
|
||||||
ft_strncat(final, &fmt->conversion, 1);
|
ft_strncat(final, &fmt->conversion, 1);
|
||||||
else
|
else
|
||||||
ft_strcat(final, ft_transform(fmt, ap1));
|
ft_strcat(final, ft_transform(fmt, ap));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ft_strncat(final, str++, 1);
|
ft_strncat(final, str++, 1);
|
||||||
}
|
}
|
||||||
ft_putstr(final);
|
ft_putstr_fd(final, fd);
|
||||||
|
ft_strdel(&str);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue