Пример #1
0
wchar_t	*ft_wstrndup(wchar_t *s1, int n)
{
	wchar_t		*dest;
	int			i;

	i = 0;
	if (ft_wstrlen(s1) >= n)
		dest = ft_wstrnew(n);
	else
		dest = ft_wstrnew(ft_wstrlen(s1));
	while (s1[i] != '\0' && n > 0)
	{
		if (n >= ft_wcharlen(s1[i]))
		{
			dest[i] = s1[i];
			n -= ft_wcharlen(s1[i]);
			i++;
		}
		else
		{
			n = 0;
			dest[i + 1] = '\0';
		}
	}
	return (dest);
}
Пример #2
0
int				wstr(t_m *m, char buf[MAX])
{
	wchar_t	*arg;
	int		l;
	int		i;
	int		p;
	int		w;

	arg = extract_wstring(m);
	if (!ft_wstrncmp(arg, L"", ((l = ft_wstrlen(arg)) ? l : 1)))
	{
		arg = m->place->precision ? ft_wstrnew(m->place->precision) : arg;
		m->place->precision = 0;
	}
	p = !m->place->precision ? ft_wstrlen(arg) : m->place->precision;
	w = m->place->width - p;
	i = -1;
	if (!(m->place->flags & MINUS))
		while (w-- > 0)
			buf[m->pos_b++] = (char)L' ';
	while (arg[++i] && i < p)
		buf[m->pos_b++] = (char)arg[i];
	if (m->place->flags & MINUS)
		while (w-- > 0)
			buf[m->pos_b++] = (char)L' ';
	return (0);
}
Пример #3
0
wchar_t		*op_csmaj(wchar_t *str, t_op *op)
{
	if (op->dot == 1 && op->pre == 0 && op->type == 'S')
		str = ft_wstrnew(1);
	else if (op->dot == 1 && (op->type == 's' || op->type == 'S'))
		str = ft_wstrsub(str, 0, op->pre);
	while (op->width >= bytes_len_str(str) + 1)
	{
		if (op->minus == 1)
			str = ft_wstrjoin(str, L" ");
		else
		{
			if (op->zero == 1)
				str = ft_wstrjoin(L"0", str);
			else
				str = ft_wstrjoin(L" ", str);
		}
	}
	return (str);
}