コード例 #1
0
int					convert_unsigned(va_list *ap, t_data *data, int *i, char c)
{
	uintmax_t	arg;
	char		*str;
	int			ret;

	(*i)++;
	arg = get_unsigned_arg(ap, data->length);
	if (data->precision == -42 && !arg)
		return (convert_unsigned_0(data, c));
	str = ft_itoa_base(arg, c);
	if (data->sharp && data->zero && data->width - 2 >
		(int)ft_strlen(str) && !data->precision)
		str = apply_precision(str, data->width - 2 - ft_strlen(str));
	if (data->precision > (int)ft_strlen(str))
		str = apply_precision(str, data->precision - ft_strlen(str));
	if (data->sharp && arg)
		str = convert_unsigned_helper(str, c);
	if (data->width > (int)ft_strlen(str))
		str = apply_width(str, data, data->width - ft_strlen(str));
	if (c == 'X')
		ft_strmaj(str);
	ft_putstr(str);
	ret = ft_strlen(str);
	ft_strdel(&str);
	return (ret);
}
コード例 #2
0
ファイル: flag_x.c プロジェクト: FredericCosnefroy/ft_printf
int					flag_x(t_format f, va_list *ap)
{
	unsigned long long int		nb;
	char						c;
	int							left;
	int							len;

	left = (ft_strchr(f.flags, '-') ? 0 : 1);
	nb = get_unsigned_arg(f.modifier, ap);
	get_out(&f, nb, &c);
	len = 0;
	if ((left ? c : ' ') != '0')
		f.out = add_prefix(&f, nb);
	else
	{
		if (ft_strchr(f.flags, '#') && nb != 0)
			len -= 2;
	}
	len += f.length - ft_strlen(f.out);
	f.out = add_string(&f, len, (left ? c : ' '), left);
	if ((left ? c : ' ') == '0')
		f.out = add_prefix(&f, nb);
	ft_putstr(f.out);
	len = ft_strlen(f.out);
	free(f.out);
	return (len);
}
コード例 #3
0
ファイル: flag_x.c プロジェクト: Julow/fdf
void			flag_x(t_string *out, t_opt *opt, va_list *ap)
{
	char			*hex;
	t_ulong			x;
	t_string		tmp;

	x = get_unsigned_arg(opt, ap);
	if (x == 0 && opt->preci_set && opt->preci == 0)
	{
		add_string(out, "", 0, opt);
		return ;
	}
	if (opt->format->name == 'x')
		hex = ft_itobase(x, "0123456789abcdef");
	else
		hex = ft_itobase(x, "0123456789ABCDEF");
	ft_stringini(&tmp);
	if (ft_strchr(opt->flags, '#') && x > 0)
		ft_stringadd(&tmp, (opt->format->name == 'x') ? "0x" : "0X");
	ft_stringadd(&tmp, hex);
	pad_preci(&tmp, (ft_strchr(opt->flags, '#') && x > 0) ? 2 : 0, opt);
	add_string(out, tmp.content, tmp.length, opt);
	free(tmp.content);
	free(hex);
}
コード例 #4
0
ファイル: get_argument.c プロジェクト: Champii/microkernel
unsigned                  get_str_arg(void **params, char *str)
{
  unsigned                str_size;

  str_size = get_unsigned_arg(params);

  memcpy(str, *params, str_size);

  *params += str_size;

  return str_size;
}
コード例 #5
0
ファイル: write.c プロジェクト: Champii/microkernel
void                      write_rpc(u64 sender, void *params, u32 param_size, void *ret, unsigned *ret_size)
{
  char str[1024];

  sender = sender;
  param_size = param_size;

  unsigned color = get_unsigned_arg(&params);
  unsigned str_size = get_str_arg(&params, str);

  str_size = str_size;

  printk(color, str);

  *(unsigned *)ret = 0;
  *ret_size = 4;
}