diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-02-17 05:03:15 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-02-17 05:03:15 +0100 |
| commit | 0362f55a094b5ec813d940b66f397abfa13fbe49 (patch) | |
| tree | 98283bdff3d1a0bb876fc55fa535d60d4aa2a6a9 /src/ht/ft_htset.c | |
| parent | eb0678367c5cb09b43423f77d6f1c3063fae9a91 (diff) | |
| download | libft-0362f55a094b5ec813d940b66f397abfa13fbe49.tar.gz libft-0362f55a094b5ec813d940b66f397abfa13fbe49.tar.bz2 libft-0362f55a094b5ec813d940b66f397abfa13fbe49.zip | |
amend me
Diffstat (limited to 'src/ht/ft_htset.c')
| -rw-r--r-- | src/ht/ft_htset.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/ht/ft_htset.c b/src/ht/ft_htset.c index 5ace788..4157134 100644 --- a/src/ht/ft_htset.c +++ b/src/ht/ft_htset.c @@ -6,21 +6,31 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/30 08:41:52 by cacharle #+# #+# */ -/* Updated: 2020/01/31 10:33:39 by cacharle ### ########.fr */ +/* Updated: 2020/02/17 05:02:15 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "libft.h" #include "libft_ht.h" -t_ftht_content *ft_htset(t_ftht *ht, char *key, void *value) +t_ftht_content *ft_htset(t_ftht *ht, char *key, void *value, void (*del)(void*)) { t_ftht_digest digest; t_ftht_content *content; t_ftht_entry entry; + t_ftlst *tmp; if (ht == NULL || key == NULL) return (NULL); + digest = ft_hthash(ht, key); + tmp = ft_lstlfind(ht->entries[digest], ft_inter_htkey_cmp, entry); + if (tmp != NULL) + { + if (del != NULL) + del(((t_ftht_content*)tmp->content)->value); + ((t_ftht_content*)tmp->content)->value = value; + return ((t_ftht_content*)tmp->content); + } if ((content = ft_htcontent_new(key, value)) == NULL) return (NULL); if ((entry = ft_lstnew(content)) == NULL) @@ -28,7 +38,6 @@ t_ftht_content *ft_htset(t_ftht *ht, char *key, void *value) free(content); return (NULL); } - digest = ft_hthash(ht, key); ft_lstadd_front(ht->entries + digest, entry); return (content); } |
