-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstore_conv.c
73 lines (66 loc) · 1.95 KB
/
store_conv.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/* ************************************************************************** */
/* */
/* :::::::: */
/* store_conv.c :+: :+: */
/* +:+ */
/* By: jsaariko <[email protected]> +#+ */
/* +#+ */
/* Created: 2020/02/19 14:04:08 by jsaariko #+# #+# */
/* Updated: 2020/03/06 17:50:45 by jsaariko ######## odam.nl */
/* */
/* ************************************************************************** */
#include "ft_printf.h"
void store_uint(char chr, t_printf_arg **cur, va_list ap)
{
(*cur)->arg.u = va_arg(ap, unsigned int);
if (chr == 'u')
(*cur)->conv = u;
else if (chr == 'X')
(*cur)->conv = X;
else if (chr == 'x')
(*cur)->conv = x;
}
void store_int(char chr, t_printf_arg **cur, va_list ap)
{
(*cur)->arg.i = va_arg(ap, int);
if (chr == 'd')
(*cur)->conv = d;
else if (chr == 'i')
(*cur)->conv = i;
}
void store_char(char chr, t_printf_arg **cur, va_list ap)
{
(*cur)->conv = c;
if (chr == '%')
(*cur)->arg.c = '%';
else
(*cur)->arg.c = va_arg(ap, int);
}
void store_float(t_printf_arg **cur, va_list ap)
{
(*cur)->conv = f;
(*cur)->arg.f = va_arg(ap, double);
}
int store_other(char chr, t_printf_arg **cur, va_list ap)
{
char *tmp;
if (chr == 's')
{
tmp = va_arg(ap, char *);
if (tmp != NULL)
{
(*cur)->arg.s = ft_strdup(tmp);
if (!(*cur)->arg.s)
return (-1);
}
else
(*cur)->arg.s = ft_strdup("(null)");
(*cur)->conv = s;
}
else if (chr == 'p')
{
(*cur)->arg.p = va_arg(ap, unsigned long);
(*cur)->conv = p;
}
return (1);
}