| @@ -0,0 +1,19 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_isprint.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/09 11:19:37 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/09 11:21:13 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| int ft_isprint(char c) | ||
| { | ||
| if (c > 31 && c < 127) | ||
| return (1); | ||
| else | ||
| return (0); | ||
| } |
| @@ -0,0 +1,19 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_isupper.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/09 09:22:47 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/09 09:49:26 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| int ft_isupper(char c) | ||
| { | ||
| if (c >= 65 && c <= 90) | ||
| return (1); | ||
| else | ||
| return (0); | ||
| } |
| @@ -0,0 +1,41 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_itoa.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:18:41 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:18:44 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| char *ft_itoa(int n) | ||
| { | ||
| char *istr; | ||
|
|
||
| istr = (char *)malloc(sizeof(char) * 32); | ||
| if (n == 0) | ||
| *--istr = '0' + n; | ||
| if (n >= 0) | ||
| { | ||
| while (n != 0) | ||
| { | ||
| *--istr = '0' + (n % 10); | ||
| n = n / 10; | ||
| } | ||
| } | ||
| else | ||
| { | ||
| while (n != 0) | ||
| { | ||
| *--istr = '0' - (n % 10); | ||
| n = n / 10; | ||
| } | ||
| *--istr = '-'; | ||
| } | ||
| istr[ft_strlen(istr)] = '\0'; | ||
| return (istr); | ||
| } |
| @@ -0,0 +1,63 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_itobase.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/03 14:41:32 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:21:07 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| static int set_nbr(int n) | ||
| { | ||
| int nbr; | ||
|
|
||
| nbr = 0; | ||
| if (n < 0) | ||
| { | ||
| if (n == -2147483648) | ||
| { | ||
| nbr = n + 1; | ||
| nbr = -nbr; | ||
| } | ||
| else | ||
| { | ||
| nbr = n; | ||
| nbr = -nbr; | ||
| } | ||
| } | ||
| else | ||
| nbr = n; | ||
| return (nbr); | ||
| } | ||
|
|
||
| char *ft_itobase(int n, int base) | ||
| { | ||
| char *basechars; | ||
| char *out; | ||
| int nbr; | ||
| int bc; | ||
|
|
||
| basechars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; | ||
| out = (char *)malloc(sizeof(char) * 32); | ||
| nbr = set_nbr(n); | ||
| bc = 0; | ||
| *out = '\0'; | ||
| if (n == 0) | ||
| *--out = '0'; | ||
| while (nbr != 0) | ||
| { | ||
| bc = nbr % base; | ||
| nbr = nbr / base; | ||
| *--out = basechars[bc]; | ||
| } | ||
| if (n < 0 && base == 10) | ||
| *--out = '-'; | ||
| if (n == -2147483648 && base == 10) | ||
| out[ft_strlen(out) - 1] = '8'; | ||
| return (out); | ||
| } |
| @@ -0,0 +1,23 @@ | ||
| #include "libft.h" | ||
|
|
||
| int *ft_itorgb(int rgbint) | ||
| { | ||
| // if rgbint < 0? | ||
| // if rgbint > x? | ||
| int r; | ||
| int g; | ||
| int b; | ||
| int *rgb; | ||
|
|
||
| r = 0; | ||
| g = 0; | ||
| b = 0; | ||
| rgb = (int *)malloc(sizeof(int) * 3); | ||
| // r = (rgbint >> 16) & 255; | ||
| // g = (rgbint >> 8) & 255; | ||
| // b = rgb & 255; | ||
| rgb[0] = (rgbint >> 16) & 255; | ||
| rgb[1] = (rgbint >> 8) & 255; | ||
| rgb[2] = rgbint & 255; | ||
| return (rgb); | ||
| } |
| @@ -0,0 +1,27 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_lindexof.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/24 15:04:43 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/31 17:13:01 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| int ft_lindexof(const char *str, char c) | ||
| { | ||
| int cnt; | ||
|
|
||
| cnt = ft_strlen(str) - 1; | ||
| while (cnt != 0) | ||
| { | ||
| if (str[cnt] == c) | ||
| return (cnt); | ||
| cnt--; | ||
| } | ||
| return (-1); | ||
| } |
| @@ -0,0 +1,24 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_lstdel.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/08/09 14:22:19 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:22:21 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_lstdel(t_list **alst, void (*del)(void *, size_t)) | ||
| { | ||
| while (*alst != NULL) | ||
| { | ||
| del(&(*alst)->content, (*alst)->content_size); | ||
| free(*alst); | ||
| *alst = NULL; | ||
| *alst = (*alst)->next; | ||
| } | ||
| } |
| @@ -0,0 +1,20 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_lstdelone.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/08/09 14:22:37 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:22:39 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_lstdelone(t_list **alst, void (*del)(void *, size_t)) | ||
| { | ||
| del(&(*alst)->content, (*alst)->content_size); | ||
| free(*alst); | ||
| *alst = NULL; | ||
| } |
| @@ -0,0 +1,37 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_lstnew.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/08/09 14:22:57 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:22:58 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| t_list *ft_lstnew(void const *content, size_t content_size) | ||
| { | ||
| t_list *lst; | ||
|
|
||
| lst = (t_list *)malloc(sizeof(t_list)); | ||
| if (!lst) | ||
| return (NULL); | ||
| if (content == NULL) | ||
| { | ||
| lst->content = NULL; | ||
| lst->content_size = 0; | ||
| } | ||
| else | ||
| { | ||
| lst->content = (void *)malloc(sizeof(content)); | ||
| if (lst->content == NULL) | ||
| return (NULL); | ||
| ft_memcpy(lst->content, content, content_size); | ||
| lst->content_size = content_size; | ||
| } | ||
| lst->next = NULL; | ||
| return (lst); | ||
| } |
| @@ -0,0 +1,30 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_memalloc.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:13:55 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:13:57 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void *ft_memalloc(size_t size) | ||
| { | ||
| unsigned char *mem; | ||
| unsigned int cnt; | ||
|
|
||
| mem = (unsigned char *)malloc(sizeof(unsigned char) * size); | ||
| cnt = 0; | ||
| if (mem == NULL) | ||
| return (NULL); | ||
| while (cnt < size) | ||
| { | ||
| mem[cnt] = 0; | ||
| cnt++; | ||
| } | ||
| return (mem); | ||
| } |
| @@ -0,0 +1,32 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_memccpy.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/10 12:24:52 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/10 13:54:13 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void *ft_memccpy(void *dst, void *src, int c, size_t n) | ||
| { | ||
| unsigned char *d; | ||
| unsigned char *s; | ||
|
|
||
| d = (unsigned char *)dst; | ||
| s = (unsigned char *)src; | ||
| while (n != 0) | ||
| { | ||
| *d = *s; | ||
| if (*s == (unsigned char)c) | ||
| return ((void *)++s); | ||
| d++; | ||
| s++; | ||
| n--; | ||
| } | ||
| return (NULL); | ||
| } |
| @@ -0,0 +1,29 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_memchr.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/10 15:51:31 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/10 16:00:37 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void *ft_memchr(void *s, int c, size_t n) | ||
| { | ||
| size_t cnt; | ||
| unsigned char *s_uc; | ||
|
|
||
| cnt = 0; | ||
| s_uc = (unsigned char *)s; | ||
| while (cnt < n) | ||
| { | ||
| if (s_uc[cnt] == (unsigned char)c) | ||
| return ((void *)&s_uc[cnt]); | ||
| cnt++; | ||
| } | ||
| return (NULL); | ||
| } |
| @@ -0,0 +1,31 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_memcmp.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/10 16:24:41 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/10 17:17:28 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| int ft_memcmp(void *s1, void *s2, size_t n) | ||
| { | ||
| unsigned char *s1_uc; | ||
| unsigned char *s2_uc; | ||
|
|
||
| s1_uc = (unsigned char *)s1; | ||
| s2_uc = (unsigned char *)s2; | ||
| while (n != 0) | ||
| { | ||
| if (s1_uc != s2_uc) | ||
| return (s1_uc - s2_uc); | ||
| s1_uc++; | ||
| s2_uc++; | ||
| n--; | ||
| } | ||
| return (0); | ||
| } |
| @@ -0,0 +1,30 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_memcpy.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/10 17:33:00 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:19:54 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void *ft_memcpy(void *dst, void const *src, size_t n) | ||
| { | ||
| char *d; | ||
| char *s; | ||
|
|
||
| d = (char *)dst; | ||
| s = (char *)src; | ||
| while (n != 0) | ||
| { | ||
| *d = *s; | ||
| d++; | ||
| s++; | ||
| n--; | ||
| } | ||
| return (dst); | ||
| } |
| @@ -0,0 +1,19 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_memdel.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:15:04 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:15:09 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_memdel(void **ap) | ||
| { | ||
| free(*ap); | ||
| *ap = 0; | ||
| } |
| @@ -0,0 +1,37 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_memmove.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/10 13:55:44 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/10 15:47:26 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void *ft_memmove(void *dst, void *src, size_t len) | ||
| { | ||
| unsigned char *d; | ||
| unsigned char *s; | ||
|
|
||
| d = (unsigned char *)dst; | ||
| s = (unsigned char *)src; | ||
| if (!d || !s) | ||
| return (0); | ||
| if (d > s) | ||
| { | ||
| d += len; | ||
| s += len; | ||
| while (len-- != 0) | ||
| *--d = *--s; | ||
| } | ||
| else | ||
| { | ||
| while (len-- != 0) | ||
| *d++ = *s++; | ||
| } | ||
| return (dst); | ||
| } |
| @@ -0,0 +1,27 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_memset.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/10 17:32:30 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/11 14:52:57 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void *ft_memset(void *b, int c, size_t len) | ||
| { | ||
| unsigned char *str; | ||
|
|
||
| str = b; | ||
| while (len != 0) | ||
| { | ||
| *str = (unsigned char)c; | ||
| str++; | ||
| len--; | ||
| } | ||
| return (b); | ||
| } |
| @@ -0,0 +1,32 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_prependc.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/31 17:14:19 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/31 17:14:20 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| char *ft_prependc(char *str, int c) | ||
| { | ||
| int len; | ||
| int cnt; | ||
| char *out_str; | ||
|
|
||
| len = ft_strlen(str) + 1; | ||
| cnt = 1; | ||
| out_str = (char *)malloc(sizeof(char) * len); | ||
| out_str[0] = c; | ||
| while (cnt < len) | ||
| { | ||
| out_str[cnt] = str[cnt - 1]; | ||
| cnt++; | ||
| } | ||
| out_str[len] = '\0'; | ||
| return (out_str); | ||
| } |
| @@ -0,0 +1,30 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* check_length.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 12:48:52 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/07 16:54:53 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| int check_length(t_mods mods) | ||
| { | ||
| int len; | ||
| int cnt; | ||
|
|
||
| len = ft_strlen(mods.fmtl); | ||
| cnt = 0; | ||
| while (cnt < len - 1) | ||
| { | ||
| if (mods.fmtl[cnt] != 'l' && mods.fmtl[cnt] != 'h' && | ||
| mods.fmtl[cnt] != 'j' && mods.fmtl[cnt] != 'z') | ||
| return (0); | ||
| cnt++; | ||
| } | ||
| return (1); | ||
| } |
| @@ -0,0 +1,107 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* extra_formatting.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/31 17:09:53 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/06 12:33:30 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| char *fmt_p(t_mods mods, char *out_str) | ||
| { | ||
| char *new_str; | ||
| char *pad; | ||
| int padlen; | ||
|
|
||
| padlen = 0; | ||
| if (mods.precision != -1) | ||
| return ("ERROR: 'p' does not use precision"); | ||
| if (mods.width != -1 && (mods.width > (int)ft_strlen(out_str))) | ||
| { | ||
| padlen = mods.width - ft_strlen(out_str); | ||
| pad = (char *)malloc(sizeof(char) * padlen); | ||
| ft_memset(pad, ' ', padlen); | ||
| if (mods.flag != '\0') | ||
| { | ||
| if (mods.flag != '-') | ||
| return ("ERROR: only the '-' flag applies to 's'"); | ||
| new_str = ft_strjoin(out_str, pad); | ||
| } | ||
| else | ||
| new_str = ft_strjoin(pad, out_str); | ||
| } | ||
| else | ||
| new_str = out_str; | ||
| return (new_str); | ||
| } | ||
|
|
||
| char *fmt_c(t_mods mods, char out_char) | ||
| { | ||
| char *tmp_str; | ||
| char *new_str; | ||
| char *pad; | ||
| int padlen; | ||
|
|
||
| tmp_str = (char *)malloc(sizeof(char) * 1); | ||
| tmp_str[0] = out_char; | ||
| if (mods.width != -1) | ||
| { | ||
| padlen = mods.width - 1; | ||
| new_str = (char *)malloc(sizeof(char) * mods.width); | ||
| pad = (char *)malloc(sizeof(char) * padlen); | ||
| ft_memset(pad, ' ', padlen); | ||
| if (mods.flag != '\0') | ||
| { | ||
| if (mods.flag != '-') | ||
| return ("ERROR: '-' flag does not apply to 'c'"); | ||
| new_str = ft_strjoin(tmp_str, pad); | ||
| } | ||
| else | ||
| new_str = ft_strjoin(pad, tmp_str); | ||
| } | ||
| else | ||
| new_str = tmp_str; | ||
| return (new_str); | ||
| } | ||
|
|
||
| static char *init_new_str(char *tmp_str, t_mods mods) | ||
| { | ||
| int padlen; | ||
| char *pad; | ||
|
|
||
| padlen = mods.width - ft_strlen(tmp_str); | ||
| pad = (char *)malloc(sizeof(char) * padlen); | ||
| ft_memset(pad, ' ', padlen); | ||
| if (mods.flag != '\0') | ||
| { | ||
| if (mods.flag != '-') | ||
| return ("ERROR: '-' flag does not apply to 's'"); | ||
| return (ft_strjoin(tmp_str, pad)); | ||
| } | ||
| else | ||
| return (ft_strjoin(pad, tmp_str)); | ||
| } | ||
|
|
||
| char *fmt_s(t_mods mods, char *out_str) | ||
| { | ||
| char *tmp_str; | ||
| char *new_str; | ||
|
|
||
| if (mods.precision != -1) | ||
| { | ||
| tmp_str = (char *)malloc(sizeof(char) * mods.precision + 1); | ||
| ft_strncpy(tmp_str, out_str, mods.precision); | ||
| } | ||
| else | ||
| tmp_str = out_str; | ||
| if (mods.width != -1) | ||
| new_str = init_new_str(tmp_str, mods); | ||
| else | ||
| new_str = tmp_str; | ||
| return (new_str); | ||
| } |
| @@ -0,0 +1,105 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* fmt_i.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 12:59:10 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 15:05:30 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *do_flags(char *out_str, t_mods mods) | ||
| { | ||
| if (mods.flag == '+') | ||
| out_str = ft_prependc(out_str, '+'); | ||
| else if (mods.flag == ' ') | ||
| out_str = ft_prependc(out_str, ' '); | ||
| return (out_str); | ||
| } | ||
|
|
||
| static char *do_precision(char *new_str, char *pad, char *out_str, t_mods mods) | ||
| { | ||
| int cnt; | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| cnt = mods.precision - slen; | ||
| if (mods.width < 0) | ||
| ft_memset(pad, '0', (mods.precision - slen)); | ||
| else | ||
| { | ||
| ft_memset(pad, ' ', (mods.width - slen) - (mods.precision - slen)); | ||
| while (cnt > 0) | ||
| { | ||
| out_str = ft_prependc(out_str, '0'); | ||
| cnt--; | ||
| } | ||
| } | ||
| if (mods.flag == '-') | ||
| new_str = ft_strjoin(out_str, pad); | ||
| else | ||
| new_str = ft_strjoin(pad, out_str); | ||
| new_str[ft_strlen(new_str)] = '\0'; | ||
| new_str = do_flags(new_str, mods); | ||
| return (new_str); | ||
| } | ||
|
|
||
| static char *do_width(char *new_str, char *pad, char *out_str, t_mods mods) | ||
| { | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| if (mods.flag == '+' || mods.flag == ' ') | ||
| { | ||
| if (mods.flag == '0') | ||
| pad = ft_memset(pad, '0', (mods.width - slen - 1)); | ||
| else | ||
| pad = ft_memset(pad, ' ', (mods.width - slen - 1)); | ||
| if (mods.flag == '+') | ||
| out_str = ft_prependc(out_str, '+'); | ||
| else | ||
| out_str = ft_prependc(out_str, ' '); | ||
| } | ||
| else | ||
| { | ||
| if (mods.flag == '0') | ||
| pad = ft_memset(pad, '0', (mods.width - slen)); | ||
| else | ||
| pad = ft_memset(pad, ' ', (mods.width - slen)); | ||
| } | ||
| if (mods.flag == '-') | ||
| return (new_str = ft_strjoin(out_str, pad)); | ||
| else | ||
| return (new_str = ft_strjoin(pad, out_str)); | ||
| } | ||
|
|
||
| char *fmt_i(t_mods mods, char *out_str) | ||
| { | ||
| char *new_str; | ||
| char *pad; | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| if (mods.width != -1) | ||
| { | ||
| new_str = (char *)malloc(sizeof(char) * mods.width + 1); | ||
| pad = (char *)malloc(sizeof(char) * (mods.width - slen)); | ||
| if (mods.precision != -1 && mods.precision > slen) | ||
| new_str = do_precision(new_str, pad, out_str, mods); | ||
| else if (mods.precision == -1) | ||
| new_str = do_width(new_str, pad, out_str, mods); | ||
| } | ||
| else if (mods.precision > slen) | ||
| { | ||
| new_str = (char *)malloc(sizeof(char) * mods.precision); | ||
| pad = (char *)malloc(sizeof(char) * (mods.precision - slen)); | ||
| new_str = do_precision(new_str, pad, out_str, mods); | ||
| } | ||
| else | ||
| new_str = do_flags(out_str, mods); | ||
| return (new_str); | ||
| } |
| @@ -0,0 +1,105 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* fmt_o.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 13:04:07 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:57:30 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *do_precision(char *new_str, char *pad, char *out_str, t_mods mods) | ||
| { | ||
| int cnt; | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| cnt = mods.precision - slen; | ||
| if (mods.flag == ' ' || mods.flag == '+') | ||
| return ("ERROR: unsupported flag or 'o'"); | ||
| if (mods.width < 0) | ||
| ft_memset(pad, '0', (mods.precision - slen)); | ||
| else | ||
| { | ||
| ft_memset(pad, ' ', (mods.width - slen) - (mods.precision - slen)); | ||
| while (cnt > 0) | ||
| { | ||
| out_str = ft_prependc(out_str, '0'); | ||
| cnt--; | ||
| } | ||
| } | ||
| if (mods.flag == '-') | ||
| new_str = ft_strjoin(out_str, pad); | ||
| else | ||
| new_str = ft_strjoin(pad, out_str); | ||
| new_str[ft_strlen(new_str)] = '\0'; | ||
| return (new_str); | ||
| } | ||
|
|
||
| static char *do_width(char *new_str, char *pad, char *out_str, t_mods mods) | ||
| { | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| if (mods.flag == ' ' || mods.flag == '+') | ||
| return ("ERROR: unsupported flag or 'o'"); | ||
| if (mods.flag == '0') | ||
| pad = ft_memset(pad, '0', (mods.width - slen)); | ||
| else | ||
| pad = ft_memset(pad, ' ', (mods.width - slen)); | ||
| if (mods.flag == '#') | ||
| out_str = ft_appendc(out_str, '0'); | ||
| if (mods.flag == '-') | ||
| new_str = ft_strjoin(out_str, pad); | ||
| else | ||
| new_str = ft_strjoin(pad, out_str); | ||
| return (new_str); | ||
| } | ||
|
|
||
| static char *do_flags(t_mods mods, char *out_str) | ||
| { | ||
| char *ret_str; | ||
|
|
||
| ret_str = (char *)malloc(sizeof(char) * (ft_strlen(out_str) + 1)); | ||
| if (mods.flag == ' ' || mods.flag == '+') | ||
| return ("ERROR: unsupported flag or 'o'"); | ||
| if (mods.flag == '#') | ||
| ret_str = ft_prependc(out_str, '0'); | ||
| else | ||
| ret_str = out_str; | ||
| ret_str[ft_strlen(out_str) + 1] = '\0'; | ||
| return (ret_str); | ||
| } | ||
|
|
||
| char *fmt_o(t_mods mods, char *out_str) | ||
| { | ||
| char *new_str; | ||
| char *pad; | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| if (mods.width != -1) | ||
| { | ||
| new_str = (char *)malloc(sizeof(char) * mods.width + 1); | ||
| pad = (char *)malloc(sizeof(char) * (mods.width - slen)); | ||
| if (mods.precision != -1 && mods.precision > slen) | ||
| new_str = do_precision(new_str, pad, out_str, mods); | ||
| else if (mods.precision == -1) | ||
| new_str = do_width(new_str, pad, out_str, mods); | ||
| } | ||
| else if (mods.precision > slen) | ||
| { | ||
| new_str = (char *)malloc(sizeof(char) * mods.precision); | ||
| pad = (char *)malloc(sizeof(char) * (mods.precision - slen)); | ||
| new_str = do_precision(new_str, pad, out_str, mods); | ||
| } | ||
| else | ||
| { | ||
| new_str = do_flags(mods, out_str); | ||
| } | ||
| return (new_str); | ||
| } |
| @@ -0,0 +1,84 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* fmt_u.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 13:01:05 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:02:15 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *do_precision(char *new_str, char *pad, char *out_str, t_mods mods) | ||
| { | ||
| int cnt; | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| cnt = mods.precision - slen; | ||
| if (mods.width < 0) | ||
| ft_memset(pad, '0', (mods.precision - slen)); | ||
| else | ||
| { | ||
| ft_memset(pad, ' ', (mods.width - slen) - (mods.precision - slen)); | ||
| while (cnt > 0) | ||
| { | ||
| out_str = ft_prependc(out_str, '0'); | ||
| cnt--; | ||
| } | ||
| } | ||
| if (mods.flag == '-') | ||
| new_str = ft_strjoin(out_str, pad); | ||
| else | ||
| new_str = ft_strjoin(pad, out_str); | ||
| new_str[ft_strlen(new_str)] = '\0'; | ||
| return (new_str); | ||
| } | ||
|
|
||
| static char *do_width(char *new_str, char *pad, char *out_str, t_mods mods) | ||
| { | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| if (mods.flag == '0') | ||
| pad = ft_memset(pad, '0', (mods.width - slen)); | ||
| else | ||
| pad = ft_memset(pad, ' ', (mods.width - slen)); | ||
| if (mods.flag == '-') | ||
| new_str = ft_strjoin(out_str, pad); | ||
| else | ||
| new_str = ft_strjoin(pad, out_str); | ||
| return (new_str); | ||
| } | ||
|
|
||
| char *fmt_u(t_mods mods, char *out_str) | ||
| { | ||
| char *new_str; | ||
| char *pad; | ||
| int slen; | ||
|
|
||
| if (mods.flag != '\0' && (mods.flag != '-' && mods.flag != '0')) | ||
| return ("ERROR: 'u' specifier only takes the '-' & '0' flags"); | ||
| slen = ft_strlen(out_str); | ||
| if (mods.width != -1) | ||
| { | ||
| new_str = (char *)malloc(sizeof(char) * mods.width + 1); | ||
| pad = (char *)malloc(sizeof(char) * (mods.width - slen)); | ||
| if (mods.precision != -1 && mods.precision > slen) | ||
| new_str = do_precision(new_str, pad, out_str, mods); | ||
| else if (mods.precision == -1) | ||
| new_str = do_width(new_str, pad, out_str, mods); | ||
| } | ||
| else if (mods.precision > slen) | ||
| { | ||
| new_str = (char *)malloc(sizeof(char) * mods.precision); | ||
| pad = (char *)malloc(sizeof(char) * (mods.precision - slen)); | ||
| new_str = do_precision(new_str, pad, out_str, mods); | ||
| } | ||
| else | ||
| new_str = out_str; | ||
| return (new_str); | ||
| } |
| @@ -0,0 +1,117 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* fmt_x.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 13:16:09 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 15:59:22 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *do_precision(char *new_str, char *pad, char *out_str, t_mods mods) | ||
| { | ||
| int cnt; | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| cnt = mods.precision - slen; | ||
| if (mods.flag == ' ' || mods.flag == '+') | ||
| return ("ERROR: unsupported flag for 'x'"); | ||
| if (mods.width < 0) | ||
| ft_memset(pad, '0', (mods.precision - slen)); | ||
| else | ||
| { | ||
| ft_memset(pad, ' ', (mods.width - slen) - (mods.precision - slen)); | ||
| while (cnt > 0) | ||
| { | ||
| out_str = ft_prependc(out_str, '0'); | ||
| cnt--; | ||
| } | ||
| } | ||
| if (mods.flag == '-') | ||
| new_str = ft_strjoin(out_str, pad); | ||
| else | ||
| new_str = ft_strjoin(pad, out_str); | ||
| new_str[ft_strlen(new_str)] = '\0'; | ||
| return (new_str); | ||
| } | ||
|
|
||
| static char *do_width(char *new_str, char *pad, char *out_str, t_mods mods) | ||
| { | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| if (mods.flag == ' ' || mods.flag == '+') | ||
| return ("ERROR: unsupported flag for 'x'"); | ||
| if (mods.flag == '0') | ||
| pad = ft_memset(pad, '0', (mods.width - slen)); | ||
| else | ||
| pad = ft_memset(pad, ' ', (mods.width - slen)); | ||
| if (mods.flag == '#') | ||
| { | ||
| if (mods.fmtl[ft_strlen(mods.fmtl - 1)] == 'X') | ||
| out_str = ft_prependc(out_str, 'X'); | ||
| else | ||
| out_str = ft_prependc(out_str, 'x'); | ||
| out_str = ft_prependc(out_str, '0'); | ||
| } | ||
| if (mods.flag == '-') | ||
| new_str = ft_strjoin(out_str, pad); | ||
| else | ||
| new_str = ft_strjoin(pad, out_str); | ||
| return (new_str); | ||
| } | ||
|
|
||
| static char *do_flags(t_mods mods, char *out_str) | ||
| { | ||
| char *ret_str; | ||
|
|
||
| ret_str = (char *)malloc(sizeof(char) * (ft_strlen(out_str) + 1)); | ||
| if (mods.flag == ' ' || mods.flag == '+') | ||
| return ("ERROR: unsupported flag for 'x'"); | ||
| if (mods.flag == '#') | ||
| { | ||
| if (mods.fmtl[ft_strlen(mods.fmtl - 1)] == 'X') | ||
| ret_str = ft_prependc(out_str, 'X'); | ||
| else | ||
| ret_str = ft_prependc(out_str, 'x'); | ||
| ret_str = ft_prependc(ret_str, '0'); | ||
| } | ||
| else | ||
| ret_str = out_str; | ||
| ret_str[ft_strlen(out_str) + 2] = '\0'; | ||
| return (ret_str); | ||
| } | ||
|
|
||
| char *fmt_x(t_mods mods, char *out_str) | ||
| { | ||
| char *new_str; | ||
| char *pad; | ||
| int slen; | ||
|
|
||
| slen = ft_strlen(out_str); | ||
| if (mods.width != -1) | ||
| { | ||
| new_str = (char *)malloc(sizeof(char) * mods.width + 1); | ||
| pad = (char *)malloc(sizeof(char) * (mods.width - slen)); | ||
| if (mods.precision != -1 && mods.precision > slen) | ||
| new_str = do_precision(new_str, pad, out_str, mods); | ||
| else if (mods.precision == -1) | ||
| new_str = do_width(new_str, pad, out_str, mods); | ||
| } | ||
| else if (mods.precision > slen) | ||
| { | ||
| new_str = (char *)malloc(sizeof(char) * mods.precision); | ||
| pad = (char *)malloc(sizeof(char) * (mods.precision - slen)); | ||
| new_str = do_precision(new_str, pad, out_str, mods); | ||
| } | ||
| else | ||
| new_str = out_str; | ||
| if (mods.flag == '#') | ||
| new_str = do_flags(mods, new_str); | ||
| return (new_str); | ||
| } |
| @@ -0,0 +1,108 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_printf.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/24 11:57:58 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 18:17:46 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *fstr_build(char *format) | ||
| { | ||
| char *fstr; | ||
| int cnt; | ||
|
|
||
| fstr = (char *)malloc(sizeof(char) * 10); | ||
| cnt = 0; | ||
| while (istype(format[cnt]) == 0) | ||
| { | ||
| fstr[cnt] = format[cnt]; | ||
| cnt++; | ||
| } | ||
| fstr[cnt] = format[cnt]; | ||
| fstr[cnt + 1] = '\0'; | ||
| return (fstr); | ||
| } | ||
|
|
||
| static char *get_fmtl(char *fstr) | ||
| { | ||
| int len; | ||
| int fmtlsz; | ||
| int cnt; | ||
| char *fmtl; | ||
|
|
||
| len = ft_strlen(fstr) - 1; | ||
| fmtlsz = 0; | ||
| cnt = 0; | ||
| while (isprecision(fstr[len]) == 0 && iswidth(fstr) == 0 && | ||
| isflag(fstr[len]) == 0 && len-- > 0) | ||
| fmtlsz++; | ||
| len = ft_strlen(fstr) - 1; | ||
| fmtl = (char *)malloc(sizeof(char) * fmtlsz + 1); | ||
| if (istype(fstr[len]) == 1) | ||
| { | ||
| if (islength(fstr[len - 1]) == 1) | ||
| { | ||
| if (islength(fstr[len - 2]) == 1) | ||
| fmtl[cnt++] = fstr[len - 2]; | ||
| fmtl[cnt++] = fstr[len - 1]; | ||
| } | ||
| fmtl[cnt++] = fstr[len]; | ||
| fmtl[cnt] = '\0'; | ||
| } | ||
| return (fmtl); | ||
| } | ||
|
|
||
| static char *arg_build(va_list vlst, char *fstr, int *pcnt) | ||
| { | ||
| char *out; | ||
| t_mods mods; | ||
|
|
||
| mods.width = -1; | ||
| mods.precision = -1; | ||
| mods.flag = '\0'; | ||
| if (haswidth(fstr) == 1) | ||
| mods.width = get_width(vlst, fstr); | ||
| if (hasprecision(fstr) == 1) | ||
| mods.precision = get_precision(vlst, fstr); | ||
| if (hasflag(fstr) == 1) | ||
| mods.flag = fstr[0]; | ||
| mods.fmtl = get_fmtl(fstr); | ||
| out = handle_type_1(vlst, mods); | ||
| *pcnt += ft_strlen(out); | ||
| return (out); | ||
| } | ||
|
|
||
| int ft_printf(char *format, ...) | ||
| { | ||
| va_list vlst; | ||
| int cnt; | ||
|
|
||
| va_start(vlst, format); | ||
| cnt = 0; | ||
| while (*format != '\0') | ||
| { | ||
| if (*format == '%') | ||
| { | ||
| format++; | ||
| if (*format == '%') | ||
| ft_putchar('%'); | ||
| else | ||
| { | ||
| ft_putstr(arg_build(vlst, fstr_build(format), &cnt)); | ||
| format += ft_strlen(fstr_build(format)) - 1; | ||
| } | ||
| } | ||
| else | ||
| ft_putchar(*format); | ||
| format++; | ||
| cnt++; | ||
| } | ||
| va_end(vlst); | ||
| return (cnt); | ||
| } |
| @@ -0,0 +1,32 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* handle_c.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/02 15:51:33 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 16:51:42 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| char *handle_c(va_list vlst, t_mods mods) | ||
| { | ||
| int fmtl_len; | ||
| char out_char; | ||
| wchar_t wc; | ||
|
|
||
| if (mods.precision != -1) | ||
| return ("ERROR: 'c' cannot make use of precision\n"); | ||
| fmtl_len = ft_strlen(mods.fmtl); | ||
| if (fmtl_len > 1 || mods.fmtl[fmtl_len] == 'C') | ||
| { | ||
| wc = va_arg(vlst, wchar_t); | ||
| out_char = (char)wc; | ||
| } | ||
| else | ||
| out_char = (char)va_arg(vlst, int); | ||
| return (fmt_c(mods, out_char)); | ||
| } |
| @@ -0,0 +1,29 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* handle_cap_c.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 13:10:30 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:10:51 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| char *handle_cap_c(va_list vlst, t_mods mods) | ||
| { | ||
| int fmtl_len; | ||
| char out_char; | ||
| wchar_t wc; | ||
|
|
||
| if (mods.precision != -1) | ||
| return ("ERROR: 'C' cannot make use of precision\n"); | ||
| fmtl_len = ft_strlen(mods.fmtl); | ||
| if (fmtl_len > 1) | ||
| return ("ERROR: 'C' does not take ant length modifier\n"); | ||
| wc = va_arg(vlst, wchar_t); | ||
| out_char = (char)wc; | ||
| return (fmt_c(mods, out_char)); | ||
| } |
| @@ -0,0 +1,36 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* handle_cap_s.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/31 15:49:42 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:13:07 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| char *handle_cap_s(va_list vlst, t_mods mods) | ||
| { | ||
| int fmtl_len; | ||
| int cnt; | ||
| char *out_str; | ||
| wchar_t *wcs; | ||
|
|
||
| fmtl_len = ft_strlen(mods.fmtl); | ||
| cnt = 0; | ||
| if (fmtl_len > 1) | ||
| return ("ERROR: 'S' does not take any length modifier\n"); | ||
| wcs = va_arg(vlst, wchar_t *); | ||
| out_str = (char *)malloc(sizeof(char) * ft_wcslen(wcs)); | ||
| while (*wcs != '\0') | ||
| { | ||
| out_str[cnt] = (char)*wcs; | ||
| cnt++; | ||
| wcs++; | ||
| } | ||
| out_str[cnt] = '\0'; | ||
| return (fmt_s(mods, out_str)); | ||
| } |
| @@ -0,0 +1,110 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* handle_i.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 13:49:44 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:49:46 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *get_value_3(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| signed char schar; | ||
| long long int llint; | ||
|
|
||
| schar = '\0'; | ||
| llint = 0; | ||
| if (mods.fmtl[fmtl_len - 2] == 'h' && | ||
| mods.fmtl[fmtl_len - 3] == 'h') | ||
| { | ||
| schar = va_arg(vlst, int); | ||
| return (ft_itoa(schar)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'l' && | ||
| mods.fmtl[fmtl_len - 3] == 'l') | ||
| { | ||
| llint = va_arg(vlst, long long int); | ||
| return (ft_itoa(llint)); | ||
| } | ||
| else | ||
| return ("??ERRor?!?"); | ||
| return ("Crackers"); | ||
| } | ||
|
|
||
| static char *get_value_2(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| short int shint; | ||
| size_t szt; | ||
|
|
||
| shint = 0; | ||
| szt = 0; | ||
| if (mods.fmtl[fmtl_len - 2] == 'h') | ||
| { | ||
| shint = va_arg(vlst, int); | ||
| return (ft_itoa(shint)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'z') | ||
| { | ||
| szt = va_arg(vlst, size_t); | ||
| return (ft_itoa(szt)); | ||
| } | ||
| else | ||
| return (get_value_3(vlst, mods, fmtl_len)); | ||
| return ("Crackers"); | ||
| } | ||
|
|
||
| static char *get_value(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| long int lint; | ||
| int i; | ||
|
|
||
| lint = 0; | ||
| i = 0; | ||
| if (fmtl_len > 3) | ||
| return ("ERROR: too many length modifiers"); | ||
| if (mods.fmtl[fmtl_len - 1] == 'D' || mods.fmtl[fmtl_len - 2] == 'l') | ||
| { | ||
| lint = va_arg(vlst, long int); | ||
| return (ft_itoa(lint)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'j') | ||
| { | ||
| i = va_arg(vlst, int); | ||
| return (ft_itoa(i)); | ||
| } | ||
| else | ||
| return (get_value_2(vlst, mods, fmtl_len)); | ||
| return ("Crackers"); | ||
| } | ||
|
|
||
| char *handle_i(va_list vlst, t_mods mods) | ||
| { | ||
| int fmtl_len; | ||
| int i; | ||
| char *out_str; | ||
|
|
||
| fmtl_len = ft_strlen(mods.fmtl); | ||
| i = 0; | ||
| out_str = NULL; | ||
| if (fmtl_len > 1 || mods.fmtl[fmtl_len - 1] == 'D') | ||
| { | ||
| if (mods.fmtl[fmtl_len - 1] == 'D' && fmtl_len > 1) | ||
| return ("ERROR: 'D' takes no length modifier"); | ||
| if (check_length(mods) == 0) | ||
| return ("ERROR: unsupported length modifier for 'i'"); | ||
| out_str = get_value(vlst, mods, fmtl_len); | ||
| } | ||
| else | ||
| { | ||
| i = va_arg(vlst, int); | ||
| out_str = (char *)malloc(sizeof(char) * (ft_strlen(ft_itoa(i)) + 1)); | ||
| out_str = ft_itoa(i); | ||
| out_str[ft_strlen(out_str)] = '\0'; | ||
| } | ||
| return (fmt_i(mods, out_str)); | ||
| } |
| @@ -0,0 +1,109 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* handle_o.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 13:22:41 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:50:03 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *get_value_3(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| unsigned char uschar; | ||
| unsigned long long int ullint; | ||
|
|
||
| uschar = '\0'; | ||
| ullint = 0; | ||
| if (mods.fmtl[fmtl_len - 2] == 'h' && | ||
| mods.fmtl[fmtl_len - 3] == 'h') | ||
| { | ||
| uschar = va_arg(vlst, int); | ||
| return (ft_itobase(uschar, 8)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'l' && | ||
| mods.fmtl[fmtl_len - 3] == 'l') | ||
| { | ||
| ullint = va_arg(vlst, unsigned long long int); | ||
| return (ft_itobase(ullint, 8)); | ||
| } | ||
| return ("Crckrs003"); | ||
| } | ||
|
|
||
| static char *get_value_2(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| unsigned short int ushint; | ||
| size_t szt; | ||
|
|
||
| ushint = 0; | ||
| szt = 0; | ||
| if (mods.fmtl[fmtl_len - 2] == 'h') | ||
| { | ||
| ushint = va_arg(vlst, int); | ||
| return (ft_itobase(ushint, 8)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'z') | ||
| { | ||
| szt = va_arg(vlst, size_t); | ||
| return (ft_itobase(szt, 8)); | ||
| } | ||
| else | ||
| return (get_value_3(vlst, mods, fmtl_len)); | ||
| return ("Crckrs002"); | ||
| } | ||
|
|
||
| static char *get_value(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| unsigned long int ulint; | ||
| unsigned int uint; | ||
|
|
||
| ulint = 0; | ||
| uint = 0; | ||
| if (fmtl_len > 3) | ||
| return ("ERROR: too many length modifiers"); | ||
| if (mods.fmtl[fmtl_len - 1] == 'O' || mods.fmtl[fmtl_len - 2] == 'l') | ||
| { | ||
| ulint = va_arg(vlst, unsigned long int); | ||
| return (ft_itobase(ulint, 8)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'j') | ||
| { | ||
| uint = va_arg(vlst, unsigned int); | ||
| return (ft_itobase(uint, 8)); | ||
| } | ||
| else | ||
| return (get_value_2(vlst, mods, fmtl_len)); | ||
| return ("Crckrs001"); | ||
| } | ||
|
|
||
| char *handle_o(va_list vlst, t_mods mods) | ||
| { | ||
| int fmtl_len; | ||
| int i; | ||
| char *octal; | ||
| char *out_str; | ||
|
|
||
| fmtl_len = ft_strlen(mods.fmtl); | ||
| i = 0; | ||
| if (fmtl_len > 1 || mods.fmtl[fmtl_len - 1] == 'O') | ||
| { | ||
| if (mods.fmtl[fmtl_len - 1] == 'O' && fmtl_len > 1) | ||
| return ("ERROR: 'O' takes no length modifier"); | ||
| if (check_length(mods) == 0) | ||
| return ("ERROR: unsupported length modifier for 'o'"); | ||
| out_str = get_value(vlst, mods, fmtl_len); | ||
| } | ||
| else | ||
| { | ||
| i = va_arg(vlst, int); | ||
| octal = ft_itobase(i, 8); | ||
| out_str = (char *)malloc(sizeof(char) * (ft_strlen(octal) + 1)); | ||
| ft_strcpy(out_str, octal); | ||
| out_str[ft_strlen(out_str) + 1] = '\0'; | ||
| } | ||
| return (fmt_o(mods, out_str)); | ||
| } |
| @@ -0,0 +1,29 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* handle_p.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 13:17:24 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/06 12:37:24 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| char *handle_p(va_list vlst, t_mods mods) | ||
| { | ||
| unsigned long ptr; | ||
| char *out_str; | ||
|
|
||
| out_str = NULL; | ||
| if (ft_strlen(mods.fmtl) > 1) | ||
| return ("ERROR: 'p' takes no length modifier\n"); | ||
| ptr = va_arg(vlst, unsigned long); | ||
| out_str = ft_itobase(ptr, 16); | ||
| out_str = ft_prependc(out_str, 'x'); | ||
| out_str = ft_prependc(out_str, '0'); | ||
| out_str = ft_strlower(out_str); | ||
| return (fmt_p(mods, out_str)); | ||
| } |
| @@ -0,0 +1,41 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* handle_s.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/31 15:49:29 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/02 16:53:22 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| char *handle_s(va_list vlst, t_mods mods) | ||
| { | ||
| int fmtl_len; | ||
| int cnt; | ||
| char *out_str; | ||
| wchar_t *wcs; | ||
|
|
||
| fmtl_len = ft_strlen(mods.fmtl); | ||
| cnt = 0; | ||
| if (fmtl_len > 1) | ||
| { | ||
| if (mods.fmtl[fmtl_len - 2] != 'l' || fmtl_len > 2) | ||
| return ("ERROR: 's' can only make use of the 'l' modifier"); | ||
| wcs = va_arg(vlst, wchar_t *); | ||
| out_str = (char *)malloc(sizeof(char) * ft_wcslen(wcs)); | ||
| while (*wcs != '\0') | ||
| { | ||
| out_str[cnt] = (char)*wcs; | ||
| wcs++; | ||
| cnt++; | ||
| } | ||
| out_str[cnt] = '\0'; | ||
| } | ||
| else | ||
| out_str = va_arg(vlst, char *); | ||
| return (fmt_s(mods, out_str)); | ||
| } |
| @@ -0,0 +1,107 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* handle_u.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 13:25:24 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:25:28 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *get_value_3(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| unsigned char uschar; | ||
| unsigned long long int ullint; | ||
|
|
||
| uschar = '\0'; | ||
| ullint = 0; | ||
| if (mods.fmtl[fmtl_len - 2] == 'h' && | ||
| mods.fmtl[fmtl_len - 3] == 'h') | ||
| { | ||
| uschar = va_arg(vlst, int); | ||
| return (ft_itoa(uschar)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'l' && | ||
| mods.fmtl[fmtl_len - 3] == 'l') | ||
| { | ||
| ullint = va_arg(vlst, unsigned long long int); | ||
| return (ft_itoa(ullint)); | ||
| } | ||
| return ("Crckrs003"); | ||
| } | ||
|
|
||
| static char *get_value_2(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| unsigned short int ushint; | ||
| size_t szt; | ||
|
|
||
| ushint = 0; | ||
| szt = 0; | ||
| if (mods.fmtl[fmtl_len - 2] == 'h') | ||
| { | ||
| ushint = va_arg(vlst, int); | ||
| return (ft_itoa(ushint)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'z') | ||
| { | ||
| szt = va_arg(vlst, size_t); | ||
| return (ft_itoa(szt)); | ||
| } | ||
| else | ||
| return (get_value_3(vlst, mods, fmtl_len)); | ||
| return ("Crckrs002"); | ||
| } | ||
|
|
||
| static char *get_value(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| unsigned long int ulint; | ||
| unsigned int uint; | ||
|
|
||
| ulint = 0; | ||
| uint = 0; | ||
| if (fmtl_len > 3) | ||
| return ("ERROR: too many length modifiers"); | ||
| if (mods.fmtl[fmtl_len - 1] == 'U' || mods.fmtl[fmtl_len - 2] == 'l') | ||
| { | ||
| ulint = va_arg(vlst, unsigned long int); | ||
| return (ft_itoa(ulint)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'j') | ||
| { | ||
| uint = va_arg(vlst, unsigned int); | ||
| return (ft_itoa(uint)); | ||
| } | ||
| else | ||
| return (get_value_2(vlst, mods, fmtl_len)); | ||
| return ("Crckrs001"); | ||
| } | ||
|
|
||
| char *handle_u(va_list vlst, t_mods mods) | ||
| { | ||
| int fmtl_len; | ||
| int ui; | ||
| char *out_str; | ||
|
|
||
| fmtl_len = ft_strlen(mods.fmtl); | ||
| ui = 0; | ||
| if (fmtl_len > 1 || mods.fmtl[fmtl_len - 1] == 'U') | ||
| { | ||
| if (mods.fmtl[fmtl_len - 1] == 'U' && fmtl_len > 1) | ||
| return ("ERROR: 'U' takes no length modifier"); | ||
| if (check_length(mods) == 0) | ||
| return ("ERROR: unsupported length modifier for 'i'"); | ||
| out_str = get_value(vlst, mods, fmtl_len); | ||
| } | ||
| else | ||
| { | ||
| ui = va_arg(vlst, unsigned int); | ||
| out_str = (char *)malloc(sizeof(char) * (ft_strlen(ft_itoa(ui)) + 1)); | ||
| out_str = ft_itoa(ui); | ||
| out_str[ft_strlen(out_str)] = '\0'; | ||
| } | ||
| return (fmt_u(mods, out_str)); | ||
| } |
| @@ -0,0 +1,106 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* handle_x.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/05 13:27:22 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 15:57:30 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *get_value_3(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| unsigned char uschar; | ||
| unsigned long long int ullint; | ||
|
|
||
| uschar = '\0'; | ||
| ullint = 0; | ||
| if (mods.fmtl[fmtl_len - 2] == 'h' && | ||
| mods.fmtl[fmtl_len - 3] == 'h') | ||
| { | ||
| uschar = va_arg(vlst, int); | ||
| return (ft_itobase(uschar, 16)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'l' && | ||
| mods.fmtl[fmtl_len - 3] == 'l') | ||
| { | ||
| ullint = va_arg(vlst, unsigned long long int); | ||
| return (ft_itobase(ullint, 16)); | ||
| } | ||
| return ("Crckrs003"); | ||
| } | ||
|
|
||
| static char *get_value_2(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| unsigned short int ushint; | ||
| size_t szt; | ||
|
|
||
| ushint = 0; | ||
| szt = 0; | ||
| if (mods.fmtl[fmtl_len - 2] == 'h') | ||
| { | ||
| ushint = va_arg(vlst, int); | ||
| return (ft_itobase(ushint, 16)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'z') | ||
| { | ||
| szt = va_arg(vlst, size_t); | ||
| return (ft_itobase(szt, 16)); | ||
| } | ||
| else | ||
| return (get_value_3(vlst, mods, fmtl_len)); | ||
| return ("Crckrs002"); | ||
| } | ||
|
|
||
| static char *get_value(va_list vlst, t_mods mods, int fmtl_len) | ||
| { | ||
| unsigned long int ulint; | ||
| unsigned int uint; | ||
|
|
||
| ulint = 0; | ||
| uint = 0; | ||
| if (fmtl_len > 3) | ||
| return ("ERROR: too many length modifiers"); | ||
| if (mods.fmtl[fmtl_len - 2] == 'l') | ||
| { | ||
| ulint = va_arg(vlst, unsigned long int); | ||
| return (ft_itobase(ulint, 16)); | ||
| } | ||
| else if (mods.fmtl[fmtl_len - 2] == 'j') | ||
| { | ||
| uint = va_arg(vlst, unsigned int); | ||
| return (ft_itobase(uint, 16)); | ||
| } | ||
| else | ||
| return (get_value_2(vlst, mods, fmtl_len)); | ||
| return ("Crckrs001"); | ||
| } | ||
|
|
||
| char *handle_x(va_list vlst, t_mods mods) | ||
| { | ||
| int fmtl_len; | ||
| int i; | ||
| char *out_str; | ||
|
|
||
| fmtl_len = ft_strlen(mods.fmtl); | ||
| i = 0; | ||
| if (fmtl_len > 1) | ||
| { | ||
| if (check_length(mods) == 0) | ||
| return ("ERROR: unsupported length modifier for 'o'"); | ||
| out_str = get_value(vlst, mods, fmtl_len); | ||
| } | ||
| else | ||
| { | ||
| i = va_arg(vlst, int); | ||
| out_str = ft_itobase(i, 16); | ||
| out_str[ft_strlen(out_str) + 1] = '\0'; | ||
| } | ||
| if (mods.fmtl[fmtl_len - 1] == 'x') | ||
| out_str = ft_strlower(out_str); | ||
| return (fmt_x(mods, out_str)); | ||
| } |
| @@ -0,0 +1,53 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* has_checks.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/02 13:28:24 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:23:12 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| int haslength(char *fstr) | ||
| { | ||
| int len; | ||
|
|
||
| len = ft_strlen(fstr) - 1; | ||
| if (fstr[len - 1] == 'h' || fstr[len - 1] == 'l' || | ||
| fstr[len - 1] == 'j' || fstr[len - 1] == 'z') | ||
| return (1); | ||
| return (0); | ||
| } | ||
|
|
||
| int hasprecision(char *fstr) | ||
| { | ||
| if (ft_strchr(fstr, '.') == NULL) | ||
| return (0); | ||
| return (1); | ||
| } | ||
|
|
||
| int haswidth(char *fstr) | ||
| { | ||
| while (isprecision(*fstr) == 0 && islength(*fstr) == 0 && | ||
| istype(*fstr) == 0 && *fstr != '\0') | ||
| { | ||
| if (*fstr == '*' || ft_isdigit(*fstr)) | ||
| return (1); | ||
| fstr++; | ||
| } | ||
| return (0); | ||
| } | ||
|
|
||
| int hasflag(char *fstr) | ||
| { | ||
| if (fstr[0] == '-' || fstr[0] == '+' || fstr[0] == ' ' || | ||
| fstr[0] == '#' || fstr[0] == '0') | ||
| { | ||
| return (1); | ||
| } | ||
| return (0); | ||
| } |
| @@ -0,0 +1,58 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_printf.h :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/02 12:45:17 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:24:08 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #ifndef FT_PRINTF_H | ||
| # define FT_PRINTF_H | ||
|
|
||
| # include <stdarg.h> | ||
| # include "../../libft.h" | ||
|
|
||
| typedef struct s_mods | ||
| { | ||
| int width; | ||
| int precision; | ||
| char flag; | ||
| char *fmtl; | ||
| } t_mods; | ||
|
|
||
| int check_length(t_mods mods); | ||
| int ft_printf(char *format, ...); | ||
| int get_width(va_list vlst, char *fstr); | ||
| int get_precision(va_list vlst, char *fstr); | ||
| int haslength(char *fstr); | ||
| int hasprecision(char *fstr); | ||
| int haswidth(char *fstr); | ||
| int hasflag(char *fstr); | ||
| int istype(int c); | ||
| int islength(int c); | ||
| int isprecision(int c); | ||
| int iswidth(char *fstr); | ||
| int isflag(int c); | ||
| char *fmt_c(t_mods mods, char out_char); | ||
| char *fmt_i(t_mods mods, char *out_str); | ||
| char *fmt_o(t_mods mods, char *out_str); | ||
| char *fmt_p(t_mods mods, char *out_str); | ||
| char *fmt_s(t_mods mods, char *out_str); | ||
| char *fmt_u(t_mods mods, char *out_str); | ||
| char *fmt_x(t_mods mods, char *out_str); | ||
| char *handle_cap_c(va_list vlst, t_mods mods); | ||
| char *handle_c(va_list vlst, t_mods mods); | ||
| char *handle_cap_s(va_list vlst, t_mods mods); | ||
| char *handle_i(va_list vlst, t_mods mods); | ||
| char *handle_o(va_list vlst, t_mods mods); | ||
| char *handle_p(va_list vlst, t_mods mods); | ||
| char *handle_s(va_list vlst, t_mods mods); | ||
| char *handle_u(va_list vlst, t_mods mods); | ||
| char *handle_x(va_list vlst, t_mods mods); | ||
| char *handle_type_1(va_list vlst, t_mods mods); | ||
|
|
||
| #endif |
| @@ -0,0 +1,67 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* is_checks.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/02 13:28:40 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:23:37 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| int istype(int c) | ||
| { | ||
| if (c == 's' || c == 'S' || c == 'p' || c == 'd' || | ||
| c == 'D' || c == 'i' || c == 'o' || c == 'O' || | ||
| c == 'u' || c == 'U' || c == 'x' || c == 'X' || | ||
| c == 'c' || c == 'C') | ||
| return (1); | ||
| return (0); | ||
| } | ||
|
|
||
| int islength(int c) | ||
| { | ||
| if (c == 'h' || c == 'l' || c == 'j' || c == 'z') | ||
| return (1); | ||
| return (0); | ||
| } | ||
|
|
||
| int isprecision(int c) | ||
| { | ||
| if (c == '.') | ||
| return (1); | ||
| return (0); | ||
| } | ||
|
|
||
| int iswidth(char *fstr) | ||
| { | ||
| int cnt; | ||
|
|
||
| cnt = 0; | ||
| while (isprecision(fstr[cnt]) == 0 && islength(fstr[cnt]) == 0 && | ||
| istype(fstr[cnt]) == 0 && fstr[cnt] != '\0') | ||
| { | ||
| if (fstr[cnt] == '*' || ft_isdigit(fstr[cnt]) == 1) | ||
| { | ||
| if (ft_strchr(fstr, '.') == NULL) | ||
| return (1); | ||
| else if (ft_indexof(fstr, '.') > cnt) | ||
| return (1); | ||
| else | ||
| return (0); | ||
| } | ||
| cnt++; | ||
| } | ||
| return (0); | ||
| } | ||
|
|
||
| int isflag(int c) | ||
| { | ||
| if (c == '-' || c == '+' || c == ' ' || | ||
| c == '#' || c == '0') | ||
| return (1); | ||
| return (0); | ||
| } |
| @@ -0,0 +1,59 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* mod_ops.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/02 13:30:24 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/05 13:50:51 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| int get_width(va_list vlst, char *fstr) | ||
| { | ||
| char width[5]; | ||
| int cnt; | ||
|
|
||
| cnt = 0; | ||
| while (isprecision(*fstr) == 0 && islength(*fstr) == 0 && | ||
| istype(*fstr) == 0) | ||
| { | ||
| if (ft_isdigit(*fstr)) | ||
| { | ||
| width[cnt] = *fstr; | ||
| cnt++; | ||
| } | ||
| else if (*fstr == '*') | ||
| return (va_arg(vlst, int)); | ||
| fstr++; | ||
| } | ||
| width[cnt] = '\0'; | ||
| return (ft_atoi(width)); | ||
| } | ||
|
|
||
| int get_precision(va_list vlst, char *fstr) | ||
| { | ||
| int cnt; | ||
| char prec[10]; | ||
| char *prec_str; | ||
|
|
||
| cnt = 0; | ||
| prec_str = ft_strchr(fstr, '.'); | ||
| while (islength(*prec_str) == 0 && istype(*prec_str) == 0 && | ||
| prec_str[cnt] != '\0') | ||
| { | ||
| if (ft_isdigit(*prec_str)) | ||
| { | ||
| prec[cnt] = *prec_str; | ||
| cnt++; | ||
| } | ||
| else if (*prec_str == '*') | ||
| return (va_arg(vlst, int)); | ||
| prec_str++; | ||
| } | ||
| prec[cnt] = '\0'; | ||
| return (ft_atoi(prec)); | ||
| } |
| @@ -0,0 +1,52 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* type_handling.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/31 16:57:09 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/06 12:38:45 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "./ft_printf/includes/ft_printf.h" | ||
|
|
||
| static char *handle_type_2(va_list vlst, t_mods mods, char *out_str) | ||
| { | ||
| int len; | ||
|
|
||
| len = ft_strlen(mods.fmtl) - 1; | ||
| if (mods.fmtl[len] == 'u' || mods.fmtl[len] == 'U') | ||
| out_str = handle_u(vlst, mods); | ||
| else if (mods.fmtl[len] == 'o' || mods.fmtl[len] == 'O') | ||
| out_str = handle_o(vlst, mods); | ||
| else if (mods.fmtl[len] == 'x' || mods.fmtl[len] == 'X') | ||
| out_str = handle_x(vlst, mods); | ||
| return (out_str); | ||
| } | ||
|
|
||
| char *handle_type_1(va_list vlst, t_mods mods) | ||
| { | ||
| int len; | ||
| char *out_str; | ||
|
|
||
| out_str = NULL; | ||
| len = ft_strlen(mods.fmtl) - 1; | ||
| if (mods.fmtl[len] == 's') | ||
| out_str = handle_s(vlst, mods); | ||
| else if (mods.fmtl[len] == 'S') | ||
| out_str = handle_cap_s(vlst, mods); | ||
| else if (mods.fmtl[len] == 'p') | ||
| out_str = handle_p(vlst, mods); | ||
| else if (mods.fmtl[len] == 'c') | ||
| out_str = handle_c(vlst, mods); | ||
| else if (mods.fmtl[len] == 'C') | ||
| out_str = handle_cap_c(vlst, mods); | ||
| else if (mods.fmtl[len] == 'i' || mods.fmtl[len] == 'd' || | ||
| mods.fmtl[len] == 'D') | ||
| out_str = handle_i(vlst, mods); | ||
| else | ||
| out_str = handle_type_2(vlst, mods, out_str); | ||
| return (out_str); | ||
| } |
| @@ -0,0 +1,18 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_putchar.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:15:17 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:15:19 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_putchar(char c) | ||
| { | ||
| write(1, &c, 1); | ||
| } |
| @@ -0,0 +1,18 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_putchar_fd.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:18:53 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:18:58 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_putchar_fd(char c, int fd) | ||
| { | ||
| write(fd, &c, 1); | ||
| } |
| @@ -0,0 +1,20 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_putendl.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:09:22 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:09:39 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_putendl(char const *s) | ||
| { | ||
| while (*s) | ||
| ft_putchar(*s++); | ||
| ft_putchar('\n'); | ||
| } |
| @@ -0,0 +1,20 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_putendl_fd.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:08:05 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:08:08 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_putendl_fd(char const *s, int fd) | ||
| { | ||
| while (*s) | ||
| ft_putchar_fd(*s++, fd); | ||
| ft_putchar_fd('\n', fd); | ||
| } |
| @@ -0,0 +1,32 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_putnbr.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:01:29 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:07:37 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_putnbr(int n) | ||
| { | ||
| if (n > 9) | ||
| { | ||
| ft_putnbr(n / 10); | ||
| ft_putnbr(n % 10); | ||
| } | ||
| else if (n < 0) | ||
| { | ||
| ft_putchar('-'); | ||
| n = -n; | ||
| ft_putnbr(n); | ||
| } | ||
| else | ||
| { | ||
| ft_putchar('0' + n); | ||
| } | ||
| } |
| @@ -0,0 +1,19 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_putnbr_endl.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/08/09 14:24:37 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:24:41 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_putnbr_endl(int n) | ||
| { | ||
| ft_putnbr(n); | ||
| ft_putchar('\n'); | ||
| } |
| @@ -0,0 +1,32 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_putnbr_fd.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:19:09 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:19:12 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_putnbr_fd(int n, int fd) | ||
| { | ||
| if (n > 9) | ||
| { | ||
| ft_putnbr_fd(n / 10, fd); | ||
| ft_putnbr_fd(n % 10, fd); | ||
| } | ||
| else if (n < 0) | ||
| { | ||
| ft_putchar_fd('-', fd); | ||
| n = -n; | ||
| ft_putnbr_fd(n, fd); | ||
| } | ||
| else | ||
| { | ||
| ft_putchar_fd('0' + n, fd); | ||
| } | ||
| } |
| @@ -0,0 +1,19 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_putstr.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:05:36 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:05:52 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_putstr(char const *s) | ||
| { | ||
| while (*s) | ||
| ft_putchar(*s++); | ||
| } |
| @@ -0,0 +1,19 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_putstr_fd.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:06:50 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:06:54 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_putstr_fd(char const *s, int fd) | ||
| { | ||
| while (*s) | ||
| ft_putchar_fd(*s++, fd); | ||
| } |
| @@ -0,0 +1,21 @@ | ||
| int ft_rgbtoi(int red, int green, int blue) | ||
| { | ||
| int r; | ||
| int g; | ||
| int b; | ||
| int rgbint; | ||
|
|
||
| r = 0; | ||
| g = 0; | ||
| b = 0; | ||
| if (red <= 255 && red >= 0) | ||
| r = red; | ||
| if (green <= 255 && green >= 0) | ||
| g = green; | ||
| if (blue <= 255 && blue >= 0) | ||
| b = blue; | ||
| rgbint = r; | ||
| rgbint = (rgbint << 8) + g; | ||
| rgbint = (rgbint << 8) + b; | ||
| return (rgbint); | ||
| } |
| @@ -0,0 +1,29 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_splitcnt.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/08/09 14:25:09 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:25:10 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| int ft_splitcnt(char *str, char c) | ||
| { | ||
| int cnt; | ||
| int wcnt; | ||
|
|
||
| cnt = 0; | ||
| wcnt = 0; | ||
| while (str[cnt] != '\0') | ||
| { | ||
| if (str[cnt] != c && (str[cnt + 1] == c || str[cnt + 1] == '\0')) | ||
| wcnt++; | ||
| cnt++; | ||
| } | ||
| return (wcnt); | ||
| } |
| @@ -0,0 +1,29 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_startswith.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/14 14:14:27 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/14 14:27:28 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| int ft_startswith(char *str, char *start) | ||
| { | ||
| int startlen; | ||
| int cnt; | ||
|
|
||
| startlen = ft_strlen(start); | ||
| cnt = 0; | ||
| while (cnt < startlen) | ||
| { | ||
| if (str[cnt] != start[cnt]) | ||
| return (0); | ||
| cnt++; | ||
| } | ||
| return (1); | ||
| } |
| @@ -0,0 +1,29 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strcat.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/09 10:23:44 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/09 10:23:46 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| char *ft_strcat(char *dest, char *src) | ||
| { | ||
| int cnt; | ||
| int len; | ||
|
|
||
| cnt = 0; | ||
| len = ft_strlen(dest); | ||
| while (src[cnt]) | ||
| { | ||
| dest[cnt + len] = src[cnt]; | ||
| cnt++; | ||
| } | ||
| dest[cnt + len] = '\0'; | ||
| return (dest); | ||
| } |
| @@ -0,0 +1,22 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strchr.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/10 17:34:19 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/10 17:35:04 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| char *ft_strchr(char *s, int c) | ||
| { | ||
| while (*s) | ||
| { | ||
| if (*s == c) | ||
| return (s); | ||
| s++; | ||
| } | ||
| return (0); | ||
| } |
| @@ -0,0 +1,25 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strclr.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:08:17 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:08:19 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_strclr(char *s) | ||
| { | ||
| int cnt; | ||
|
|
||
| cnt = 0; | ||
| while (s[cnt] != '\0') | ||
| { | ||
| s[cnt] = '\0'; | ||
| cnt++; | ||
| } | ||
| } |
| @@ -0,0 +1,23 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strcmp.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/09 10:22:47 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:18:46 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| int ft_strcmp(char *s1, char *s2) | ||
| { | ||
| while (*s1 == *s2) | ||
| { | ||
| if (*s1 == 0) | ||
| return (0); | ||
| s1++; | ||
| s2++; | ||
| } | ||
| return (*(unsigned char *)s1 - *(unsigned char *)s2); | ||
| } |
| @@ -0,0 +1,30 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strcmp_low.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/08/09 14:17:28 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:17:31 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| int ft_strcmp_low(char *s1, char *s2) | ||
| { | ||
| char *s1low; | ||
| char *s2low; | ||
|
|
||
| s1low = ft_strlower(s1); | ||
| s2low = ft_strlower(s2); | ||
| while (*s1low == *s2low) | ||
| { | ||
| if (*s1low == 0) | ||
| return (0); | ||
| s1low++; | ||
| s2low++; | ||
| } | ||
| return (*(unsigned char *)s1low - *(unsigned char *)s2low); | ||
| } |
| @@ -0,0 +1,25 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strcpy.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/09 10:21:24 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/09 10:21:29 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| char *ft_strcpy(char *dest, char *source) | ||
| { | ||
| int cnt; | ||
|
|
||
| cnt = 0; | ||
| while (source[cnt]) | ||
| { | ||
| dest[cnt] = source[cnt]; | ||
| cnt++; | ||
| } | ||
| dest[cnt] = '\0'; | ||
| return (dest); | ||
| } |
| @@ -0,0 +1,22 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strdel.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:13:39 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:13:45 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_strdel(char **as) | ||
| { | ||
| if (as != NULL) | ||
| { | ||
| free(*as); | ||
| *as = NULL; | ||
| } | ||
| } |
| @@ -0,0 +1,29 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strdup.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/09 12:20:55 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/09 12:40:10 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| char *ft_strdup(char *str) | ||
| { | ||
| char *out_str; | ||
| int cnt; | ||
|
|
||
| out_str = (char *)malloc(sizeof(char *) * ft_strlen(str) + 1); | ||
| cnt = 0; | ||
| while (str[cnt]) | ||
| { | ||
| out_str[cnt] = str[cnt]; | ||
| cnt++; | ||
| } | ||
| out_str[cnt] = '\0'; | ||
| return (out_str); | ||
| } |
| @@ -0,0 +1,25 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strequ.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:03:48 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:03:53 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| int ft_strequ(char const *s1, char const *s2) | ||
| { | ||
| int cnt; | ||
|
|
||
| cnt = 0; | ||
| while (s1[cnt]) | ||
| { | ||
| if (s1[cnt] != s2[cnt]) | ||
| return (0); | ||
| cnt++; | ||
| } | ||
| return (1); | ||
| } |
| @@ -0,0 +1,23 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_striter.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:12:37 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:12:40 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| void ft_striter(char *s, void (*f)(char *)) | ||
| { | ||
| int cnt; | ||
|
|
||
| cnt = 0; | ||
| while (s[cnt] != '\0') | ||
| { | ||
| f((char *)&s[cnt]); | ||
| cnt++; | ||
| } | ||
| } |
| @@ -0,0 +1,27 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_striteri.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:08:41 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/08/09 14:17:50 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| void ft_striteri(char *s, void (*f)(unsigned int, char *)) | ||
| { | ||
| int cnt; | ||
|
|
||
| if (s == NULL || f == NULL) | ||
| return ; | ||
| cnt = 0; | ||
| while (s[cnt] != '\0') | ||
| { | ||
| f(cnt, (char *)&s[cnt]); | ||
| cnt++; | ||
| } | ||
| } |
| @@ -0,0 +1,37 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strjoin.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:18:31 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:24:29 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| char *ft_strjoin(char const *s1, char const *s2) | ||
| { | ||
| size_t cnt; | ||
| size_t scnt; | ||
| char *str; | ||
| size_t len1; | ||
| size_t len2; | ||
|
|
||
| cnt = 0; | ||
| scnt = 0; | ||
| len1 = ft_strlen(s1); | ||
| len2 = ft_strlen(s2); | ||
| str = (char *)malloc(sizeof(char) * (len1 + len2 + 1)); | ||
| if (!str) | ||
| return (0); | ||
| while (scnt < len1) | ||
| str[cnt++] = s1[scnt++]; | ||
| scnt = 0; | ||
| while (scnt < len2) | ||
| str[cnt++] = s2[scnt++]; | ||
| str[cnt] = '\0'; | ||
| return (str); | ||
| } |
| @@ -0,0 +1,37 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strlcat.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:14:47 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/31 17:16:58 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| size_t ft_strlcat(char *dst, char *src, size_t size) | ||
| { | ||
| size_t cnt; | ||
| size_t dlen; | ||
| char *d; | ||
| char *s; | ||
|
|
||
| cnt = 0; | ||
| dlen = 0; | ||
| d = dst; | ||
| s = src; | ||
| while (dst[cnt] && cnt < size) | ||
| cnt++; | ||
| dlen = cnt; | ||
| while (s[cnt - dlen] && cnt < size) | ||
| { | ||
| d[cnt] = s[cnt - dlen]; | ||
| cnt++; | ||
| } | ||
| if (dlen < size) | ||
| d[cnt] = '\0'; | ||
| return (dlen + ft_strlen(src)); | ||
| } |
| @@ -0,0 +1,23 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strlen.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/09 10:20:58 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 16:39:14 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| size_t ft_strlen(char const *str) | ||
| { | ||
| int cnt; | ||
|
|
||
| cnt = 0; | ||
| while (str[cnt]) | ||
| cnt++; | ||
| return (cnt); | ||
| } |
| @@ -0,0 +1,33 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strlower.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/06/06 13:10:20 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/06/06 13:11:21 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| char *ft_strlower(char const *str) | ||
| { | ||
| char *out_str; | ||
| int cnt; | ||
|
|
||
| out_str = NULL; | ||
| cnt = 0; | ||
| out_str = (char *)malloc(sizeof(str)); | ||
| while (str[cnt] != '\0') | ||
| { | ||
| if (ft_isupper(str[cnt])) | ||
| out_str[cnt] = ft_tolower(str[cnt]); | ||
| else | ||
| out_str[cnt] = str[cnt]; | ||
| cnt++; | ||
| } | ||
| out_str[cnt] = '\0'; | ||
| return (out_str); | ||
| } |
| @@ -0,0 +1,34 @@ | ||
| /* ************************************************************************** */ | ||
| /* */ | ||
| /* ::: :::::::: */ | ||
| /* ft_strmap.c :+: :+: :+: */ | ||
| /* +:+ +:+ +:+ */ | ||
| /* By: mvanwyk <marvin@42.fr> +#+ +:+ +#+ */ | ||
| /* +#+#+#+#+#+ +#+ */ | ||
| /* Created: 2016/05/15 15:14:10 by mvanwyk #+# #+# */ | ||
| /* Updated: 2016/05/15 15:14:16 by mvanwyk ### ########.fr */ | ||
| /* */ | ||
| /* ************************************************************************** */ | ||
|
|
||
| #include "libft.h" | ||
|
|
||
| char *ft_strmap(char const *s, char (*f)(char)) | ||
| { | ||
| char *str; | ||
| int cnt; | ||
| int scnt; | ||
|
|
||
| cnt = 0; | ||
| scnt = 0; | ||
| if (!s || !f) | ||
| return (NULL); | ||
| str = (char *)malloc(sizeof(char *) * ft_strlen(s) + 1); | ||
| while (s[cnt] != '\0') | ||
| { | ||
| str[scnt] = f((int)s[cnt]); | ||
| cnt++; | ||
| scnt++; | ||
| } | ||
| str[scnt] = '\0'; | ||
| return (str); | ||
| } |