From 32356ba7a002dc5c1c920bb8886aed834cf3d1d2 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Tue, 19 Nov 2019 21:13:55 +0100 Subject: [PATCH] makefile organise --- .Makefile.swn | Bin 40960 -> 0 bytes Makefile | 139 ++++++++++------------------------ a.out | Bin 8860 -> 8432 bytes srcs/a.out | Bin 8720 -> 0 bytes srcs/add/ft_any.c | 26 +++++++ srcs/add/ft_arraymap.c | 28 +++++++ srcs/add/ft_atoibase.c | 75 ++++++++++++++++++ srcs/add/ft_convertbase.c | 86 +++++++++++++++++++++ srcs/add/ft_foreach.c | 22 ++++++ srcs/add/ft_issort.c | 26 +++++++ srcs/{ => add}/ft_memalloc.c | 0 srcs/add/ft_memccpy.c | 36 +++++++++ srcs/add/ft_memdel.c | 26 +++++++ srcs/add/ft_putchar.c | 18 +++++ srcs/add/ft_putendl.c | 19 +++++ srcs/add/ft_putnbr.c | 18 +++++ srcs/add/ft_putnbrbase.c | 59 +++++++++++++++ srcs/add/ft_putnbrendl.c | 18 +++++ srcs/add/ft_putnbrendl_fd.c | 29 +++++++ srcs/add/ft_putstr.c | 22 ++++++ srcs/add/ft_strcat.c | 32 ++++++++ srcs/add/ft_strclr.c | 23 ++++++ srcs/add/ft_strcmp.c | 28 +++++++ srcs/add/ft_strcpy.c | 28 +++++++ srcs/add/ft_strdel.c | 26 +++++++ srcs/add/ft_strequ.c | 24 ++++++ srcs/add/ft_striter.c | 23 ++++++ srcs/add/ft_striteri.c | 26 +++++++ srcs/add/ft_strjoinfree.c | 28 +++++++ srcs/add/ft_strmap.c | 32 ++++++++ srcs/add/ft_strmultisplit.c | 83 ++++++++++++++++++++ srcs/add/ft_strncat.c | 32 ++++++++ srcs/add/ft_strncpy.c | 30 ++++++++ srcs/add/ft_strnequ.c | 25 ++++++ srcs/add/ft_strnew.c | 27 +++++++ srcs/add/ft_strstr.c | 42 ++++++++++ srcs/bonus/ft_lstadd.c | 19 +++++ srcs/bonus/ft_lstdel.c | 20 +++++ srcs/bonus/ft_lstdelone.c | 20 +++++ srcs/bonus/ft_lstiter.c | 22 ++++++ srcs/bonus/ft_lstmap.c | 35 +++++++++ srcs/bonus/ft_lstnew.c | 35 +++++++++ srcs/part1/ft_atoi.c | 39 ++++++++++ srcs/part1/ft_bzero.c | 27 +++++++ srcs/{ => part1}/ft_calloc.c | 9 ++- srcs/part1/ft_isalnum.c | 18 +++++ srcs/part1/ft_isalpha.c | 18 +++++ srcs/part1/ft_isascii.c | 18 +++++ srcs/part1/ft_isdigit.c | 18 +++++ srcs/part1/ft_isprint.c | 18 +++++ srcs/part1/ft_memchr.c | 30 ++++++++ srcs/part1/ft_memcmp.c | 32 ++++++++ srcs/part1/ft_memcpy.c | 31 ++++++++ srcs/part1/ft_memmove.c | 35 +++++++++ srcs/part1/ft_memset.c | 29 +++++++ srcs/part1/ft_strchr.c | 33 ++++++++ srcs/part1/ft_strdup.c | 32 ++++++++ srcs/{ => part1}/ft_strlcat.c | 6 +- srcs/{ => part1}/ft_strlcpy.c | 7 +- srcs/part1/ft_strlen.c | 27 +++++++ srcs/part1/ft_strncmp.c | 32 ++++++++ srcs/part1/ft_strnstr.c | 42 ++++++++++ srcs/part1/ft_strrchr.c | 32 ++++++++ srcs/part1/ft_tolower.c | 20 +++++ srcs/part1/ft_toupper.c | 20 +++++ srcs/part2/ft_itoa.c | 35 +++++++++ srcs/part2/ft_putchar_fd.c | 18 +++++ srcs/part2/ft_putendl_fd.c | 23 ++++++ srcs/part2/ft_putnbr_fd.c | 28 +++++++ srcs/part2/ft_putstr_fd.c | 23 ++++++ srcs/part2/ft_split.c | 62 +++++++++++++++ srcs/part2/ft_strjoin.c | 54 +++++++++++++ srcs/part2/ft_strmapi.c | 33 ++++++++ srcs/{ => part2}/ft_strtrim.c | 0 srcs/{ => part2}/ft_substr.c | 0 test/.Makefile.swp | Bin 0 -> 12288 bytes test/Makefile | 12 +-- test/builds/main.o | Bin 1536 -> 780 bytes test/builds/putchar.o | Bin 1400 -> 684 bytes test/builds/to_uppercase.o | Bin 1256 -> 632 bytes test/builds/transform.o | Bin 1248 -> 628 bytes test/libdeux.a | Bin 0 -> 1704 bytes test/libtest.a | Bin 0 -> 3224 bytes test/libtrois.a | Bin 0 -> 3576 bytes test/test | Bin 5808 -> 8576 bytes 85 files changed, 2052 insertions(+), 116 deletions(-) delete mode 100644 .Makefile.swn delete mode 100755 srcs/a.out create mode 100644 srcs/add/ft_any.c create mode 100644 srcs/add/ft_arraymap.c create mode 100644 srcs/add/ft_atoibase.c create mode 100644 srcs/add/ft_convertbase.c create mode 100644 srcs/add/ft_foreach.c create mode 100644 srcs/add/ft_issort.c rename srcs/{ => add}/ft_memalloc.c (100%) create mode 100644 srcs/add/ft_memccpy.c create mode 100644 srcs/add/ft_memdel.c create mode 100644 srcs/add/ft_putchar.c create mode 100644 srcs/add/ft_putendl.c create mode 100644 srcs/add/ft_putnbr.c create mode 100644 srcs/add/ft_putnbrbase.c create mode 100644 srcs/add/ft_putnbrendl.c create mode 100644 srcs/add/ft_putnbrendl_fd.c create mode 100644 srcs/add/ft_putstr.c create mode 100644 srcs/add/ft_strcat.c create mode 100644 srcs/add/ft_strclr.c create mode 100644 srcs/add/ft_strcmp.c create mode 100644 srcs/add/ft_strcpy.c create mode 100644 srcs/add/ft_strdel.c create mode 100644 srcs/add/ft_strequ.c create mode 100644 srcs/add/ft_striter.c create mode 100644 srcs/add/ft_striteri.c create mode 100644 srcs/add/ft_strjoinfree.c create mode 100644 srcs/add/ft_strmap.c create mode 100644 srcs/add/ft_strmultisplit.c create mode 100644 srcs/add/ft_strncat.c create mode 100644 srcs/add/ft_strncpy.c create mode 100644 srcs/add/ft_strnequ.c create mode 100644 srcs/add/ft_strnew.c create mode 100644 srcs/add/ft_strstr.c create mode 100644 srcs/bonus/ft_lstadd.c create mode 100644 srcs/bonus/ft_lstdel.c create mode 100644 srcs/bonus/ft_lstdelone.c create mode 100644 srcs/bonus/ft_lstiter.c create mode 100644 srcs/bonus/ft_lstmap.c create mode 100644 srcs/bonus/ft_lstnew.c create mode 100644 srcs/part1/ft_atoi.c create mode 100644 srcs/part1/ft_bzero.c rename srcs/{ => part1}/ft_calloc.c (85%) create mode 100644 srcs/part1/ft_isalnum.c create mode 100644 srcs/part1/ft_isalpha.c create mode 100644 srcs/part1/ft_isascii.c create mode 100644 srcs/part1/ft_isdigit.c create mode 100644 srcs/part1/ft_isprint.c create mode 100644 srcs/part1/ft_memchr.c create mode 100644 srcs/part1/ft_memcmp.c create mode 100644 srcs/part1/ft_memcpy.c create mode 100644 srcs/part1/ft_memmove.c create mode 100644 srcs/part1/ft_memset.c create mode 100644 srcs/part1/ft_strchr.c create mode 100644 srcs/part1/ft_strdup.c rename srcs/{ => part1}/ft_strlcat.c (95%) rename srcs/{ => part1}/ft_strlcpy.c (92%) create mode 100644 srcs/part1/ft_strlen.c create mode 100644 srcs/part1/ft_strncmp.c create mode 100644 srcs/part1/ft_strnstr.c create mode 100644 srcs/part1/ft_strrchr.c create mode 100644 srcs/part1/ft_tolower.c create mode 100644 srcs/part1/ft_toupper.c create mode 100644 srcs/part2/ft_itoa.c create mode 100644 srcs/part2/ft_putchar_fd.c create mode 100644 srcs/part2/ft_putendl_fd.c create mode 100644 srcs/part2/ft_putnbr_fd.c create mode 100644 srcs/part2/ft_putstr_fd.c create mode 100644 srcs/part2/ft_split.c create mode 100644 srcs/part2/ft_strjoin.c create mode 100644 srcs/part2/ft_strmapi.c rename srcs/{ => part2}/ft_strtrim.c (100%) rename srcs/{ => part2}/ft_substr.c (100%) create mode 100644 test/.Makefile.swp create mode 100644 test/libdeux.a create mode 100644 test/libtest.a create mode 100644 test/libtrois.a mode change 100644 => 100755 test/test diff --git a/.Makefile.swn b/.Makefile.swn deleted file mode 100644 index e91197adb27df3bf5143895c27615975bd638834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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 OKdFSmPiD6VlK%m?(T?!| literal 8860 zcmeHNU2IcT96x14%V$d>IAua5nL$1_n1&2Q(~;eHKqd%VMB}{cx{ft;A9k%WlO=;v zv&(g6F)=>q0}nos_@E||XcRI&G8SWEB^nw-Odr79CYUU;hlU9C_dn;{?zS5~^Kk#k zx#$0V{`Ysz*}c7Izuf)%{-ca}su&wx#2E9T`4=;mW&v=FJ%Ps2bp2rS%i5dTp#!8X zCr`P!phS7HaMblS?MPd>i-`A^>zI;J8$&swk%z7)BF7WNNvh13S&Ey1X-l=VldM>& zsAi**kyl+GN+i36N~+3y|E`qz)+rBLwgbE>-y=#P^Xa{j*kB|MU1h#n08I7mQT`+o z?j@R6Uw9}HkM-ecJO_+0(pY&51^Cy51kthlcyQ24ebPA`W@se5GXqhT?4^ z{Ar!or0Yiq9Lr>0KEJBZs{%-_%ttlar0cQJ|J7Hc@@-TBBs=p_E_*C;ncG+U_rCgy z*0R^0z(56VkcmE5lR$X{u0qS$2JG8y#0O-4FZw2u6$Jx~b%H;G{s?+XQ-j8yW^6gS zS@dVoFGD+s<|KRHIdO2>iJwILib^G9Y#SCpqcIwiL-B@Kw5y?eIMxlBXe}Dm@xzy| zFMDga={a-st80Hup1RWrT>#C4##UnUq7g5!th(gc1Rl_q2zZZDo*B9U2hq4qXk?>% z_T0URKLeh*T2Rm7;h{vNuYONG>WX&33G@saLy%d_` zFK8Lx$yG8DEZQ{O3we6@!8{E`juhYvJar}5aarEqiQ7RuQ@Oc#C7y}gWaM)-U5i1e zSmS&R4QHJ5i&4|EJ6>b`i3jQT^Z+-0;^QL|MtZq$P=4=vt#6zT=L2O{KR4108tX$i zrNj``P!;YMi@r2RIp2xQ7y0-(5r_eJ_!Anz>O=$|AD8O(2|oVf7o;(!zGl`zaLppL z#kfROadTW2{EpX1&mz0Ew%kS4WqVOw7P-w5B=ZJ`HAmK)1Zi0fyGu3vjK~MqaD&1> zEq7ULUrO?+Zoy**^OE!4^gO*-j*9FIBP3YRHXDV+X3(#2S17 znRy(S3Hik&vpSgboT(OPgFcTuQKSzdYtVdP{Oa6)gDvBHk?ajhw*Svymy+rHk?cV< z^u!7}gsW4IRLJz72TuFR3VEzTCRm*Q^m)xbTV4VlpMS(zF1nz7CSGX|;52+bp8DKJ pC+6TAO9G(P1=M9LMa*}ZMy?&9DowtWO4BYU+@9)rD-6XG{Rd}FEbagR diff --git a/srcs/a.out b/srcs/a.out deleted file mode 100755 index b2001ccd6f8bdd9be80f61ba355724aa5f999130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8720 zcmeHNU1%It6u#3`U2E-Zq}W=k9g8WpLb}x=mA1H%4o)!9{$!yF?KGQin!sig_lG7z zAh-==vKHclAo$Wp^+AI4p&-;Gl_nO{_+Xlc3j46?EUYm2Afag2@0+=k>~5;>${e_J z@45Hf@1FCWJLK-%e1G@1dk+brGzl@bK?tFu%xn~5Txe(s@dS#2Vw%U>Uen*!Prk|C zdQs}t`)b5lhM{S8>8HEuP2Bn6`aU6b_$D5Zg%+lnO$=w*@}v=O`VjN9pAeFG56TV?&+JPihZ1S@HR4T4yl167b@IL{ z>-_7koDy&CJ?LnE<8}R5yT6CEhB%>9!qOSyxIDPMLhQzS7GYZx zB7`c0dOK=gG|e3nQPjieBn-zFpkphGsb>Iyn(gB#wc_HTqc)D(akhss-`}gXV_TqT zDBS1!bD8x1WPg1B`H|##=#(c>=tsxpZ&wa49Ljw#_ha&c7P<2R`ZN>;MQqvR7Peg< zn&y;!X!{(~} zdG%hYldnJm1_A~G1_A~G2L3M$#0=|a!x~*Ntej)yM;)PFdIhl=1sz>_(U{kH8l!F- zhjmBI@AR~yQRuV{>z0w9Qw%F+-`p4y<)v!1TBiA#8|to0YzP-WU(v9JV-!&G^NKP1 ztFUAEi;fj+Bflcl@ke2bwN^N#>@6{BV^P@80RN`l1!&g^3y#sb{MXu<8@*E!KSF#f zSAi=5Lr-f%;~- zm>0F~lz;M|91=Q4dzmlBDpNDBmtaJ49HXbx_JDZ&LdxJ3C@vQiE{0PD5E>AZ4bg{3TbCdBUs}gw^V&dM&JlD{ zpsZ@?rSccRKk&yYh3;w-is%?k=g{39FQ??q6+Q{}Z-CzKQwKl_qt3 zuQwa-&2Y#~QDG=-e@t&LA2m2;-JBNoW1OZ}4$OG3#8kCq0zK81Nj!PJe(D`mZKtX& z-KeMf*jfGsq4Y7j@*T8VGMn7nH=n)wjJ6KuA{TP&|FbW+|M_e1AS&WL(A}RBX?~Ru8{+RK(u3j0uPym{Ov?uHoi-J(ni9^w?ty1d=G(ByqAyHf58X%BIUFa)?Cune=nGF6ZKJ DX(Epf diff --git a/srcs/add/ft_any.c b/srcs/add/ft_any.c new file mode 100644 index 0000000..349e3a9 --- /dev/null +++ b/srcs/add/ft_any.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_any.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/16 15:14:49 by hulamy #+# #+# */ +/* Updated: 2018/11/16 15:14:53 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_any(char **tab, int (*f)(char*)) +{ + int i; + + i = -1; + if (!tab) + return (0); + while (tab[++i]) + if (f(tab[i]) == 1) + return (1); + return (0); +} diff --git a/srcs/add/ft_arraymap.c b/srcs/add/ft_arraymap.c new file mode 100644 index 0000000..267510a --- /dev/null +++ b/srcs/add/ft_arraymap.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_arraymap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/16 15:17:24 by hulamy #+# #+# */ +/* Updated: 2018/11/16 15:17:27 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int *ft_arraymap(int *tab, int length, int (*f)(int)) +{ + int i; + int *newtab; + + i = -1; + if (!tab) + return (NULL); + if (!(newtab = (int*)malloc(sizeof(*newtab) * (length + 1)))) + return (NULL); + while (++i < length) + newtab[i] = (*f)(tab[i]); + return (newtab); +} diff --git a/srcs/add/ft_atoibase.c b/srcs/add/ft_atoibase.c new file mode 100644 index 0000000..fdb92d1 --- /dev/null +++ b/srcs/add/ft_atoibase.c @@ -0,0 +1,75 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoibase.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/16 15:15:31 by hulamy #+# #+# */ +/* Updated: 2018/11/16 15:22:34 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int is_valid_base(char *base, int i, int j) +{ + while (base[i]) + { + j = i + 1; + while (base[j]) + { + if (base[i] == base[j]) + return (0); + j++; + } + if (base[i] == '-' || base[i] == '+') + return (0); + i++; + } + if (i >= 2) + return (1); + return (0); +} + +static int skip(int i, char *str, int *n) +{ + while ((str[i] == 32) || (str[i] > 8 && str[i] < 14)) + i++; + if (str[i] == '+' || str[i] == '-') + { + if (str[i] == '-') + *n = -1; + i++; + } + return (i); +} + +int ft_atoibase(char *str, char *base) +{ + int i; + int j; + int length; + int res; + int n; + + length = 0; + res = 0; + n = 1; + if (!is_valid_base(base, 0, 0)) + return (0); + while (base[length]) + length++; + i = skip(0, str, &n); + while (str[i] && str[i] > 32 && str[i] != '-' && str[i] != '+') + { + j = 0; + while (str[i] != base[j] && base[j]) + j++; + if (base[j] == '\0') + return (0); + res = (res * length) + j; + i++; + } + return (res * n); +} diff --git a/srcs/add/ft_convertbase.c b/srcs/add/ft_convertbase.c new file mode 100644 index 0000000..7fe9bad --- /dev/null +++ b/srcs/add/ft_convertbase.c @@ -0,0 +1,86 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_convertbase.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/16 15:15:55 by hulamy #+# #+# */ +/* Updated: 2019/04/17 17:09:35 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int ft_malloc_size(int decimal, int length, int i) +{ + if (decimal <= 0) + i++; + while (decimal) + { + decimal /= length; + i++; + } + return (i); +} + +static char *ft_decimal_to_base(int decimal, char *base, char *res, int size) +{ + long nb; + int i; + + nb = decimal; + i = 0; + while (base[i]) + i++; + if (nb < 0) + nb = -nb; + while (--size >= 0) + { + res[size] = base[nb % i]; + nb /= i; + } + return (res); +} + +static int ft_base_to_decimal(char *nbr, char *base, int length, int i) +{ + long decimal; + int j; + + decimal = 0; + if (nbr[i] == '-') + i++; + while (nbr[i]) + { + j = 0; + while (nbr[i] != base[j] && base[j]) + j++; + decimal = (decimal * length) + j; + i++; + } + if (nbr[0] == '-') + decimal = -decimal; + return (decimal); +} + +char *ft_convertbase(char *nbr, char *base_from, char *base_to) +{ + int length; + int size; + int decimal; + char *res; + + res = 0; + length = 0; + while (base_from[length]) + length++; + decimal = ft_base_to_decimal(nbr, base_from, length, 0); + length = 0; + while (base_to[length]) + length++; + size = ft_malloc_size(decimal, length, 0); + res = (char *)malloc(sizeof(char) * (size + 1)); + res[size] = '\0'; + return (ft_decimal_to_base(decimal, base_to, res, size)); +} diff --git a/srcs/add/ft_foreach.c b/srcs/add/ft_foreach.c new file mode 100644 index 0000000..aaf7649 --- /dev/null +++ b/srcs/add/ft_foreach.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_foreach.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/16 15:16:10 by hulamy #+# #+# */ +/* Updated: 2018/11/16 15:16:11 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_foreach(int *tab, int length, void (*f)(int)) +{ + int i; + + i = 0; + while (i < length && tab && tab[i]) + (*f)(tab[i++]); +} diff --git a/srcs/add/ft_issort.c b/srcs/add/ft_issort.c new file mode 100644 index 0000000..842195b --- /dev/null +++ b/srcs/add/ft_issort.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_issort.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/16 15:18:14 by hulamy #+# #+# */ +/* Updated: 2018/11/16 15:18:15 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_issort(int *tab, int length, int (*f)(int, int)) +{ + int i; + + i = -1; + if (!tab) + return (0); + while (++i < length - 1) + if (f(tab[i], tab[i + 1]) > 0) + return (0); + return (1); +} diff --git a/srcs/ft_memalloc.c b/srcs/add/ft_memalloc.c similarity index 100% rename from srcs/ft_memalloc.c rename to srcs/add/ft_memalloc.c diff --git a/srcs/add/ft_memccpy.c b/srcs/add/ft_memccpy.c new file mode 100644 index 0000000..a8bf1ee --- /dev/null +++ b/srcs/add/ft_memccpy.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memccpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:12:10 by hulamy #+# #+# */ +/* Updated: 2019/04/03 15:42:41 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** copy string until character is found and place cursor in dst +** after last byte copied +*/ + +#include "libft.h" + +void *ft_memccpy(void *dst, const void *src, int c, size_t n) +{ + unsigned char *dest; + unsigned char *sourc; + size_t i; + + i = -1; + dest = (unsigned char *)dst; + sourc = (unsigned char *)src; + while (++i < n) + { + dest[i] = sourc[i]; + if (sourc[i] == (unsigned char)c) + return (dst + i + 1); + } + return (NULL); +} diff --git a/srcs/add/ft_memdel.c b/srcs/add/ft_memdel.c new file mode 100644 index 0000000..f057043 --- /dev/null +++ b/srcs/add/ft_memdel.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memdel.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:13:26 by hulamy #+# #+# */ +/* Updated: 2019/04/03 15:44:12 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** free memory +*/ + +#include "libft.h" + +void ft_memdel(void **ap) +{ + if (ap && *ap) + { + free(*ap); + *ap = 0; + } +} diff --git a/srcs/add/ft_putchar.c b/srcs/add/ft_putchar.c new file mode 100644 index 0000000..b0aa9cb --- /dev/null +++ b/srcs/add/ft_putchar.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:14:00 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:14:01 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putchar(char c) +{ + write(1, &c, 1); +} diff --git a/srcs/add/ft_putendl.c b/srcs/add/ft_putendl.c new file mode 100644 index 0000000..c1d9a6a --- /dev/null +++ b/srcs/add/ft_putendl.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putendl.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:14:32 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:14:33 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putendl(char const *s) +{ + ft_putstr(s); + ft_putchar('\n'); +} diff --git a/srcs/add/ft_putnbr.c b/srcs/add/ft_putnbr.c new file mode 100644 index 0000000..bb8e2d7 --- /dev/null +++ b/srcs/add/ft_putnbr.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:14:57 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:14:58 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbr(int n) +{ + ft_putnbr_fd(n, 1); +} diff --git a/srcs/add/ft_putnbrbase.c b/srcs/add/ft_putnbrbase.c new file mode 100644 index 0000000..bf0d627 --- /dev/null +++ b/srcs/add/ft_putnbrbase.c @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbrbase.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/16 15:17:00 by hulamy #+# #+# */ +/* Updated: 2018/11/16 15:23:43 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int check(char *base) +{ + int i; + int j; + + i = 0; + while (base[i]) + { + j = i + 1; + while (base[j]) + { + if (base[i] == base[j]) + return (0); + j++; + } + if (base[i] == '-' || base[i] == '+') + return (0); + i++; + } + if (i >= 2) + return (1); + return (0); +} + +void ft_putnbrbase(int nbr, char *base) +{ + int i; + long n; + + i = 0; + n = nbr; + if (check(base)) + { + if (n < 0) + { + ft_putchar('-'); + n = -n; + } + while (base[i]) + i++; + if (n >= i) + ft_putnbrbase(n / i, base); + ft_putchar(base[n % i]); + } +} diff --git a/srcs/add/ft_putnbrendl.c b/srcs/add/ft_putnbrendl.c new file mode 100644 index 0000000..ddd05f6 --- /dev/null +++ b/srcs/add/ft_putnbrendl.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbrendl.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/02/19 10:38:07 by hulamy #+# #+# */ +/* Updated: 2019/02/19 10:42:46 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbrendl(int n) +{ + ft_putnbrendl_fd(n, 1); +} diff --git a/srcs/add/ft_putnbrendl_fd.c b/srcs/add/ft_putnbrendl_fd.c new file mode 100644 index 0000000..266dc55 --- /dev/null +++ b/srcs/add/ft_putnbrendl_fd.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbrendl_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/02/19 10:37:58 by hulamy #+# #+# */ +/* Updated: 2019/02/19 10:42:48 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbrendl_fd(int n, int fd) +{ + long l; + + l = n; + if (l < 0) + { + ft_putchar_fd('-', fd); + l *= -1; + } + if (l >= 10) + ft_putnbr_fd(l / 10, fd); + ft_putchar_fd((l % 10) + '0', fd); + ft_putchar_fd('\n', fd); +} diff --git a/srcs/add/ft_putstr.c b/srcs/add/ft_putstr.c new file mode 100644 index 0000000..78617eb --- /dev/null +++ b/srcs/add/ft_putstr.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:15:19 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:15:19 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putstr(char const *s) +{ + int i; + + i = 0; + while (s && s[i]) + ft_putchar(s[i++]); +} diff --git a/srcs/add/ft_strcat.c b/srcs/add/ft_strcat.c new file mode 100644 index 0000000..d78543c --- /dev/null +++ b/srcs/add/ft_strcat.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strcat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:15:40 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:12:58 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** append src to dest (dest must have sufficient space) and return dest +*/ + +#include "libft.h" + +char *ft_strcat(char *dest, const char *src) +{ + int i; + int j; + + i = 0; + j = 0; + while (dest[i]) + i++; + while (src[j]) + dest[i++] = src[j++]; + dest[i] = '\0'; + return (dest); +} diff --git a/srcs/add/ft_strclr.c b/srcs/add/ft_strclr.c new file mode 100644 index 0000000..5e3952c --- /dev/null +++ b/srcs/add/ft_strclr.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strclr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:15:58 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:17:42 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** fill string with zeros +*/ + +#include "libft.h" + +void ft_strclr(char *s) +{ + if (s) + ft_bzero(s, ft_strlen(s)); +} diff --git a/srcs/add/ft_strcmp.c b/srcs/add/ft_strcmp.c new file mode 100644 index 0000000..f6603c3 --- /dev/null +++ b/srcs/add/ft_strcmp.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:16:08 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:18:30 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** compare two null terminated strings and return value +** of difference between first two different character +*/ + +#include "libft.h" + +int ft_strcmp(const char *s1, const char *s2) +{ + int i; + + i = 0; + while (s1[i] && s1[i] == s2[i]) + i++; + return ((unsigned char)s1[i] - (unsigned char)s2[i]); +} diff --git a/srcs/add/ft_strcpy.c b/srcs/add/ft_strcpy.c new file mode 100644 index 0000000..7d2a45b --- /dev/null +++ b/srcs/add/ft_strcpy.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:16:17 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:19:19 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** copy string src to dst including '\0' and return dst +*/ + +#include "libft.h" + +char *ft_strcpy(char *dest, const char *src) +{ + int i; + + i = -1; + while (src[++i]) + dest[i] = src[i]; + dest[i] = '\0'; + return (dest); +} diff --git a/srcs/add/ft_strdel.c b/srcs/add/ft_strdel.c new file mode 100644 index 0000000..82cbc2e --- /dev/null +++ b/srcs/add/ft_strdel.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdel.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:16:25 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:19:54 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** free memory +*/ + +#include "libft.h" + +void ft_strdel(char **as) +{ + if (as && *as) + { + free(*as); + *as = 0; + } +} diff --git a/srcs/add/ft_strequ.c b/srcs/add/ft_strequ.c new file mode 100644 index 0000000..fa4d4e4 --- /dev/null +++ b/srcs/add/ft_strequ.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strequ.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:16:44 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:21:02 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** return 0 if strings s1 and s2 are identical and 1 if not +*/ + +#include "libft.h" + +int ft_strequ(char const *s1, char const *s2) +{ + if (!s1 || !s2) + return (0); + return (ft_strcmp(s1, s2) == 0); +} diff --git a/srcs/add/ft_striter.c b/srcs/add/ft_striter.c new file mode 100644 index 0000000..9d3b21f --- /dev/null +++ b/srcs/add/ft_striter.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_striter.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:16:53 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:21:14 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** apply function f to each element of string s +*/ + +#include "libft.h" + +void ft_striter(char *s, void (*f)(char *)) +{ + while (s && *s && f) + f(s++); +} diff --git a/srcs/add/ft_striteri.c b/srcs/add/ft_striteri.c new file mode 100644 index 0000000..60fd7f6 --- /dev/null +++ b/srcs/add/ft_striteri.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_striteri.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:17:04 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:21:27 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** apply function f to each element of string s with index specified +*/ + +#include "libft.h" + +void ft_striteri(char *s, void (*f)(unsigned int, char *)) +{ + int i; + + i = 0; + while (s && *s && f) + f(i++, s++); +} diff --git a/srcs/add/ft_strjoinfree.c b/srcs/add/ft_strjoinfree.c new file mode 100644 index 0000000..8e0247b --- /dev/null +++ b/srcs/add/ft_strjoinfree.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoinfree.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/03/05 15:05:28 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:22:28 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** create a new string by concatenating the two strings s1 +** and s2 then freeing them +*/ + +#include "libft.h" + +char *ft_strjoinfree(char *s1, char *s2) +{ + char *str; + + if (!(str = ft_strjoin(s1, s2))) + return (NULL); + free(s1); + return (str); +} diff --git a/srcs/add/ft_strmap.c b/srcs/add/ft_strmap.c new file mode 100644 index 0000000..ef82f97 --- /dev/null +++ b/srcs/add/ft_strmap.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:17:49 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:23:12 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** create a new array with the result of function f on every element of s +*/ + +#include "libft.h" + +char *ft_strmap(char const *s, char (*f)(char)) +{ + char *str; + int i; + + if (!s) + return (NULL); + if (!(str = ft_strnew(ft_strlen(s)))) + return (NULL); + i = -1; + while (s[++i]) + str[i] = f(s[i]); + return (str); +} diff --git a/srcs/add/ft_strmultisplit.c b/srcs/add/ft_strmultisplit.c new file mode 100644 index 0000000..ed2ed98 --- /dev/null +++ b/srcs/add/ft_strmultisplit.c @@ -0,0 +1,83 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmultisplit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/16 15:18:29 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:23:57 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** return an array of string with each word found in str +** with any character of charset difining a separator +*/ + +#include "libft.h" + +static int ft_is_separator(char c, char *charset, int i) +{ + while (charset[i]) + { + if (c == charset[i]) + return (1); + i++; + } + c = charset[i]; + return (0); +} + +static int ft_count(char *str, int word, char **tab, char *charset) +{ + int i; + int j; + int k; + + k = 0; + i = 0; + while (ft_is_separator(str[k], charset, 0) == 1) + k++; + while (str[k] != '\0' && i != word) + { + j = 0; + while (!ft_is_separator(str[k + j], charset, 0) && str[k + j] != '\0') + { + if (word == -2) + tab[i][j] = str[k + j]; + j++; + } + k += j; + while (ft_is_separator(str[k], charset, 0)) + k++; + i++; + } + if (word == -1) + return (i); + return (j); +} + +char **ft_strmultisplit(char *str, char *charset) +{ + char **tab; + int i; + int j; + int k; + + k = 0; + tab = 0; + i = ft_count(str, -1, tab, charset); + if (!(tab = (char**)malloc(sizeof(tab) * (i + 1)))) + return (NULL); + tab[i] = 0; + while (k < i) + { + j = ft_count(str, k + 1, tab, charset); + tab[k] = (char*)malloc(sizeof(*tab) * (j + 1)); + tab[k][j] = '\0'; + k++; + } + ft_count(str, -2, tab, charset); + return (tab); +} diff --git a/srcs/add/ft_strncat.c b/srcs/add/ft_strncat.c new file mode 100644 index 0000000..cf52aae --- /dev/null +++ b/srcs/add/ft_strncat.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:18:24 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:24:11 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** append n character of src to dest and return dest +*/ + +#include "libft.h" + +char *ft_strncat(char *dest, const char *src, size_t nb) +{ + size_t i; + size_t j; + + i = 0; + j = 0; + while (dest[i]) + i++; + while (src[j] && j < nb) + dest[i++] = src[j++]; + dest[i] = '\0'; + return (dest); +} diff --git a/srcs/add/ft_strncpy.c b/srcs/add/ft_strncpy.c new file mode 100644 index 0000000..91ea1b3 --- /dev/null +++ b/srcs/add/ft_strncpy.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:18:44 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:24:59 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** copy n characters from string src to dst including '\0' +** if space remain it's filled zith '\0', and return dst +*/ + +#include "libft.h" + +char *ft_strncpy(char *dest, const char *src, size_t n) +{ + size_t i; + + i = -1; + while (++i < n && src[i]) + dest[i] = src[i]; + while (i < n) + dest[i++] = '\0'; + return (dest); +} diff --git a/srcs/add/ft_strnequ.c b/srcs/add/ft_strnequ.c new file mode 100644 index 0000000..668f3fa --- /dev/null +++ b/srcs/add/ft_strnequ.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnequ.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:18:55 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:25:20 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** return 0 if n first character of strings s1 and s2 are identical +** and 1 if not +*/ + +#include "libft.h" + +int ft_strnequ(char const *s1, char const *s2, size_t n) +{ + if (!s1 || !s2) + return (0); + return (ft_strncmp(s1, s2, n) == 0); +} diff --git a/srcs/add/ft_strnew.c b/srcs/add/ft_strnew.c new file mode 100644 index 0000000..c7855ad --- /dev/null +++ b/srcs/add/ft_strnew.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:19:08 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:25:38 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** create a new string of length size, fill with zero, and return pointer to it +*/ + +#include "libft.h" + +char *ft_strnew(size_t size) +{ + char *str; + + if (!(str = (char *)malloc(sizeof(char) * (size + 1)))) + return (NULL); + ft_bzero(str, size + 1); + return (str); +} diff --git a/srcs/add/ft_strstr.c b/srcs/add/ft_strstr.c new file mode 100644 index 0000000..c7a3535 --- /dev/null +++ b/srcs/add/ft_strstr.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:19:45 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:26:59 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** locate the first occurence of the string little in big +** and return a pointer to this occurence if found +*/ + +#include "libft.h" + +char *ft_strstr(const char *str, const char *to_find) +{ + int i; + int j; + + j = 0; + i = 0; + if (!ft_strlen(to_find)) + return ((char *)str); + while (i == 0) + { + while (to_find[i] && to_find[i] == str[j + i]) + i++; + if (to_find[i]) + { + j++; + if (str[j] == '\0' && to_find[i]) + return (0); + i = 0; + } + } + return ((char *)str + j); +} diff --git a/srcs/bonus/ft_lstadd.c b/srcs/bonus/ft_lstadd.c new file mode 100644 index 0000000..d0bed31 --- /dev/null +++ b/srcs/bonus/ft_lstadd.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:10:33 by hulamy #+# #+# */ +/* Updated: 2018/11/16 13:58:54 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd(t_list **alst, t_list *new) +{ + new->next = *alst; + *alst = new; +} diff --git a/srcs/bonus/ft_lstdel.c b/srcs/bonus/ft_lstdel.c new file mode 100644 index 0000000..bbe792d --- /dev/null +++ b/srcs/bonus/ft_lstdel.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdel.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:10:49 by hulamy #+# #+# */ +/* Updated: 2018/11/16 13:59:10 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstdel(t_list **alst, void (*del)(void *, size_t)) +{ + if ((*alst)->next) + ft_lstdel(&(*alst)->next, del); + ft_lstdelone(alst, del); +} diff --git a/srcs/bonus/ft_lstdelone.c b/srcs/bonus/ft_lstdelone.c new file mode 100644 index 0000000..e2b85c2 --- /dev/null +++ b/srcs/bonus/ft_lstdelone.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdelone.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:10:59 by hulamy #+# #+# */ +/* Updated: 2018/11/16 13:59:22 by hulamy ### ########.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; +} diff --git a/srcs/bonus/ft_lstiter.c b/srcs/bonus/ft_lstiter.c new file mode 100644 index 0000000..0f791be --- /dev/null +++ b/srcs/bonus/ft_lstiter.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:11:14 by hulamy #+# #+# */ +/* Updated: 2018/11/16 14:01:10 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstiter(t_list *lst, void (*f)(t_list *elem)) +{ + if (!lst) + return ; + if (lst->next) + ft_lstiter(lst->next, f); + f(lst); +} diff --git a/srcs/bonus/ft_lstmap.c b/srcs/bonus/ft_lstmap.c new file mode 100644 index 0000000..6b9a2c8 --- /dev/null +++ b/srcs/bonus/ft_lstmap.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstmap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:11:20 by hulamy #+# #+# */ +/* Updated: 2018/11/16 14:01:23 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) +{ + t_list *new; + t_list *tmp; + + if (!lst) + return (NULL); + tmp = f(lst); + new = tmp; + while (lst->next) + { + lst = lst->next; + if (!(tmp->next = f(lst))) + { + free(tmp->next); + return (NULL); + } + tmp = tmp->next; + } + return (new); +} diff --git a/srcs/bonus/ft_lstnew.c b/srcs/bonus/ft_lstnew.c new file mode 100644 index 0000000..6d00337 --- /dev/null +++ b/srcs/bonus/ft_lstnew.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:11:42 by hulamy #+# #+# */ +/* Updated: 2018/11/16 14:01:36 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstnew(void const *content, size_t content_size) +{ + t_list *lst; + + if (!(lst = (t_list *)malloc(sizeof(*lst)))) + return (NULL); + if (!content) + { + lst->content = NULL; + lst->content_size = 0; + } + else + { + if (!(lst->content = malloc(content_size))) + return (NULL); + ft_memcpy(lst->content, content, content_size); + lst->content_size = content_size; + } + lst->next = NULL; + return (lst); +} diff --git a/srcs/part1/ft_atoi.c b/srcs/part1/ft_atoi.c new file mode 100644 index 0000000..5c10b59 --- /dev/null +++ b/srcs/part1/ft_atoi.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:09:04 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:38:12 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_atoi(const char *str) +{ + long long nbr; + int i; + int n; + + i = 0; + n = 1; + nbr = 0; + while ((str[i] == 32) || (str[i] > 8 && str[i] < 14)) + i++; + if (str[i] == '-') + n = -1; + if (str[i] == '+' || str[i] == '-') + i++; + while (str[i] >= '0' && str[i] <= '9') + { + if ((nbr >= 922337203685477580 + && ((str[i] > 8 && n < 0) || (str[i] > 7 && n > 0)))) + return ((n > 0) ? -1 : 0); + else + nbr = nbr * 10 + (str[i++] - '0'); + } + return (nbr * n); +} diff --git a/srcs/part1/ft_bzero.c b/srcs/part1/ft_bzero.c new file mode 100644 index 0000000..ed2c7eb --- /dev/null +++ b/srcs/part1/ft_bzero.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_bzero.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:09:19 by hulamy #+# #+# */ +/* Updated: 2018/11/15 21:43:05 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_bzero(void *s, size_t n) +{ + size_t i; + unsigned char *ptr; + + if (n) + { + ptr = (unsigned char *)s; + i = 0; + while (i < n) + ptr[i++] = '\0'; + } +} diff --git a/srcs/ft_calloc.c b/srcs/part1/ft_calloc.c similarity index 85% rename from srcs/ft_calloc.c rename to srcs/part1/ft_calloc.c index 19ad171..d6a9d4b 100644 --- a/srcs/ft_calloc.c +++ b/srcs/part1/ft_calloc.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/11/19 14:56:09 by hulamy #+# #+# */ -/* Updated: 2019/11/19 15:21:25 by hulamy ### ########.fr */ +/* Updated: 2019/11/19 19:27:38 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,5 +24,10 @@ void *ft_calloc(size_t count, size_t size) { - return (ft_memalloc(count * size)); + void *tmp; + + if (!count || !size || !(tmp = malloc(count * size))) + return (NULL); + ft_bzero(tmp, count * size); + return (tmp); } diff --git a/srcs/part1/ft_isalnum.c b/srcs/part1/ft_isalnum.c new file mode 100644 index 0000000..21bfad0 --- /dev/null +++ b/srcs/part1/ft_isalnum.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalnum.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:09:33 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:09:37 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isalnum(int c) +{ + return (ft_isalpha(c) || ft_isdigit(c)); +} diff --git a/srcs/part1/ft_isalpha.c b/srcs/part1/ft_isalpha.c new file mode 100644 index 0000000..b754b0b --- /dev/null +++ b/srcs/part1/ft_isalpha.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalpha.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:09:44 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:09:46 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isalpha(int c) +{ + return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); +} diff --git a/srcs/part1/ft_isascii.c b/srcs/part1/ft_isascii.c new file mode 100644 index 0000000..054f504 --- /dev/null +++ b/srcs/part1/ft_isascii.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isascii.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:09:53 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:09:55 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isascii(int c) +{ + return (c >= 0 && c <= 127); +} diff --git a/srcs/part1/ft_isdigit.c b/srcs/part1/ft_isdigit.c new file mode 100644 index 0000000..1dd5840 --- /dev/null +++ b/srcs/part1/ft_isdigit.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isdigit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:10:01 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:10:05 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isdigit(int c) +{ + return (c >= '0' && c <= '9'); +} diff --git a/srcs/part1/ft_isprint.c b/srcs/part1/ft_isprint.c new file mode 100644 index 0000000..f45cbaf --- /dev/null +++ b/srcs/part1/ft_isprint.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isprint.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:10:19 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:10:20 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isprint(int c) +{ + return (c >= 32 && c < 127); +} diff --git a/srcs/part1/ft_memchr.c b/srcs/part1/ft_memchr.c new file mode 100644 index 0000000..f6254ed --- /dev/null +++ b/srcs/part1/ft_memchr.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:12:32 by hulamy #+# #+# */ +/* Updated: 2019/04/03 15:43:14 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** locate character in string and return its position +*/ + +#include "libft.h" + +void *ft_memchr(const void *s, int c, size_t n) +{ + unsigned char *sbis; + size_t i; + + sbis = (unsigned char *)s; + i = -1; + while (++i < n) + if (sbis[i] == (unsigned char)c) + return ((void *)sbis + i); + return (NULL); +} diff --git a/srcs/part1/ft_memcmp.c b/srcs/part1/ft_memcmp.c new file mode 100644 index 0000000..d881cba --- /dev/null +++ b/srcs/part1/ft_memcmp.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:13:04 by hulamy #+# #+# */ +/* Updated: 2019/04/03 15:43:41 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** compare two bytes strings (doesnt recognize a null terminated string) +** and return value of difference between first two different character +*/ + +#include "libft.h" + +int ft_memcmp(const void *s1, const void *s2, size_t n) +{ + unsigned char *frst; + unsigned char *scnd; + size_t i; + + i = 0; + frst = (unsigned char *)s1; + scnd = (unsigned char *)s2; + while (i < n && frst[i] == scnd[i]) + i++; + return ((i == n) ? 0 : frst[i] - scnd[i]); +} diff --git a/srcs/part1/ft_memcpy.c b/srcs/part1/ft_memcpy.c new file mode 100644 index 0000000..d21a57c --- /dev/null +++ b/srcs/part1/ft_memcpy.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:13:17 by hulamy #+# #+# */ +/* Updated: 2019/04/03 15:43:56 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** copy n characters from src to dst and return dst +*/ + +#include "libft.h" + +void *ft_memcpy(void *dst, const void *src, size_t n) +{ + size_t i; + char *ptr; + char *ptr2; + + ptr = (char *)dst; + ptr2 = (char *)src; + i = -1; + while (++i < n) + ptr[i] = ptr2[i]; + return (dst); +} diff --git a/srcs/part1/ft_memmove.c b/srcs/part1/ft_memmove.c new file mode 100644 index 0000000..51af09b --- /dev/null +++ b/srcs/part1/ft_memmove.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memmove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:13:34 by hulamy #+# #+# */ +/* Updated: 2019/04/03 15:44:28 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** copy n characters from src to dst in a non destructive way and return dst +*/ + +#include "libft.h" + +void *ft_memmove(void *dst, const void *src, size_t len) +{ + int i; + char *source; + char *dest; + + i = -1; + source = (char *)src; + dest = (char *)dst; + if (source < dest) + while ((int)(--len) >= 0) + dest[len] = source[len]; + else + while (++i < (int)len) + dest[i] = source[i]; + return (dst); +} diff --git a/srcs/part1/ft_memset.c b/srcs/part1/ft_memset.c new file mode 100644 index 0000000..b3df393 --- /dev/null +++ b/srcs/part1/ft_memset.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memset.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:13:41 by hulamy #+# #+# */ +/* Updated: 2019/04/03 15:44:44 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** copy n time a character in a string and return the string +*/ + +#include "libft.h" + +void *ft_memset(void *b, int c, size_t len) +{ + char *ptr; + size_t i; + + ptr = (char *)b; + i = 0; + while (i < len) + ptr[i++] = c; + return (b); +} diff --git a/srcs/part1/ft_strchr.c b/srcs/part1/ft_strchr.c new file mode 100644 index 0000000..095c87e --- /dev/null +++ b/srcs/part1/ft_strchr.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:15:48 by hulamy #+# #+# */ +/* Updated: 2019/04/16 17:28:46 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** locate the first occurence of character c in string s +** and return pointer to its location +*/ + +#include "libft.h" + +char *ft_strchr(const char *s, int c) +{ + int i; + int j; + + i = 0; + j = -1; + while (s[i]) + i++; + while (++j < i + 1) + if (s[j] == c) + return ((char *)s + j); + return (NULL); +} diff --git a/srcs/part1/ft_strdup.c b/srcs/part1/ft_strdup.c new file mode 100644 index 0000000..6fc8594 --- /dev/null +++ b/srcs/part1/ft_strdup.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdup.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:16:32 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:20:22 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** save a copy of string src by allocating memory and return pointer to copy +*/ + +#include "libft.h" + +char *ft_strdup(const char *src) +{ + int i; + char *str; + + i = 0; + while (src[i] != '\0') + i++; + if (!(str = (char*)malloc(sizeof(*str) * (i + 1)))) + return (NULL); + while (i-- >= 0) + str[i + 1] = src[i + 1]; + return (str); +} diff --git a/srcs/ft_strlcat.c b/srcs/part1/ft_strlcat.c similarity index 95% rename from srcs/ft_strlcat.c rename to srcs/part1/ft_strlcat.c index b381f99..7499b22 100644 --- a/srcs/ft_strlcat.c +++ b/srcs/part1/ft_strlcat.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/11/19 15:09:51 by hulamy #+# #+# */ -/* Updated: 2019/11/19 15:09:54 by hulamy ### ########.fr */ +/* Updated: 2019/11/19 18:18:30 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,9 +17,7 @@ */ /* -** #include -** #include -** #include +** #include ** ** size_t ft_strlcat(char *dest, const char *src, size_t size); ** diff --git a/srcs/ft_strlcpy.c b/srcs/part1/ft_strlcpy.c similarity index 92% rename from srcs/ft_strlcpy.c rename to srcs/part1/ft_strlcpy.c index 289c870..d6284a2 100644 --- a/srcs/ft_strlcpy.c +++ b/srcs/part1/ft_strlcpy.c @@ -6,7 +6,7 @@ /* By: hulamy +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/11/19 15:10:04 by hulamy #+# #+# */ -/* Updated: 2019/11/19 15:10:07 by hulamy ### ########.fr */ +/* Updated: 2019/11/19 18:18:54 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,10 +19,7 @@ */ /* -** #include -** #include -** #include -** #include +** #include ** ** size_t ft_strlcpy(char *dest, const char *src, size_t size); ** diff --git a/srcs/part1/ft_strlen.c b/srcs/part1/ft_strlen.c new file mode 100644 index 0000000..59cc818 --- /dev/null +++ b/srcs/part1/ft_strlen.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:17:32 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:23:00 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** return length of of string +*/ + +#include "libft.h" + +size_t ft_strlen(const char *str) +{ + size_t i; + + i = 0; + while (str[i]) + i++; + return (i); +} diff --git a/srcs/part1/ft_strncmp.c b/srcs/part1/ft_strncmp.c new file mode 100644 index 0000000..5d51c2d --- /dev/null +++ b/srcs/part1/ft_strncmp.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:18:34 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:24:35 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** compare size first character of two null terminated strings +** and return value of difference between first two different character +*/ + +#include "libft.h" + +int ft_strncmp(const char *s1, const char *s2, size_t n) +{ + size_t i; + int res; + + i = 0; + res = 0; + while (s1[i] && s1[i] == s2[i] && i < n - 1) + i++; + if (n != 0) + res = (unsigned char)s1[i] - (unsigned char)s2[i]; + return (res); +} diff --git a/srcs/part1/ft_strnstr.c b/srcs/part1/ft_strnstr.c new file mode 100644 index 0000000..5dbb8c0 --- /dev/null +++ b/srcs/part1/ft_strnstr.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:19:16 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:25:57 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** locate the first occurence of the string little in len first characters +** of big and return a pointer to this occurence if found +*/ + +#include "libft.h" + +char *ft_strnstr(const char *big, const char *little, size_t len) +{ + size_t i; + size_t j; + + j = 0; + i = 0; + if (!ft_strlen(little)) + return ((char *)big); + while (i == 0 && j <= len) + { + while (little[i] == big[j + i] && little[i] && j + i <= len) + i++; + if (little[i]) + { + j++; + if (!big[j] || j >= len) + return (0); + i = 0; + } + } + return ((char *)big + j); +} diff --git a/srcs/part1/ft_strrchr.c b/srcs/part1/ft_strrchr.c new file mode 100644 index 0000000..012535a --- /dev/null +++ b/srcs/part1/ft_strrchr.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strrchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/11/19 19:35:39 by hulamy #+# #+# */ +/* Updated: 2019/11/19 19:35:45 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** locate the last occurence of character c in string s +** and return pointer to its location +*/ + +#include "libft.h" + +char *ft_strrchr(const char *s, int c) +{ + int i; + + i = 0; + while (s[i]) + i++; + i++; + while (i--) + if (s[i] == c) + return ((char *)s + i); + return (NULL); +} diff --git a/srcs/part1/ft_tolower.c b/srcs/part1/ft_tolower.c new file mode 100644 index 0000000..e8f2b0f --- /dev/null +++ b/srcs/part1/ft_tolower.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_tolower.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:20:19 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:20:20 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + return (c + 32); + return (c); +} diff --git a/srcs/part1/ft_toupper.c b/srcs/part1/ft_toupper.c new file mode 100644 index 0000000..e0e0271 --- /dev/null +++ b/srcs/part1/ft_toupper.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_toupper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:20:26 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:20:27 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + return (c - 32); + return (c); +} diff --git a/srcs/part2/ft_itoa.c b/srcs/part2/ft_itoa.c new file mode 100644 index 0000000..65fbfa7 --- /dev/null +++ b/srcs/part2/ft_itoa.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_itoa.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:10:25 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:36:38 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_itoa(int n) +{ + char *str; + int len; + long int nbis; + + len = (n < 0) ? 2 : 1; + nbis = n; + while (nbis /= 10) + len++; + nbis = n; + nbis *= (nbis < 0) ? -1 : 1; + if (!(str = ft_strnew(len))) + return (NULL); + str[--len] = nbis % 10 + '0'; + while (nbis /= 10) + str[--len] = nbis % 10 + '0'; + if (n < 0) + str[0] = '-'; + return (str); +} diff --git a/srcs/part2/ft_putchar_fd.c b/srcs/part2/ft_putchar_fd.c new file mode 100644 index 0000000..e12e154 --- /dev/null +++ b/srcs/part2/ft_putchar_fd.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:14:14 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:14:15 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putchar_fd(char c, int fd) +{ + write(fd, &c, 1); +} diff --git a/srcs/part2/ft_putendl_fd.c b/srcs/part2/ft_putendl_fd.c new file mode 100644 index 0000000..2f82783 --- /dev/null +++ b/srcs/part2/ft_putendl_fd.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putendl_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/11/19 18:38:05 by hulamy #+# #+# */ +/* Updated: 2019/11/19 18:39:05 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** write the string s on the given file descriptor fd, followed by a newline +*/ + +#include "libft.h" + +void ft_putendl_fd(char *s, int fd) +{ + ft_putstr_fd(s, fd); + ft_putchar_fd('\n', fd); +} diff --git a/srcs/part2/ft_putnbr_fd.c b/srcs/part2/ft_putnbr_fd.c new file mode 100644 index 0000000..66a4a9d --- /dev/null +++ b/srcs/part2/ft_putnbr_fd.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:15:09 by hulamy #+# #+# */ +/* Updated: 2018/11/14 21:15:10 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbr_fd(int n, int fd) +{ + long l; + + l = n; + if (l < 0) + { + ft_putchar_fd('-', fd); + l *= -1; + } + if (l >= 10) + ft_putnbr_fd(l / 10, fd); + ft_putchar_fd((l % 10) + '0', fd); +} diff --git a/srcs/part2/ft_putstr_fd.c b/srcs/part2/ft_putstr_fd.c new file mode 100644 index 0000000..42719e5 --- /dev/null +++ b/srcs/part2/ft_putstr_fd.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/11/19 18:35:48 by hulamy #+# #+# */ +/* Updated: 2019/11/19 18:37:07 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** write the string s on the given file descritor fd +*/ + +#include "libft.h" + +void ft_putstr_fd(char *s, int fd) +{ + while (s && *s) + ft_putchar_fd(*s++, fd); +} diff --git a/srcs/part2/ft_split.c b/srcs/part2/ft_split.c new file mode 100644 index 0000000..caa1c5d --- /dev/null +++ b/srcs/part2/ft_split.c @@ -0,0 +1,62 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_split.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/11/19 18:22:41 by hulamy #+# #+# */ +/* Updated: 2019/11/19 18:28:01 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** return an array of string with each word found in str, with c as separator +*/ + +#include "libft.h" + +static int ft_count_word(char const *s, char c) +{ + int i; + int len; + + i = -1; + len = 0; + while (s[++i]) + if (s[i] != c) + { + len++; + while (s[i] && s[i] != c) + i++; + } + return (len); +} + +char **ft_strsplit(char const *s, char c) +{ + char **array; + int i; + int j; + int len; + + i = -1; + j = 0; + if (!s || !c) + return (0); + if (!(array = (char **)malloc(sizeof(char *) * (ft_count_word(s, c) + 1)))) + return (NULL); + while (s[++i]) + { + if (s[i] != c) + { + len = 0; + while (s[i + len] && s[i + len] != c) + len++; + array[j++] = ft_strsub(s, i, len); + i = i + len - 1; + } + } + array[j] = 0; + return (array); +} diff --git a/srcs/part2/ft_strjoin.c b/srcs/part2/ft_strjoin.c new file mode 100644 index 0000000..48f95a1 --- /dev/null +++ b/srcs/part2/ft_strjoin.c @@ -0,0 +1,54 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:17:12 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:31:03 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** create a new string by concatenating the two strings s1 and s2 +*/ + +#include "libft.h" + +static char *ft_doit(char const *s1, char const *s2, char *dest) +{ + int j; + int i; + + j = 0; + i = 0; + while (s1[j] != '\0') + { + dest[i] = s1[j]; + i++; + j++; + } + j = 0; + while (s2[j] != '\0') + { + dest[i] = s2[j]; + i++; + j++; + } + dest[i] = '\0'; + return (dest); +} + +char *ft_strjoin(char const *s1, char const *s2) +{ + char *str; + + if (!s1 || !s2) + return (NULL); + if (!(str = (char *)malloc(sizeof(char) * + (ft_strlen(s1) + ft_strlen(s2) + 1)))) + return (NULL); + str = ft_doit(s1, s2, str); + return (str); +} diff --git a/srcs/part2/ft_strmapi.c b/srcs/part2/ft_strmapi.c new file mode 100644 index 0000000..d9fb527 --- /dev/null +++ b/srcs/part2/ft_strmapi.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmapi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: hulamy +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2018/11/14 21:18:03 by hulamy #+# #+# */ +/* Updated: 2019/03/25 15:28:21 by hulamy ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* +** create a new array with the result of function f +** on every element of s by index i +*/ + +#include "libft.h" + +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) +{ + char *str; + int i; + + if (!s) + return (NULL); + if (!(str = ft_strnew(ft_strlen(s)))) + return (NULL); + i = -1; + while (s[++i]) + str[i] = f(i, s[i]); + return (str); +} diff --git a/srcs/ft_strtrim.c b/srcs/part2/ft_strtrim.c similarity index 100% rename from srcs/ft_strtrim.c rename to srcs/part2/ft_strtrim.c diff --git a/srcs/ft_substr.c b/srcs/part2/ft_substr.c similarity index 100% rename from srcs/ft_substr.c rename to srcs/part2/ft_substr.c diff --git a/test/.Makefile.swp b/test/.Makefile.swp new file mode 100644 index 0000000000000000000000000000000000000000..7876ce8a40d4642ed60a4bf8478b843ac0761f5b GIT binary patch literal 12288 zcmeI2zi-n(6vtoKB2hpf_5(X29_%D7peQ1u`2_?LS|v1s0Y#4E5UWmN+0Fn1hy^jj zfcOLWu`)0-05c5z13+S8VqgS`?>Vs=QRvd8m7b-K?(V(2cQ2nzR?^FM>P?Y1a)jp? z(Yb3|x1CQ3^3D?tr>;4=D-*jv_KKhPa#`c-vN7;?*?NCgFylJCL6`~cAj~w)O?%+D z_AaM5#Rk~Go()XHfu3KYmE~Mk)>2NN5+{yt?71u#U;}J`4X^<=zy{a=8(;%$;NTbt zy#zf#yNBj2EAuh&*EnDDzy{a=8(;%$fDNz#Hoykh02^QfY=8|MKm%r<==Wiw7fWa! zzyHVY|38ireF2}rJMb2~2Cu*~@EF*j4{m}gNP{!r=MkcB;3N0|-hijz33vqVfibuR zE`pQb7w-QKzJe|A9=rsyujk+)7z2LT02^QfY=8~00XDz}*Z><~1N+=SQcYJXnxOfJ z)ul%1a$6JnKSGw!C(%}!i;>3{jzxRaRiR!WHN94?x3o;km=r|HuqZj&>^r{DJ)y3~ z*#ad^U-%Y6D6>|++SZV|UTW5~LL9(Yt*s-W>}+$ga1i?%v-U~(Zw=FRqr$Q^9Effr zMUNka6d_t0japj>%;T_*_s>~vA&Nq8;HId6?qXIiqqmv3B$9PCU6)BB`Ed|Y)9qHJ zU4Vk(f)kCT9;A&-Z|b=HfaET$N2W72ED=t+Q_r(~%M5HRy=iC-OA* zUM_@)Zt2QJ0smr88D=r1QM5*~C=io>Yd1`iZ6k!3ftO=goh{UKS1!=w5Isii<9i#T zh76;6bbLrMgOxM3+-ctqh&t<~8&?nsd@Ggi#$S1X@{gCO|b|MJPxWbIwV{QOWgz=v1*1Sgw=Q5PzSqDq7d1%5#Z41|VDF$})YYi1EL2qX0|- z|CH+&WcYqhq>H4qAGU}pcrR1Fp}O{;-!Z$-X6IG!8K2zRGa`Qc)1&BxW7mjOYeXlv z`Rn(1Y3au7-0ORH+@_$E`1m?X874*04!1#T>6$)1JaR@|^HiTDw!RaH{Q#w$ewT R)B~4n9h<)I1h&<1;0HY9SuX$p literal 1536 zcmbu9L5tH+5P&DG?z+0GQ53}W5JW`5eJ0BqbU}%fxDlffAHc-1P_ZpMDXB2?}c?Hd2e^jrWYNU&dm4T%)Crq`l@~RcEhs3hy^!cFESKu zbI%V7H-KeWf^KK}z4Q8~z1^NE#P8a(>Gls=pSEY!;MnIcdhrwO`1TdHTCGjzVz-|s zDtE4m4dJf&c@cRpJzuyR!gDW`3(mUh`L6F?r&NHGr2*^t1F$BxwYt1`=sh0%EOJtk z8}xJQsQsqVT3MLj28!nhJ@Wzhy;HZ`te*&ugbjryHnCEjG-06*W0l1@{NO%L&v1gB zr+7wWE2#Fq-2i9i@bhyx#PV?>!oq+W_44sJN<*1Npi-G+gHam8K=sDC3WqWUIHh|w z&@Q3Qc1k(N_+iG^89&0f!#LI26_GuQmF$DaR9f1h@zUt26e^l15RasiAo^JbA{@nW zlpsq+DiT}wx@(z|;S&(W_Gs7}q%w|n>;I?YU_RZQ>YELak(l>WM&(}PlU+rn+Y+F1 z3G@&;8qy4@kGaFAHNT*F^(Ma1>s3QFxLn47YW{1!hq+YKMdf1p`y8Tg`Ww5+7~lGl z2h2Bl2Hi)8*k5-B2Zp86m*c)6hA03wW zca&+VSVte3CD8qdpk`q9eC~!$-z##=zvnwvrEL|rR6k{D5u<7?aTi<#^Ji%;5D5Xf zRPqUg=sPSch&WIB4#*sGR#T<^9Zv1Zt37%*+vBeX=`op(tt?meZJfPHAA4eb+M_4) z{IS$ky?;J-DV@(K-ncp;BQXtgsa8)>wTaw1m}Uj^|IvQayr~>Cs&WX}08yTABUa^t aWmyy&h$V{;?nWHMk?T7l@i6Q~9{m6d|3u;d literal 1400 zcmbtUPfHt75T8xz-`WyIB%okU#ezO|i!QAPiG*knu~5jNC)uPMQrbk>ykP919t1H5 zAs@hlpQD!^1krEc7btk}pf?WzJG1*HzOK)U{e{_?`R)AMdAr%mudgI53m6tG!Gp&v zKr8WJXG1d!BQONTLiVe_Q#r5`e3gC}J*{%+7>7{0_YpE0uN^UfXzbRcS3)g=NLSek z{O_KSeoKP*;z5J8k;#@;|OuaKE})3A|b~jOzJ6isq)X zjBh%N9D(;0c~LCeq$g46^s*>AuBa#?9Vr+_O%%UV%u{{h<8MX4sMrryEsdv0TeM6@H=c*C^H>onc{j>iU Dllfp+ diff --git a/test/builds/to_uppercase.o b/test/builds/to_uppercase.o index eb3176608308df1f88be86b74e71a0b47c872856..e8f61a51cded7bf9ae841a5fc1be8ea837d58db8 100644 GIT binary patch literal 632 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%sDO&!fU1GtHx zttf%8A^Z^6h!6xH#u9}xK<0tm0tYM%4RAJ)5g(tNpIeZaToPZJSDu-d5+Cp5f-Elq zJYEg1xF))k){sug6 literal 1256 zcmbtT%}T>S5T3ME>n~M22vvwD6?93Z4eCKErB+l##2!V`8YyVnl5C+0>Om+LFCKjq zkAg4Y(HHOmyccw)-L=~oFFKH&`M&wjCO6sL&5)*n6b;s)izEv$AL`oawwZ=uh(dm= z`QE&0-8wD(KHEBafm|lDrqAaKwKA{iDVAi$l38n`#C5`CMv^6rg^ojCHWH>`8mm}u zQk2&&4?wHOwD`zC^Z^H%MxGv$7#$m9u|_B}+P{MVgntp*Ap#$tLGEzih5%tumQ)hM z=n0ZA^aarv-Tw<8`N7jp6Usd89Vv=ej%(Gb?G`Q1X2l*zZk-Mknz(0b=3O}4Dgg7i z+tDRyal6ieomkugR`5Jv#fszDW#q~gZnNB8e#zrj@eG)2pIgi>9iO_EW4HVK_lRQw zx)cAKNsGeYdkajls>~uF&VLj8YLH_4^XJe<-^*X~7crM=8u+Lp`w(Ku;O5xPd zh6)s0=1FQB4dQz48u6V7SP@z(|G$w%2Yr2M86fnNXf!48AZofJnJ@Wqm<_hZnC>qU(e5w5XzW{sfPX7P^ diff --git a/test/builds/transform.o b/test/builds/transform.o index d35bfb8d39f10facc9d21e28be1b3c9be77cb7c3..3c17daeb6d2fcfef79ff5cb1e97f63613f3d7196 100644 GIT binary patch literal 628 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%sDO&!fU1GtHx zttf%8A^Z^6h!6xH#u9-tK<0tm0tYM%4RAJ)5g(tNpIeZaToPZJSDu-d5+Cp5f-Elq z>Lw-s#JiQWq^3ae+Yo7V{qgX fXk&8bWkWI?sGJRCFh8>C@g+rxdBth@MY#+BMln04 literal 1248 zcmbtTPfG$(5T8{m`(s!H1$MAg1^HM*m+BCPm{AcCd5lI4K|_YNfaO+=-HW$nSpT# zLt&@&(YkKm*=_A1*FJfLd^WogUn&&qRbG#$S&Hciqu%k7H%Wu(DVEfiyMg$so-}kr zU&negqP%u>1X?4i#U@6=k2uIY;`ES2>9sW(Z3eQD;XO#Lh$+J7Y_QK5FiN3 zAr)c}BYqNuAwL+ihX>%HUw8zOX=R?y87Yf9X4Ng%9GjJTHtvC9C^Tu`w9LJ=je5t(szX9J4Ok)55 diff --git a/test/libdeux.a b/test/libdeux.a new file mode 100644 index 0000000000000000000000000000000000000000..961c189f4cf8b724c494db1423352092307f37b0 GIT binary patch literal 1704 zcmb_cO=}ZT6uqe>mC?2Xt)L<@qV7!1O!EmM4R$08#nMKo3war0Lb}KY(+LJ4PzXpv zH!fYe>`!ndib9ueU3Me5P;?n3sOL`JYo@^%A|AMN?tQuMzOQ?7>4xJL$~U#k=5;G- z3}D8SF*9w&mXn6DY*}X1h*=3Fn9*n=7Bh@QO6BG?A(l2C++DSA8yol5bM`6$I)8v& zSQvJAg6J$*RGh6U39lv^^?K1QINL>x5@CJQQYFE1eJh>*^ZLnjLT2YRF1b|m%h3BD zUw+OIg|HljVAHUd>=-cM94y802<*%84>Cu^s7Y*Gmm!2#YL1@S^$~8?;j^H zOp7uIJz1wvQxEBR}um7 zcz6~(4@ZIBKu8yd;)S7@M9CBNhF2&%?va>Wr@CFLxs@SZX}}0wkJMEnu2h)Uf+GE2 z`fAF9D}AZ>U-fk+P>=iX2ovgydzfMPU!re#6zX5J|BsIVhI4LOsYc#FX@qAJPpCLZMKQ zh9dOn(PNJuJ^6z|k9zdzMd(4X$5?{#o833bCQVb5dUIgj%)HFbo6LUmW-s21=M$-0 z-b?-)hEK1PKQtQjM*@++sICVL!|&6BMi>r$pD!E?k{nackG)b}pMH36!n~tT-=CT> zCj>~R1@sDh5?t&R;vD4XBSH+&{vjcJkaEtFxq_8Q#q&a1`FLhwE}KsanU2qAu#uI8 zTrQbU#21oq2DQ%92!xPRt2{?td8%`+XPr>?`f2CK?>-?sNJn_UhrzE&(ZQh8;4!lI zpmnwXMftFen1Yz%5=m(#iGmo_KjKg>IgTd;v^q(dOv$-?Jgw?1Wn+Gm$~CIwRTYmT97U?E zlQh7mz;;=Nyh0Fz=up}(LLvPHmgA6kUho-EZK7wH)z)8&2eHz(*vfY;x>|lqF-kkD zX4TeW&kNNpiW4iD+p(38+M^GysH*;U+OBOoN3uOnr-Y}dd9;DP{&jd=#@<=*detF* ze`0({d)9M%5U{uD0#>-&KSTD?0mHN?8iaJ2O^vabpSP023+fdA;gC`5(^`AEI^dxA zFRJ_*|7>@Qf5HM0 z!ngZ!S2*@FG6|ryd4tWC_jn{+!!gYUhVVi0yFm$q7{6?Hi{Ei4Tn)d=jFS%W8&h#~ zmMRY2m)+nurQ$?ca$d^r6u&R=Jk6)Ckk=sF;n&?K>bQLc-`|^Ng?u;7vIViWRNf-9 zWR~5kSzdiV{N|ValmFeWJDr|T??si4b{t|H?}hiG!aKj$X1s?G20=%zK;nOnoPk71 zYWF+XA=5^yJRzR5n;WH){wsjs5?XHvrlQk(f;L?W&Gs$o93zPA2VfAKuv{$jh^ z{yKsB5dBZ{LBs!T*I#x)I$T`y;ipc6!mKn52vuh{RP7V?>ldC6{GOWog@PbxtNGwU HpAdflUQlyP literal 0 HcmV?d00001 diff --git a/test/libtrois.a b/test/libtrois.a new file mode 100644 index 0000000000000000000000000000000000000000..ab70bce9c97fa5a5b6a0026ce4268f41b82d426b GIT binary patch literal 3576 zcmd^B&1(}u6rWUSOYBEL1r^aPDtNFpyZHu@6uXjxVreVXgG^$Yl7RUj-OwNu3I$0h zLXRFj_D}HS2MRrU_1KHhgJO@d1mkhGA8zZ-2eWV9WcD|2XMVqVnYfcECewG_ z*VNmZS2;8_5b~=L%^y}3#iwbiSMh5>n4o&SLBC&7v@p+&yQQ3(fAVlfzpumJ*zhKL=j#hYj-B!i_Q}^nYgE9GK&zY*;sSWN zY{){%NTw4-A&p`px3ZisW`*eXT>;pePV0xfoIu=7cvE>=6Wy1CAHRo$aKW;|1?@Dn zx7bmjfn9_a#<+`Z(fC)I!!ckAY>0~{rI9KdR^N&j^u>k4n0u4dK|IVQJz(Vp!8*@D zFJ&^HEhLhLEag@+xg{wdw4A?}CM)EJ0S9v_FrE<5J2WX%X}MfXWK-6dl&$&A($pyV zn}kQ9I0LD2AH4<*&(YkLF}D!dz;IC4d|MN?{cG|zjlvf)o-zl z@1AI-_8u{+2Nk_x_F}I}jXlJPRrUSY#%IsdPc~HAe=}{{u$d#qt`~E{Rra_%BSXVm zFzY&uU52*Ru#C@7Opke94%{0Z#FxOXLWAk%&)^4ffpL70je@s@Z30*=W{i|@gE{4Y zFrd+e5qCFbWK+ON`Cq2|ng1Lgm;cBGH0Hk*!P6oCkz;6z`4nOwHW&Fn3w)z}M*20a zAOFKNGfLhAZ?m>>$SMC9DG$^)-g~|HPfI#-$p7kEeRHk8vD1J~wbnv&=5q_>Z~@-` zZam*6p7XqRo+Ac;9^tqB67RudzYplz=^j@@8r<+`W_?;pmC8=)liwHWjO(O6p_X^y z(2-j*o5yNS5YFb-9fP0mi!I z__(^9w&0q&Txb3})Mbot6!wIJb>KL?g9rL-i z>o@=~06KXCJbdTmCGfB%&H9D)%3i-P0eccx+TycqaqAyE5>xYUUaPKp+!tMS)l&Ct zBK=qT;yTCr;`q4wIuHAU_CM7<4}5PgeVH5L@L{WaKNT#1dcCFa(LUR$YOc^vFI@Nd RoZ9t*AOPB_?%CKU#2@-jugU-b literal 0 HcmV?d00001 diff --git a/test/test b/test/test old mode 100644 new mode 100755 index c7262cb0246f898325ade57005f59080ae7cfcab..8b65d745b893a653433859979b8e97a0be0cbf33 GIT binary patch literal 8576 zcmeHM&ubGw6n?Q)i!E(>@mH;G3l$Y?qZGBbM7o$_(f&jc%b2uV8c5Qx+1U0_2o|BC z6naqbAksg;g9i_uv|6DjQSj!e2Y*yh^cYJpes43I?xyO+lQ0k7&U`a(zMc7I0<(Fq zH^2VeP2{U0%I+Yd26(EP=r(Dn5gmYs;X?FOhJqLOdD9*aTyV;REO8EZFHQ&x7_g%D{g6HS+!D*5g} z5a!z@BOL4usF8e5e~C{_81a;0BB+w@zT`V72^h2PW!pBtOmZrg922qR_#}cV`JPBV z-Xk`~9==j@`N{jR0T-e>G!!Z~6YK5S2WLNA`+zf2<`yCu7wMTqbTTedmib3Mhlcri zyko4F{XW?sL_G30K0n5De2t7}?B?Th;>KI&wzucfMZLSnIdfXYI)T};ax%>0o>wcn z0vw=~-d%%oKVxZ{W=lr_loM!U?YVy$n7OnTq8lh{;eBwo@wsOI+kW{m-gAB>0gg3k z@H%)$CT(`aW6_SWnfMqmTN9k;@t|ocy6;n0?X6dDR|@Y=22Z0+gZtoAzsGj2+uBvV z@SQ*%(w6NQ*3UfrJ8~Pp_Z*!2c>cc4_n4+{Yc812;7r;w67A>PF|Sw@L9nB6=D(+v z^gJ%{GO#kGfKosypcGIFCn@b-1JZOSgY+<|%sYq5PioG%BDJPzopolmbctrGQdE zDWDWk3Md7X0!jg;z<;ekW2?WP7tk2w%6|FZTOE@VqDI~>5BWZ&M z%t$glK4~WCdKEo7jF30{$R4rZfya7tpB6yL;~RXXj3obAvDe1PrON*)S|xV!{>WD% zo+u#u&q$n=I0TGtrm`)JryFxVR_5}9T-T7<-o94hTB5MmEiCu)gjHUj6mOfl_S=bm E0V+lueEAm`=|+JH()&Wf?Q5sEB*;Ae-KCmJK>HOHU83 zLR1KZ9Yn~%g9i`!69g|oL<54+n@5jcggtnOHxC1`>UC95_3Q4;&V~?_6m-A$eqHsd z-q-Kd%#jy@u(f`A?u3&TPc`GZemhP*Q8+sX0DJKH3}E(qfcZZF4u07Q&UGQ`tqe9c z+F>i`w_z<>*%(Bv^&o^O47&ZbUf2O3J-0XZo^*@;wa0p`W+JLCK39)JJ3IGj3Pt8%R|iV*(1F&bXmrtibX$Zp*K!&Uxx zg*1Ns3C=7nopO#XuMWD=z*%%_u6MjXFsIo0Zbx{d@1dgn>VXI6WjU((9%BDi>##4$N+%0<{Z-#=HmqzLEF2oIfKtC2CTX zVc9ID0=Qa+*(``i8TJ<7_hfJy!viWFGe*P?;8V$H13X%QKUILoo2g}r^xhk9IJFDm zA@(_g9o6ub$e0UJ@fkV@qQGv-UrvHx7SzJ!l2Vm`oG1BgZ8v{?3MKqBa!uq zTd}UxsXUAi9ef`jEj~{|lR=t8@*{ir5aUM~w|C-s{%#l4hn8otL4EGlzKXWgr-zRg z@n6><*2TY+rxd1Dzts&@7dwI8zzSihJ%eq-Fj$_%M~lp#V6R{$Z~nKqLz!oqe>$aN zFZe;k?72e-F0=hR)KFr_pBFo+UuPSK4d|?pZ`(hexjg?B_J4x=k;3+`uNS&QCf*$j zi&Nhn$JFBZCJ-OyaU^ti49|})bVd$d74Po)I@rlwV7O84f>&?HU7!XjlZ|EZ9g*dB zGAq6#XqTpi#-#58Ge%NLEov*(q|Xk$P$=S5)HmVUJ4v&|k+g4%I5rtK>X6ub{0L+A zIeF7)XJ5Ac)2Kq{ZnyTtvDBxBj~4Mii6a-$$c~Bnxu`o+bz7G>jb_e?D+FyC*7-T@H>~p(d66qU&N7Lv7^V?UJBbk zr`$=3J&_}89;@s;zur`fs?zB%9Ii&NJ<-8cDU6z$;@@TqGHFugZBK9yoHlG+zvI$!HN7#qqxhPI0pD;@C z8Pj>Nqj0svfcflyI3sH)WaZ+Dy?*}! DqxHs*