Ejemplo n.º 1
0
static int			octal_min_h(t_struct data, unsigned short nbr, int i)
{
	int		j;
	int		k;
	int		l;

	l = data.flag & 1 ? 2 : 0;
	k = 0;
	j = i;
	if (data.flag & 1 && data.min != 0 && data.flag & 2)
	{
		if (data.flag & 1 && nbr != 0)
			k += pf_putchar('0');
		while (k < data.min - (data.prec < j ? 0 : data.prec))
			k += pf_putchar(data.flag & 2 ? '0' : ' ');
	}
	else
	{
		while (k < data.min - (data.prec < j ? j : data.prec))
			k += pf_putchar(data.flag & 2 ? '0' : ' ');
		if (data.flag & 1 && nbr != 0)
			k += pf_putchar('0');
	}
	k += put_prec_nbr(data.prec - j);
	if (data.prec != -1 || nbr != 0)
		pf_putoctal_noflag_h(nbr);
	return (k);
}
Ejemplo n.º 2
0
static int			deci_min_l(t_struct data, long nbr, int i)
{
	int		j;
	int		k;

	k = 0;
	j = i;
	i = (data.flag & 8 || data.flag & 16) && !(data.flag & 2) ? 1 : 0;
	i += nbr < 0 && data.prec == j ? 1 : 0;
	i += nbr < 0 && data.prec > 0 && !(data.flag & 2) && j < data.prec ? 1 : 0;
	if (data.prec > 0 && data.flag & 2)
		data.flag -= 2;
	if (nbr < 0 && data.flag & 2)
		ft_putchar('-');
	if ((data.flag & 16 || data.flag & 8) && nbr >= 0 && data.flag & 2)
		k += pf_putchar(data.flag & 8 ? '+' : ' ');
	while (k < data.min - (data.prec > j ? data.prec : j) - i)
		k += pf_putchar(data.flag & 2 ? '0' : ' ');
	if (nbr >= 0 && !(data.flag & 2) && (data.flag & 16 || data.flag & 8))
		k += pf_putchar(data.flag & 8 ? '+' : ' ');
	if (nbr < 0 && data.min > 0 && !(data.flag & 2) && !(data.flag & 8))
		ft_putchar('-');
	k += put_prec_nbr(data.prec - j + (data.prec >= j && nbr < 0 ? 1 : 0));
	if (data.prec != -1)
		ft_putnbr_l(nbr, 2);
	return (k);
}
Ejemplo n.º 3
0
void		conv_str(char *str, t_flags *flags, int *ret)
{
	int		counter;
	char	*tmp;

	counter = 0;
	tmp = str;
	while (*tmp && (counter < flags->precision || flags->precision < 0))
	{
		counter++;
		tmp += 1;
	}
	flags->padding -= counter;
	while (!flags->left && flags->padding > 0)
	{
		flags->padding -= 1;
		flags->zero ? pf_putchar('0', ret) : pf_putchar(' ', ret);
	}
	pf_putstr(str, flags, ret);
	while (flags->left && flags->padding > 0)
	{
		flags->padding -= 1;
		pf_putchar(' ', ret);
	}
}
Ejemplo n.º 4
0
void		conv_lstr(wchar_t *str, t_flags *flags, int *ret)
{
	int		counter;
	wchar_t	*tmp;

	tmp = str;
	counter = 0;
	while (*tmp && (counter < flags->precision || flags->precision < 0))
	{
		counter += nb_bytes(*tmp);
		tmp += 1;
	}
	if (flags->precision > 0 && counter > flags->precision)
		counter -= nb_bytes(*(tmp - 1));
	flags->padding -= counter;
	while (!flags->left && flags->padding > 0)
	{
		flags->padding -= 1;
		flags->zero ? pf_putchar('0', ret) : pf_putchar(' ', ret);
	}
	pf_putwstr(str, flags, ret);
	while (flags->left && flags->padding > 0)
	{
		flags->padding -= 1;
		pf_putchar(' ', ret);
	}
}
Ejemplo n.º 5
0
static int			octal_min_j(t_struct data, uintmax_t nb, int i)
{
	int		j;
	int		ret;
	int		l;

	l = data.flag & 1 ? 2 : 0;
	ret = 0;
	j = i;
	if (data.flag & 1 && data.min != 0 && data.flag & 2)
	{
		if (data.flag & 1 && nb != 0)
			ret += pf_putchar('0');
		while (ret < data.min - (data.prec < j ? 0 : data.prec))
			ret += pf_putchar(data.flag & 2 ? '0' : ' ');
	}
	else
	{
		while (ret < data.min - (data.prec < j ? j : data.prec))
			ret += pf_putchar(data.flag & 2 ? '0' : ' ');
		if (data.flag & 1 && nb != 0)
			ret += pf_putchar('0');
	}
	ret += put_prec_nb(data.prec - j);
	if (data.prec != -1 || nb != 0)
		pf_putoctal_noflag_j(nb);
	return (ret);
}
Ejemplo n.º 6
0
static int			deci_min_h(t_struct data, short nb, int i)
{
	int		j;
	int		ret;

	ret = 0;
	j = i;
	i = (data.flag & 8 || data.flag & 16) && !(data.flag & 2) ? 1 : 0;
	i += nb < 0 && data.prec == j ? 1 : 0;
	i += nb < 0 && data.prec > 0 && !(data.flag & 2) && j < data.prec ? 1 : 0;
	if (data.prec > 0 && data.flag & 2)
		data.flag -= 2;
	if (nb < 0 && data.flag & 2)
		ft_putchar('-');
	if ((data.flag & 16 || data.flag & 8) && nb >= 0 && data.flag & 2)
		ret += pf_putchar(data.flag & 8 ? '+' : ' ');
	while (ret < data.min - (data.prec > j ? data.prec : j) - i)
		ret += pf_putchar(data.flag & 2 ? '0' : ' ');
	if (nb >= 0 && !(data.flag & 2) && (data.flag & 16 || data.flag & 8))
		ret += pf_putchar(data.flag & 8 ? '+' : ' ');
	if (nb < 0 && data.min > 0 && !(data.flag & 2) && !(data.flag & 8))
		ft_putchar('-');
	ret += put_prec_nb(data.prec - j + (data.prec >= j && nb < 0 ? 1 : 0));
	if (data.prec != -1)
		ft_putnb_h(nb, 2);
	return (ret);
}
Ejemplo n.º 7
0
int		hexa_min_ll(t_struct data, unsigned long long nb, int i, int lower)
{
	int		j;
	int		ret;
	int		l;

	l = data.flag & 1 ? 2 : 0;
	ret = 0;
	j = i;
	if (data.flag & 1 && data.min != 0 && data.flag & 2)
	{
		if (data.flag & 0b00000001 && nb != 0)
			ret += pf_putstr(lower == 1 ? "0x" : "0X");
		while (ret < data.min - (data.prec < j ? 0 : data.prec))
			ret += pf_putchar(data.flag & 0b00000010 ? '0' : ' ');
	}
	else
	{
		while (ret < data.min - (data.prec < j ? j : data.prec))
			ret += pf_putchar(data.flag & 0b00000010 ? '0' : ' ');
		if (data.flag & 0b00000001 && nb != 0)
			ret += pf_putstr(lower == 1 ? "0x" : "0X");
	}
	ret += put_prec_nb(data.prec - j);
	pf_puthexa_noflag_ll(nb, lower);
	return (ret);
}
Ejemplo n.º 8
0
static int			octal_hash_j(t_struct data, uintmax_t nb, int i)
{
	int		j;
	int		ret;

	ret = 0;
	j = i;
	if (data.flag & 1 && nb != 0)
		ret += pf_putchar('0');
	ret += put_prec_nb(data.prec - j);
	if (data.prec != -1)
		pf_putoctal_noflag_j(nb);
	while (ret < data.min + (data.flag & 1 ? 2 : 0) - j)
		ret += pf_putchar(' ');
	return (ret);
}
Ejemplo n.º 9
0
int			pf_until_conv(size_t *i, va_list ap, char const *str)
{
	t_struct	data;

	*i += 1;
	data = init_data();
	if (str[*i] == '%')
		return (pf_putchar(str[*i++]));
	while (str[*i] && str[*i] != '%' && pf_isconver(str[*i]) == 0)
	{
		if (pf_isflag(str[*i]) == 0 && pf_isclong(str[*i], str[*i + 1]) == 0
			&& pf_isnum(str[*i]) == 0 && str[*i] != '.')
		{
			*i -= 1;
			return (0);
		}
		pf_fill_struct((char *)str, i, &data, ap);
		*i += 1;
	}
	if (data.min < 0)
	{
		data.flag = data.flag | 4;
		data.min = -data.min;
	}
	if (str[*i] == '\0')
		return (0);
	return (pf_print_var(data, str[*i], ap));
}
Ejemplo n.º 10
0
static int			octal_hash_h(t_struct data, unsigned short nbr, int i)
{
	int		j;
	int		k;

	k = 0;
	j = i;
	if (data.flag & 1 && nbr != 0)
		k += pf_putchar('0');
	k += put_prec_nbr(data.prec - j);
	if (data.prec != -1)
		pf_putoctal_noflag_h(nbr);
	while (k < data.min + (data.flag & 1 ? 2 : 0) - j)
		k += pf_putchar(' ');
	return (k);
}
Ejemplo n.º 11
0
static int			deci_hash_l(t_struct data, long nbr, int i)
{
	int		j;
	int		k;

	k = 0;
	j = i;
	if ((data.flag & 16 || data.flag & 8) && nbr >= 0)
		k += pf_putchar(data.flag & 8 ? '+' : ' ');
	k += put_prec_nbr(data.prec - j);
	if (nbr < 0 && data.prec != -1)
		ft_putchar('-');
	if (data.prec != -1)
		ft_putnbr_l(nbr, 2);
	while (k < data.min + (data.flag & 1 ? 2 : 0) - j)
		k += pf_putchar(' ');
	return (k);
}
Ejemplo n.º 12
0
static int			deci_hash_h(t_struct data, short nb, int i)
{
	int		j;
	int		ret;

	ret = 0;
	j = i;
	if ((data.flag & 16 || data.flag & 8) && nb >= 0)
		ret += pf_putchar(data.flag & 8 ? '+' : ' ');
	ret += put_prec_nb(data.prec - j);
	if (nb < 0 && data.prec != -1)
		ft_putchar('-');
	if (data.prec != -1)
		ft_putnb_h(nb, 2);
	while (ret < data.min + (data.flag & 1 ? 2 : 0) - j)
		ret += pf_putchar(' ');
	return (ret);
}
Ejemplo n.º 13
0
int		char_conv_l(t_struct data, wchar_t ch)
{
	int		ret;

	ret = 0;
	if (data.flag & 4)
	{
		ret += pf_putcharuni(ch);
		while (ret < data.min)
			ret += pf_putchar(' ');
	}
	else
	{
		while (ret < data.min - 1)
			ret += pf_putchar(' ');
		ret += pf_putcharuni(ch);
	}
	return (ret);
}
Ejemplo n.º 14
0
static int			deci_prec_l(t_struct data, long nbr, int i)
{
	int		k;

	k = 0;
	k += put_prec_nbr(data.prec - i + (nbr < 0 ? 1 : 0));
	if ((data.flag & 16 || data.flag & 8) && nbr >= 0)
		k += pf_putchar(data.flag & 8 ? '+' : ' ');
	ft_putnbr_l(nbr, 2);
	return (k);
}
Ejemplo n.º 15
0
static int			deci_prec_h(t_struct data, short nb, int i)
{
	int		ret;

	ret = 0;
	ret += put_prec_nb(data.prec - i + (nb < 0 ? 1 : 0));
	if ((data.flag & 16 || data.flag & 8) && nb >= 0)
		ret += pf_putchar(data.flag & 8 ? '+' : ' ');
	ft_putnb_h(nb, 2);
	return (ret);
}
Ejemplo n.º 16
0
static int			octal_prec_h(t_struct data, unsigned short nbr, int i)
{
	int		k;

	k = 0;
	k += put_prec_nbr(data.prec - i);
	if (data.flag & 1)
		k += pf_putchar('0');
	if (data.prec != -1)
		pf_putoctal_noflag_h(nbr);
	return (k);
}
Ejemplo n.º 17
0
static int			mem_min(t_struct data, int j, size_t nbr)
{
	int		k;

	k = 0;
	ft_putstr("0x");
	k += put_prec_nbr(data.prec > j - 2 ? data.prec - (j - 2) : 0);
	k += pf_retmem_noclong(nbr, 0);
	while (k < data.min)
		k += pf_putchar(data.flag & 2 ? '0' : ' ');
	return (k);
}
Ejemplo n.º 18
0
static int			octal_prec_j(t_struct data, uintmax_t nb, int i)
{
	int		ret;

	ret = 0;
	ret += put_prec_nb(data.prec - i);
	if (data.flag & 1)
		ret += pf_putchar('0');
	if (data.prec != -1)
		pf_putoctal_noflag_j(nb);
	return (ret);
}
Ejemplo n.º 19
0
static int		string_size_l(t_struct data, wchar_t *str, size_t k)
{
	size_t	i;
	size_t	j;
	size_t	l;
	size_t	m;

	j = str == NULL ? 0 : (int)ft_strwlen(str);
	i = 0;
	m = (size_t)data.min;
	l = (size_t)data.prec;
	if (data.prec == 0)
		while (k < data.min - j)
			k += pf_putchar(data.flag & 2 ? '0' : ' ');
	else
		while (k < (size_t)data.min - (l > j ? j : data.prec) && k < m)
			k += pf_putchar(data.flag & 2 ? '0' : ' ');
	if (j > 0 && data.prec != -1)
		while (i < j && (data.prec == 0 ? i < j : i < l) && str[i])
			k += pf_putcharuni(str[i++]);
	return (k);
}
Ejemplo n.º 20
0
static int			unsigned_hash_hh(t_struct data, unsigned char nbr, int i)
{
	int		j;
	int		k;

	k = 0;
	j = i;
	k += put_prec_nbr(data.prec - j);
	if (data.prec != -1)
		ft_putunsigned_hh(nbr, 2);
	while (k < data.min + (data.flag & 1 ? 2 : 0) - j)
		k += pf_putchar(' ');
	return (k);
}
Ejemplo n.º 21
0
static int		string_prec_l(t_struct data, wchar_t *str, size_t k)
{
	size_t	i;
	size_t	j;

	i = 0;
	j = str == NULL ? 0 : (int)ft_strwlen(str);
	while (k < (data.min - j > 0 ? 0 : data.min - j))
		k += pf_putchar(data.flag & 2 ? '0' : ' ');
	if (data.prec != -1)
		while (i < ((size_t)data.prec > j ? j : data.prec) && str[i])
			k += pf_putcharuni(str[i++]);
	return (k);
}
Ejemplo n.º 22
0
static int		unsigned_hash_ll(t_struct data, unsigned long long nb, int i)
{
	int		j;
	int		ret;

	ret = 0;
	j = i;
	ret += put_prec_nb(data.prec - j);
	if (data.prec != -1)
		ft_putunsigned_ll(nb, 2);
	while (ret < data.min + (data.flag & 1 ? 2 : 0) - j)
		ret += pf_putchar(' ');
	return (ret);
}
Ejemplo n.º 23
0
int		hexa_hash_ll(t_struct data, unsigned long long nb, int i, int lower)
{
	int		j;
	int		ret;

	ret = 0;
	j = i;
	if (data.flag & 0b00000001 && nb != 0)
		ret += pf_putstr(lower == 1 ? "0x" : "0X");
	ret += put_prec_nb(data.prec - j);
	pf_puthexa_noflag_ll(nb, lower);
	while (ret < data.min + (data.flag & 1 ? 2 : 0) - j)
		ret += pf_putchar(' ');
	return (ret);
}
Ejemplo n.º 24
0
static int			mem_conv_prec(t_struct data, size_t nbr, int j, int k)
{
	if (data.flag & 2)
		ft_putstr("0x");
	while (k < data.min - j)
		k += pf_putchar(data.flag & 2 ? '0' : ' ');
	if (!(data.flag & 2))
		ft_putstr("0x");
	k += put_prec_nbr(0);
	if (data.prec == -1)
		k += pf_retmem_noclong(nbr, 2) - 1;
	else
		k += pf_retmem_noclong(nbr, 0);
	return (k);
}
Ejemplo n.º 25
0
static int		string_min_l(t_struct data, wchar_t *str, size_t k)
{
	int		i;
	size_t	j;
	size_t	l;

	j = str == NULL ? 0 : (int)ft_strwlen(str);
	i = 0;
	l = (size_t)data.prec;
	if (data.prec != -1)
		while (k < j && (data.prec == 0 ? k < j : k < l) && str[i])
			k += pf_putcharuni(str[i++]);
	while (k < (size_t)data.min)
		k += pf_putchar(data.flag & 2 ? '0' : ' ');
	return (k);
}
Ejemplo n.º 26
0
void		pf_putstr(char *str, t_flags *flags, int *ret)
{
	if (!str)
	{
		write(1, "(null)", 6);
		*ret += 6;
		return ;
	}
	while (*str && flags->precision)
	{
		if (flags->precision > 0)
			flags->precision -= 1;
		if (flags->precision >= 0 || flags->precision == -4)
			pf_putchar(*str, ret);
		str += 1;
	}
}
Ejemplo n.º 27
0
static int		unsigned_min_ll(t_struct data, unsigned long long nb, int i)
{
	int		j;
	int		ret;

	ret = 0;
	j = i;
	i = (data.flag & 8 || data.flag & 16) && !(data.flag & 2) ? 1 : 0;
	i += data.prec == j ? 1 : 0;
	if (data.prec > 0 && data.flag & 2)
		data.flag -= 2;
	while (ret < data.min - (data.prec > j ? data.prec : j) - i)
		ret += pf_putchar(data.flag & 2 ? '0' : ' ');
	ret += put_prec_nb(data.prec - j);
	if (data.prec != -1)
		ft_putunsigned_ll(nb, 2);
	return (ret);
}
Ejemplo n.º 28
0
static int			unsigned_min_hh(t_struct data, unsigned char nbr, int i)
{
	int		j;
	int		k;

	k = 0;
	j = i;
	i = (data.flag & 8 || data.flag & 16) && !(data.flag & 2) ? 1 : 0;
	i += data.prec == j ? 1 : 0;
	if (data.prec > 0 && data.flag & 2)
		data.flag -= 2;
	while (k < data.min - (data.prec > j ? data.prec : j) - i)
		k += pf_putchar(data.flag & 2 ? '0' : ' ');
	k += put_prec_nbr(data.prec - j);
	if (data.prec != -1)
		ft_putunsigned_hh(nbr, 2);
	return (k);
}
Ejemplo n.º 29
0
/*
** Writes width - done  chars
** The char written depends on the attribut
*/
int		filled_width(int width, int done , int attribut, int nb)
{
  char		c;
  int		occur;

  occur = width - done;
  if (occur < 0)
    {
      occur = 0;
      done = width;
    }
  if ((attribut & att_zero) && nb)
    c = '0';
  else
    c = ' ';
  while (done++ < width)
    pf_putchar(c);
  return (occur);
}
Ejemplo n.º 30
0
int					mem_conv_noclong(t_struct data, size_t nbr)
{
	int		k;
	int		j;

	k = 0;
	j = pf_retmem_noclong(nbr, 2);
	if (data.flag & 4)
		k += mem_min(data, j, nbr);
	else if (data.prec < 1)
		k += mem_conv_prec(data, nbr, j, k);
	else
	{
		while (k < data.min - (data.prec > j ? data.prec + 2 : j))
			k += pf_putchar(data.flag & 2 ? '0' : ' ');
		ft_putstr("0x");
		k += put_prec_nbr(data.prec > j - 2 ? data.prec - (j - 2) : 0);
		k += pf_retmem_noclong(nbr, 0);
	}
	return (k);
}