From 49ad59b0e773e92e93fb69ede889c781ca53e680 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 15 Jan 2020 07:56:02 +0100 Subject: Move *.o -> src/, *.h -> include/ and *.o -> build --- src/ft_printf/convert_int.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/ft_printf/convert_int.c (limited to 'src/ft_printf/convert_int.c') diff --git a/src/ft_printf/convert_int.c b/src/ft_printf/convert_int.c new file mode 100644 index 0000000..2345f76 --- /dev/null +++ b/src/ft_printf/convert_int.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* convert_int.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/10/30 23:29:53 by cacharle #+# #+# */ +/* Updated: 2019/11/06 00:00:09 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_vasprintf.h" + +char *convert_int(va_list ap, t_pformat *pformat) +{ + int is_neg; + long long int n; + char *str; + + n = length_modifier_int(ap, pformat); + is_neg = n < 0; + str = ITOA_DEC(n); + if (is_neg) + ft_strcpy(str, str + 1); + str = handle_precision(pformat, str); + if (pformat->flags & FLAG_ZERO) + { + if (is_neg || pformat->flags & (FLAG_SIGNED | FLAG_SPACE)) + pformat->width--; + str = handle_width(pformat, str); + } + if (is_neg) + str = ft_strjoin_free_snd("-", str); + else if (pformat->flags & (FLAG_SIGNED | FLAG_SPACE)) + str = ft_strjoin_free_snd(pformat->flags & FLAG_SPACE ? " " : "+", str); + if (!(pformat->flags & FLAG_ZERO)) + str = handle_width(pformat, str); + return (str); +} -- cgit