aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-02-14 03:46:08 +0100
committerCharles <sircharlesaze@gmail.com>2020-02-14 03:46:08 +0100
commit9af2885d872de9c60b11159efe0685738031096d (patch)
tree813183555eae5d0a84f11d7be3178d07b3d5f9d9
parentadbcf69ed50ea3896d4bbe863ea5d214ae5a0299 (diff)
downloadlibft-9af2885d872de9c60b11159efe0685738031096d.tar.gz
libft-9af2885d872de9c60b11159efe0685738031096d.tar.bz2
libft-9af2885d872de9c60b11159efe0685738031096d.zip
Added documentation for all functions and refactored ft_strjoin_free -> ft_strjoinf
-rw-r--r--README.md205
-rw-r--r--include/libft_ht.h4
-rw-r--r--include/libft_io.h4
-rw-r--r--include/libft_str.h32
-rw-r--r--src/ht/ft_htget.c8
-rw-r--r--src/io/ft_getchar.c2
-rw-r--r--src/io/ft_next_line.c6
-rw-r--r--src/str/ft_atoi_strict.c4
-rw-r--r--src/str/ft_itoa.c5
-rw-r--r--src/str/ft_strdup.c4
-rw-r--r--src/str/ft_strjoin.c5
-rw-r--r--src/str/ft_strjoin_free_snd.c26
-rw-r--r--src/str/ft_strjoinf.c (renamed from src/str/ft_strjoin_free.c)17
-rw-r--r--src/str/ft_strndup.c5
-rw-r--r--src/str/ft_strtoupper.c6
-rw-r--r--src/str/ft_substr.c4
16 files changed, 164 insertions, 173 deletions
diff --git a/README.md b/README.md
index f6eac36..0a20c51 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,6 @@ Much like the `.gitignore` file, you can put the files/directory to ignore when
### algo
-
| Name | Prototype | Description | Tested |
|---------------|-----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|--------|
| ft_bsearch | `void *ft_bsearch(const void *base, size_t nel, size_t width, t_ftsearch_const *consts)` | search `consts.key` in `base` using binary search (NULL if not found) | [x] |
@@ -61,10 +60,10 @@ Much like the `.gitignore` file, you can put the files/directory to ignore when
### bt
-| Name | Prototype | Description | Tested |
-|--------------|-----------|-------------|--------|
-| ft_btdestroy | | | |
-| ft_btnew | | | |
+| Name | Prototype | Description | Tested |
+|--------------|---------------------------------------------------------------|----------------------------------------------|--------|
+| ft_btdestroy | `void ft_btdestroy(t_ftbtree *tree, void (*del)(void *data))` | destroy `tree` and apply `del` on nodes data | [ ] |
+| ft_btnew | `t_ftbtree *ft_btnew(void *data)` | create a new node with `data` | [ ] |
### ctype
@@ -83,113 +82,113 @@ Much like the `.gitignore` file, you can put the files/directory to ignore when
### ht
-| Name | Prototype | Description | Tested |
-|------------------|-----------|-------------|--------|
-| ft_htcontent_new | | | |
-| ft_htdelone | | | |
-| ft_htdelone_key | | | |
-| ft_htdestroy | | | |
-| ft_htdestroy_all | | | |
-| ft_htdestroy_key | | | |
-| ft_htget | | | |
-| ft_hthash | | | |
-| ft_htnew | | | |
-| ft_htset | | | |
+| Name | Prototype | Description | Tested |
+|------------------|-------------------------------------------------------------------------|-----------------------------------------------------------|--------|
+| ft_htcontent_new | `t_ftht_content *ft_htcontent_new(char *key, void *value)` | create a new key/value pair | [ ] |
+| ft_htdelone | `void ft_htdelone(t_ftht *ht, char *key, void (*del)(t_ftht_content*))` | delete element at `key` | [ ] |
+| ft_htdelone_key | `void ft_htdelone_key(t_ftht *ht, char *key)` | delete element at `key` and free `key` | [ ] |
+| ft_htdestroy | `void ft_htdestroy(t_ftht *ht, void (*del)(t_ftht_content*))` | destroy `ht` with the `del` functions applied on values | [ ] |
+| ft_htdestroy_all | `void ft_htdestroy_all(t_ftht *ht)` | destroy `ht`, free keys and values | [ ] |
+| ft_htdestroy_key | `void ft_htdestroy_key(t_ftht *ht)` | destroy `ht`, free keys | [ ] |
+| ft_htget | `void *ft_htget(t_ftht *ht, char *key)` | return value at `key` | [ ] |
+| ft_htnew | `t_ftht *ft_htnew(t_ftsize size)` | create a new hash table with a underlying array of `size` | [ ] |
+| ft_htset | `t_ftht_content *ft_htset(t_ftht *ht, char *key, void *value)` | set `key` to value, if element doesn't exist, create it | [ ] |
### io
-| Name | Prototype | Description | Tested |
-|---------------|-----------|-------------|--------|
-| ft_getchar | | | |
-| ft_next_line | | | |
-| ft_asprintf | | | |
-| ft_dprintf | | | |
-| ft_printf | | | |
-| ft_snprintf | | | |
-| ft_sprintf | | | |
-| ft_vasprintf | | | |
-| ft_vdprintf | | | |
-| ft_vprintf | | | |
-| ft_vsnprintf | | | |
-| ft_vsprintf | | | |
-| ft_putchar | | | |
-| ft_putchar_fd | | | |
-| ft_putendl | | | |
-| ft_putendl_fd | | | |
-| ft_putnbr | | | |
-| ft_putnbr_fd | | | |
-| ft_putstr | | | |
-| ft_putstr_fd | | | |
+| Name | Prototype | Description | Tested |
+|---------------|-----------------------------------------|------------------------------------------------|--------|
+| ft_getchar | `char ft_getchar(void)` | read one character from stdin and return it | [ ] |
+| ft_next_line | `int ft_next_line(int fd, char **line)` | read a line of `fd` and put it in `line` | [ ] |
+| ft_putchar | `void ft_putchar(char c)` | write a character on stdout | [ ] |
+| ft_putchar_fd | `void ft_putchar_fd(char c, int fd)` | write a character on `fd` | [ ] |
+| ft_putendl | `void ft_putendl(char *s)` | write a string followed by a newline on stdout | [ ] |
+| ft_putendl_fd | `void ft_putendl_fd(char *s, int fd)` | write a string followed by a newline on `fd` | [ ] |
+| ft_putnbr | `void ft_putnbr(int n)` | write a number on stdout | [ ] |
+| ft_putnbr_fd | `void ft_putnbr_fd(int n, int fd)` | write a number on `fd` | [ ] |
+| ft_putstr | `void ft_putstr(char const *s)` | write a string on stdout | [ ] |
+| ft_putstr_fd | `void ft_putstr_fd(char *s, int fd)` | write a string on `fd` | [ ] |
+
+### printf
+
+| Name | Prototype | Description | Tested |
+|---------------|----------------------------------------------------------------------------|---------------------------------------------------------------------|--------|
+| ft_asprintf | `int ft_asprintf(char **ret, const char *format, ...)` | allocate and return the formated string | [ ] |
+| ft_dprintf | `int ft_dprintf(int fd, const char *format, ...)` | write formated string to `fd` | [ ] |
+| ft_printf | `int ft_printf(const char *format, ...)` | write formated string to stdout | [ ] |
+| ft_snprintf | `int ft_snprintf(char *str, size_t size, const char *format, ...)` | write formated string in `str` with max `size` character | [ ] |
+| ft_sprintf | `int ft_sprintf(char *str, const char *format, ...)` | write formated string in `str` | [ ] |
+| ft_vasprintf | `int ft_vasprintf(char **ret, const char *format, va_list ap)` | allocate and return the formated string, with `ap` | [ ] |
+| ft_vdprintf | `int ft_vdprintf(int fd, const char *format, va_list ap)` | write formated string to `fd` , with `ap` | [ ] |
+| ft_vprintf | `int ft_vprintf(const char *format, va_list ap)` | write formated string to stdout, with `ap` | [ ] |
+| ft_vsnprintf | `int ft_vsnprintf(char *str, size_t size, const char *format, va_list ap)` | write formated string in `str` with max `size` character, with `ap` | [ ] |
+| ft_vsprintf | `int ft_vsprintf(char *str, const char *format, va_list ap)` | write formated string in `str`, with `ap` | [ ] |
### lst
-| Name | Prototype | Description | Tested |
-|------|-----------|-------------|--------|
-| ft_lstadd_back | | | |
-| ft_lstadd_front | | | |
-| ft_lstbsearch | | | |
-| ft_lstclear | | | |
-| ft_lstdelone | | | |
-| ft_lstiter | | | |
-| ft_lstlast | | | |
-| ft_lstmap | | | |
-| ft_lstnew | | | |
-| ft_lstpop_front | | | |
-| ft_lstremove_if | | | |
-| ft_lstreverse | | | |
-| ft_lstreverse_ret | | | |
-| ft_lstsize | | | |
-| ft_lstsort | | | |
-| ft_lstsorted_merge | | | |
+| Name | Prototype | Description | Tested |
+|--------------------|---------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|--------|
+| ft_lstadd_back | `void ft_lstadd_back(t_ftlst **alst, t_ftlst *new)` | add `new` at the start of `alst` | [ ] |
+| ft_lstadd_front | `void ft_lstadd_front(t_ftlst **alst, t_ftlst *new)` | add `new` at the end of `alst` | [ ] |
+| ft_lstbsearch | `t_ftlst *ft_lstbsearch(t_ftlst *lst, t_ftbool (*equal)(void *ref, void *content), void *ref)` | search `ref` in `lst` using binary search | [ ] |
+| ft_lstclear | `void ft_lstclear(t_ftlst **lst, void (*del)(void *))` | free all data with `del`, free all nodes and set `*lst` to NULL | [ ] |
+| ft_lstdelone | `void ft_lstdelone(t_ftlst *lst, void (*del)(void *))` | free `lst` node | [ ] |
+| ft_lstiter | `void ft_lstiter(t_ftlst *lst, void (*f)(void *))` | apply `f` on each node of `lst` | [ ] |
+| ft_lstlast | `t_ftlst *ft_lstlast(t_ftlst *lst)` | return the last node of `lst` | [ ] |
+| ft_lstmap | `t_ftlst *ft_lstmap(t_ftlst *lst, void *(*f)(void *), void (*del)(void *))` | create a new list which is `lst` with all node passed through `f` | [ ] |
+| ft_lstnew | `t_ftlst *ft_lstnew(void const *content)` | create a new node with `content` | [ ] |
+| ft_lstpop_front | `void ft_lstpop_front(t_ftlst **lst, void (*del)(void *))` | remove the front of `lst` | [ ] |
+| ft_lstremove_if | `void ft_lstremove_if(t_ftlst **lst, t_ftbool (*equal)(void *ref, void *content), void *ref, void (*del)(void *content))` | remove all element which verify `equal` | [ ] |
+| ft_lstreverse | `void ft_lstreverse(t_ftlst **lst)` | reverse `lst` | [ ] |
+| ft_lstreverse_ret | `t_ftlst *ft_lstreverse_ret(t_ftlst *lst)` | reverse `lst` and return it | [ ] |
+| ft_lstsize | `int ft_lstsize(t_ftlst *lst)` | return the number of node in `lst` | [ ] |
+| ft_lstsort | `void ft_lstsort(t_ftlst **begin_list, int (*cmp)(void *, void*))` | sort `begin_list` using mergesort | [ ] |
+| ft_lstsorted_merge | `t_ftlst *ft_lstsorted_merge(t_ftlst *l1, t_ftlst *l2, int (*cmp)(void *, void *))` | merge 2 sorted list and return the merged and still sorted one | [ ] |
### str
-| Name | Prototype | Description | Tested |
-|------|-----------|-------------|--------|
-| ft_atoi | | | | |
-| ft_atoi_strict | | | | |
-| ft_itoa | | | | |
-| ft_split | | | | |
-| ft_strcasecmp | | | | |
-| ft_strcat | | | | |
-| ft_strchr | | | | |
-| ft_strclr | | | | |
-| ft_strcmp | | | | |
-| ft_strcount | | | | |
-| ft_strcpy | | | | |
-| ft_strcspn | | | | |
-| ft_strdel | | | | |
-| ft_strdup | | | | |
-| ft_strequ | | | | |
-| ft_striter | | | | |
-| ft_striteri | | | | |
-| ft_strjoin | | | | |
-| ft_strjoin_free | | | | |
-| ft_strjoin_free_snd | | | | |
-| ft_strlcat | | | | |
-| ft_strlcpy | | | | |
-| ft_strlen | | | | |
-| ft_strmap | | | | |
-| ft_strmapi | | | | |
-| ft_strncasecmp | | | | |
-| ft_strncat | | | | |
-| ft_strncmp | | | | |
-| ft_strncpy | | | | |
-| ft_strndup | | | | |
-| ft_strnequ | | | | |
-| ft_strnew | | | | |
-| ft_strnlen | | | | |
-| ft_strnstr | | | | |
-| ft_strpbrk | | | | |
-| ft_strrchr | | | | |
-| ft_strsep | | | | |
-| ft_strspn | | | | |
-| ft_strstr | | | | |
-| ft_strtol | | | | |
-| ft_strtolower | | | | |
-| ft_strtoupper | | | | |
-| ft_strtrim | | | | |
-| ft_substr | | | | |
+| Name | Prototype | Description | Tested |
+|----------------|--------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|--------|
+| ft_atoi | `int ft_atoi(const char *nptr)` | convert `nptr` to an int | [ ] |
+| ft_atoi_strict | `int ft_atoi_strict(const char *s )` | convert `nptr` to an int without spaces or other characters | [ ] |
+| ft_itoa | `char *ft_itoa(int n)` | return a string which represent `n` | [ ] |
+| ft_split | `char **ft_split(char const *s, char c)` | return the strings in between `c` in `s` | [ ] |
+| ft_strcasecmp | `int ft_strcasecmp(const char *s1, const char *s2)` | compare `s1` and `s2` ignoring case | [ ] |
+| ft_strcat | `char *ft_strcat(char *dest, const char *src)` | concatenate `dest` and `src` in `dest` | [ ] |
+| ft_strchr | `char *ft_strchr(const char *s, int c)` | search `c` in `s`, return address if found, NULL otherwise | [ ] |
+| ft_strcmp | `int ft_strcmp(const char *s1, const char *s2)` | compare `s1` and `s2` | [ ] |
+| ft_strcount | `int ft_strcount(char *str, char c)` | count the number of occurence of `c` in `str` | [ ] |
+| ft_strcpy | `char *ft_strcpy(char *dest, const char *src)` | copy `src` in `dest` | [ ] |
+| ft_strcspn | `size_t ft_strcspn(const char *s, const char *charset)` | return the index of the first character in `charset` | [ ] |
+| ft_strdup | `char *ft_strdup(const char *s)` | allocate and copy `s` in a new string then return it | [ ] |
+| ft_strequ | `int ft_strequ(char const *s1, char const *s2)` | test if `s1` and `s2` are equal | [ ] |
+| ft_striter | `void ft_striter(char *s, void (*f)(char *))` | apply `f` over every character of `s` | [ ] |
+| ft_striteri | `void ft_striteri(char *s, void (*f)(unsigned int, char *))` | apply `f` over every character of `s` with index | [ ] |
+| ft_strjoin | `char *ft_strjoin(char const *s1, char const *s2)` | allocate a concatenation of `s1` and `s2` | [ ] |
+| ft_strjoinf | `char *ft_strjoinf(char const *s1, char const *s2, t_ftstrjoin_tag tag)` | allocate a concatenation of `s1` and `s2` then free `s1`, `s2` or both according to `tag` | [ ] |
+| ft_strlcat | `size_t ft_strlcat(char *dst, const char *src, size_t size)` | concatenate `dest` and `src` in dest with maximum `size - 1` character | [ ] |
+| ft_strlcpy | `size_t ft_strlcpy(char *dst, const char *src, size_t size)` | copy `src` in `dest` with maximum `size - 1` character | [ ] |
+| ft_strlen | `size_t ft_strlen(const char *s)` | return the length of `s` | [x] |
+| ft_strmap | `char *ft_strmap(char const *s, char (*f)(char))` | allocate a copy of `s` with every character passed through `f` | [ ] |
+| ft_strmapi | `char *ft_strmapi(char *s, char (*f)(unsigned int, char))` | allocate a copy of `s` with every character passed through `f` with index | [ ] |
+| ft_strncasecmp | `int ft_strncasecmp(const char *s1, const char *s2, size_t n)` | compare `s1` and `s2` ignoring case until `n` | [ ] |
+| ft_strncat | `char *ft_strncat(char *dest, const char *src, size_t n)` | concatenate `dest` and `src` in dest with maximum `n` character | [ ] |
+| ft_strncmp | `int ft_strncmp(const char *s1, const char *s2, size_t n)` | compare `s1` and `s2` until `n` | [ ] |
+| ft_strncpy | `char *ft_strncpy(char *dest, const char *src, size_t n)` | copy `src` in `dest` with maximum `n` character | [ ] |
+| ft_strndup | `char *ft_strndup(const char *s1, size_t n)` | allocate and copy `s` until `n` in a new string then return it | [ ] |
+| ft_strnequ | `int ft_strnequ(char const *s1, char const *s2, size_t n)` | test if `s1` and `s2` are not equal | [ ] |
+| ft_strnlen | `size_t ft_strnlen(const char *s, size_t maxlen)` | return the length of `s` until `maxlen` | [ ] |
+| ft_strnstr | `char *ft_strnstr(const char *haystack, const char *needle, size_t len)` | search `len` character of `haystack` for `needle` | [ ] |
+| ft_strpbrk | `char *ft_strpbrk(const char *s, const char *charset)` | return the address of the first character in `charset` in `s` (NULL if not any) | [ ] |
+| ft_strrchr | `char *ft_strrchr(const char *s, int c)` | search `c` in `s` from the end, return the address of first match (NULL if not found) | [ ] |
+| ft_strsep | `char *ft_strsep(char **stringp, const char *delim)` | find first occurance of `delim` in `*stringp` replace it with `'\0'` return pointer to the match and store char after in `*stringp` | [ ] |
+| ft_strspn | `size_t ft_strspn(const char *s, const char *charset)` | return the index of the first character not in `charset` | [ ] |
+| ft_strstr | `char *ft_strstr(const char *haystack, const char *needle)` | search for `needle` in `haystack` (NULL if not found) | [ ] |
+| ft_strtol | `long ft_strtol(const char *s, char **endptr, int base)` | convert `s` to a long int and store address of the next to last digit in `endptr`, according to `base` (2..26) | [ ] |
+| ft_strtolower | `char *ft_strtolower(char *s)` | convert all characters of `s` to lower case | [ ] |
+| ft_strtoupper | `char *ft_strtoupper(char *s)` | convert all characters of `s` to upper case | [ ] |
+| ft_strtrim | `char *ft_strtrim(char const *s1, char const *set)` | remove the characters in `set` at the start and end of `s1` | [ ] |
+| ft_substr | `char *ft_substr(char const *s, unsigned int start, size_t len)` | allocate and fill substring in `s` at `start` with length `len` | [ ] |
## School correction state
diff --git a/include/libft_ht.h b/include/libft_ht.h
index 8551ddb..8eda59c 100644
--- a/include/libft_ht.h
+++ b/include/libft_ht.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/31 10:36:09 by cacharle #+# #+# */
-/* Updated: 2020/01/31 10:41:24 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 02:14:57 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -38,7 +38,7 @@ t_ftht *ft_htnew(t_ftsize size);
void ft_htdestroy(t_ftht *ht, void (*del)(t_ftht_content*));
void ft_htdestroy_all(t_ftht *ht);
void ft_htdestroy_key(t_ftht *ht);
-t_ftht_content *ft_htget(t_ftht *ht, char *key);
+void *ft_htget(t_ftht *ht, char *key);
t_ftht_content *ft_htset(t_ftht *ht, char *key, void *value);
void ft_htdelone(t_ftht *ht, char *key,
void (*del)(t_ftht_content*));
diff --git a/include/libft_io.h b/include/libft_io.h
index e1a2536..76bce17 100644
--- a/include/libft_io.h
+++ b/include/libft_io.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/31 10:35:43 by cacharle #+# #+# */
-/* Updated: 2020/01/31 10:35:48 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 02:23:43 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -27,6 +27,8 @@ void ft_putstr_fd(char *s, int fd);
void ft_putendl_fd(char *s, int fd);
void ft_putnbr_fd(int n, int fd);
+char ft_getchar(void);
+
# ifndef FTNL_BUFFER_SIZE
# define FTNL_BUFFER_SIZE 32
# endif
diff --git a/include/libft_str.h b/include/libft_str.h
index e3faeab..582ef00 100644
--- a/include/libft_str.h
+++ b/include/libft_str.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/31 10:39:22 by cacharle #+# #+# */
-/* Updated: 2020/02/10 05:24:00 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 03:45:15 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -16,6 +16,13 @@
# include <stddef.h>
# include "libft_ctype.h"
+typedef enum
+{
+ FT_STRJOINF_FST,
+ FT_STRJOINF_SND,
+ FT_STRJOINF_ALL
+} t_ftstrjoinf_tag;
+
/*
** std
*/
@@ -45,13 +52,12 @@ void ft_striter(char *s, void (*f)(char *));
void ft_striteri(char *s, void (*f)(unsigned int, char *));
char *ft_substr(char const *s, unsigned int start, size_t len);
char *ft_strjoin(char const *s1, char const *s2);
+char *ft_strjoinf(char const *s1, char const *s2, t_ftstrjoinf_tag tag);
char *ft_strtrim(char const *s1, char const *set);
char **ft_split(char const *s, char c);
-char *ft_strjoin_free(char const *s1, char const *s2, int free_nb);
-char *ft_strjoin_free_snd(char const *s1, char const *s2);
int ft_strcount(char *str, char c);
char *ft_itoa(int n);
-int ft_strict_atoi(const char *s);
+int ft_atoi_strict(const char *s);
long ft_strtol(const char *s, char **endptr, int base);
int ft_strcasecmp(const char *s1, const char *s2);
int ft_strncasecmp(const char *s1, const char *s2, size_t n);
@@ -60,17 +66,21 @@ size_t ft_strcspn(const char *s, const char *charset);
char *ft_strpbrk(const char *s, const char *charset);
char *ft_strsep(char **stringp, const char *delim);
size_t ft_strnlen(const char *s, size_t maxlen);
+char *ft_strmap(char const *s, char (*f)(char));
+char *ft_strmapi(char *s, char (*f)(unsigned int, char));
+int ft_strequ(char const *s1, char const *s2);
+int ft_strnequ(char const *s1, char const *s2, size_t n);
+char *ft_strtolower(char *s);
+char *ft_strtoupper(char *s);
/*
** bloat ?
*/
-char *ft_strnew(size_t size);
-void ft_strdel(char **as);
-void ft_strclr(char *s);
-char *ft_strmap(char const *s, char (*f)(char));
-char *ft_strmapi(char *s, char (*f)(unsigned int, char));
-int ft_strequ(char const *s1, char const *s2);
-int ft_strnequ(char const *s1, char const *s2, size_t n);
+/*
+** char *ft_strnew(size_t size);
+** void ft_strdel(char **as);
+** void ft_strclr(char *s);
+*/
#endif
diff --git a/src/ht/ft_htget.c b/src/ht/ft_htget.c
index 0002249..02ce4a3 100644
--- a/src/ht/ft_htget.c
+++ b/src/ht/ft_htget.c
@@ -6,14 +6,14 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/30 08:33:21 by cacharle #+# #+# */
-/* Updated: 2020/01/31 10:40:57 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 02:18:00 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
#include "libft_ht.h"
-t_ftht_content *ft_htget(t_ftht *ht, char *key)
+void *ft_htget(t_ftht *ht, char *key)
{
t_ftht_digest digest;
@@ -22,7 +22,7 @@ t_ftht_content *ft_htget(t_ftht *ht, char *key)
if (ht == NULL || key == NULL)
return (NULL);
digest = ft_hthash(ht, key);
- return (ft_lstbsearch(ht->entries[digest],
+ return (((t_ftht_content*)ft_lstbsearch(ht->entries[digest],
(t_ftbool (*)(void*, void*))ft_inter_htkey_equal,
- key)->content);
+ key)->content)->value);
}
diff --git a/src/io/ft_getchar.c b/src/io/ft_getchar.c
index 54b44d4..9d233c0 100644
--- a/src/io/ft_getchar.c
+++ b/src/io/ft_getchar.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/18 10:29:54 by cacharle #+# #+# */
-/* Updated: 2020/01/18 10:46:56 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 02:24:56 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
diff --git a/src/io/ft_next_line.c b/src/io/ft_next_line.c
index 51d21ec..0f4cc2c 100644
--- a/src/io/ft_next_line.c
+++ b/src/io/ft_next_line.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/31 10:39:38 by cacharle #+# #+# */
-/* Updated: 2020/01/31 10:39:40 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 03:38:01 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -53,11 +53,11 @@ static int st_read_line(int fd, char **line, char *rest)
{
ft_strcpy(rest, buf + split_at + 1);
buf[split_at] = '\0';
- if ((*line = ft_strjoin_free(*line, buf, 1)) == NULL)
+ if ((*line = ft_strjoinf(*line, buf, FT_STRJOINF_FST)) == NULL)
return (st_free_return(&buf, NULL, FTNL_STATUS_ERROR));
return (st_free_return(&buf, NULL, FTNL_STATUS_LINE));
}
- if ((*line = ft_strjoin_free(*line, buf, 1)) == NULL)
+ if ((*line = ft_strjoinf(*line, buf, FT_STRJOINF_FST)) == NULL)
return (st_free_return(&buf, NULL, FTNL_STATUS_ERROR));
}
if (ret == -1)
diff --git a/src/str/ft_atoi_strict.c b/src/str/ft_atoi_strict.c
index f573593..8be4c4b 100644
--- a/src/str/ft_atoi_strict.c
+++ b/src/str/ft_atoi_strict.c
@@ -6,13 +6,13 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/15 10:06:29 by cacharle #+# #+# */
-/* Updated: 2020/02/10 02:20:40 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 02:46:43 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
-int ft_strict_atoi(const char *s)
+int ft_atoi_strict(const char *s)
{
char *end;
long ret;
diff --git a/src/str/ft_itoa.c b/src/str/ft_itoa.c
index 166e278..39b6e12 100644
--- a/src/str/ft_itoa.c
+++ b/src/str/ft_itoa.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 10:19:56 by cacharle #+# #+# */
-/* Updated: 2019/11/20 03:13:10 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 03:39:11 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -25,8 +25,9 @@ char *ft_itoa(int n)
u_nbr /= 10;
len++;
}
- if ((str = ft_strnew(len)) == NULL)
+ if ((str = (char*)malloc(sizeof(char) * (len + 1))) == NULL)
return (NULL);
+ str[len] = '\0';
u_nbr = n < 0 ? -n : n;
if (n < 0)
str[0] = '-';
diff --git a/src/str/ft_strdup.c b/src/str/ft_strdup.c
index 65a6ac6..b248272 100644
--- a/src/str/ft_strdup.c
+++ b/src/str/ft_strdup.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 10:18:07 by cacharle #+# #+# */
-/* Updated: 2019/11/20 03:13:47 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 03:39:56 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -16,7 +16,7 @@ char *ft_strdup(const char *s)
{
char *clone;
- if ((clone = ft_strnew(ft_strlen(s))) == NULL)
+ if ((clone = (char*)malloc(sizeof(char) * (ft_strlen(s) + 1))) == NULL)
return (NULL);
return (ft_strcpy(clone, s));
}
diff --git a/src/str/ft_strjoin.c b/src/str/ft_strjoin.c
index 2bc4908..b65eaa2 100644
--- a/src/str/ft_strjoin.c
+++ b/src/str/ft_strjoin.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 10:35:26 by cacharle #+# #+# */
-/* Updated: 2019/11/20 04:02:20 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 03:40:39 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -18,7 +18,8 @@ char *ft_strjoin(char const *s1, char const *s2)
if (s1 == NULL || s2 == NULL)
return (NULL);
- if ((joined = ft_strnew(ft_strlen(s1) + ft_strlen(s2))) == NULL)
+ if ((joined = (char*)malloc(sizeof(char)
+ * (ft_strlen(s1) + ft_strlen(s2) + 1))) == NULL)
return (NULL);
return (ft_strcat(ft_strcpy(joined, s1), s2));
}
diff --git a/src/str/ft_strjoin_free_snd.c b/src/str/ft_strjoin_free_snd.c
deleted file mode 100644
index 0503211..0000000
--- a/src/str/ft_strjoin_free_snd.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* ************************************************************************** */
-/* */
-/* ::: :::::::: */
-/* ft_strjoin_free_snd.c :+: :+: :+: */
-/* +:+ +:+ +:+ */
-/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
-/* +#+#+#+#+#+ +#+ */
-/* Created: 2019/11/05 22:12:56 by cacharle #+# #+# */
-/* Updated: 2019/11/14 10:07:19 by cacharle ### ########.fr */
-/* */
-/* ************************************************************************** */
-
-#include <stdlib.h>
-#include "libft.h"
-
-char *ft_strjoin_free_snd(char const *s1, char const *s2)
-{
- char *joined;
-
- if (s1 == NULL || s2 == NULL)
- return (NULL);
- if ((joined = ft_strjoin(s1, s2)) == NULL)
- return (NULL);
- free((void*)s2);
- return (joined);
-}
diff --git a/src/str/ft_strjoin_free.c b/src/str/ft_strjoinf.c
index 4050b77..228a963 100644
--- a/src/str/ft_strjoin_free.c
+++ b/src/str/ft_strjoinf.c
@@ -1,29 +1,32 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
-/* ft_strjoin_free.c :+: :+: :+: */
+/* ft_strjoinf.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
-/* Created: 2019/11/05 21:32:48 by cacharle #+# #+# */
-/* Updated: 2019/11/14 10:07:10 by cacharle ### ########.fr */
+/* Created: 2020/02/14 03:41:07 by cacharle #+# #+# */
+/* Updated: 2020/02/14 03:41:25 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include <stdlib.h>
#include "libft.h"
+#include "libft_str.h"
-char *ft_strjoin_free(char const *s1, char const *s2, int free_nb)
+char *ft_strjoinf(char const *s1, char const *s2, t_ftstrjoinf_tag tag)
{
char *joined;
- if (s1 == NULL || s2 == NULL || free_nb < 0 || free_nb > 2)
+ if (s1 == NULL || s2 == NULL)
return (NULL);
if ((joined = ft_strjoin(s1, s2)) == NULL)
return (NULL);
- if (free_nb == 1)
+ if (tag == FT_STRJOINF_FST)
free((void*)s1);
- if (free_nb == 2)
+ else if (tag == FT_STRJOINF_SND)
+ free((void*)s2);
+ else if (tag == FT_STRJOINF_ALL)
{
free((void*)s1);
free((void*)s2);
diff --git a/src/str/ft_strndup.c b/src/str/ft_strndup.c
index 0683dae..894ea4e 100644
--- a/src/str/ft_strndup.c
+++ b/src/str/ft_strndup.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/25 03:28:52 by cacharle #+# #+# */
-/* Updated: 2019/11/20 04:15:44 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 03:43:55 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -16,7 +16,8 @@ char *ft_strndup(const char *s1, size_t n)
{
char *clone;
- if ((clone = ft_strnew(n)) == NULL)
+ if ((clone = (char*)malloc(sizeof(char) * (n + 1))) == NULL)
return (NULL);
+ clone[n] = '\0';
return (ft_strncpy(clone, s1, n));
}
diff --git a/src/str/ft_strtoupper.c b/src/str/ft_strtoupper.c
index 07c19e5..4a751d3 100644
--- a/src/str/ft_strtoupper.c
+++ b/src/str/ft_strtoupper.c
@@ -6,14 +6,14 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/10 04:12:04 by cacharle #+# #+# */
-/* Updated: 2020/02/10 05:05:38 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 02:49:35 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft_str.h"
#include "libft_ctype.h"
-char *ft_strtolower(char *s)
+char *ft_strtoupper(char *s)
{
int i;
@@ -21,6 +21,6 @@ char *ft_strtolower(char *s)
return (NULL);
i = -1;
while (s[i])
- s[i] = ft_tolower(s[i]);
+ s[i] = ft_toupper(s[i]);
return (s);
}
diff --git a/src/str/ft_substr.c b/src/str/ft_substr.c
index 84d6c58..ad9c706 100644
--- a/src/str/ft_substr.c
+++ b/src/str/ft_substr.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/17 08:28:49 by cacharle #+# #+# */
-/* Updated: 2019/11/20 03:57:58 by cacharle ### ########.fr */
+/* Updated: 2020/02/14 03:44:42 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -18,7 +18,7 @@ char *ft_substr(char const *s, unsigned int start, size_t len)
if (s == NULL)
return (NULL);
- if ((sub = ft_strnew(len)) == NULL)
+ if ((sub = (char*)malloc(sizeof(char) * (len + 1))) == NULL)
return (NULL);
if (start > ft_strlen(s))
return (sub);