strsepjoin

This commit is contained in:
Jack Halford 2017-07-25 18:20:06 +02:00
parent a0d85d1c71
commit 52c3c2e15b
6 changed files with 73 additions and 2 deletions

View file

@ -151,6 +151,7 @@ sstr/ft_sstrprint.c\
sstr/ft_sstrprint_fd.c\
sstr/ft_sstrsort.c\
sstr/ft_sstrstr.c\
str/ft_strsepjoin.c\
str/ft_atoi.c\
str/ft_convert_base.c\
str/ft_putaddr_fd.c\

View file

@ -3,6 +3,7 @@
# define ACK 2
# define NACK 3
# define NET_MAXSIZE 512
# include <sys/socket.h>
# include <netdb.h>
@ -13,7 +14,9 @@ int create_server(int port, int backlog, char *protoname);
int create_client(char *addr, int port, char *protoname);
int net_send(int sock, char *msg, int size);
int net_send_large(int sock, char *msg, int size);
int net_get(int sock, char *msg, int size);
int net_get_fd(int sock, int fd, int size);
int net_get_large(int sock, int fd);
#endif

View file

@ -51,6 +51,7 @@ int ft_strequ(char const *s1, char const *s2);
int ft_strnequ(char const *s1, char const *s2, size_t n);
char *ft_strsub(char const *s, unsigned int start, size_t len);
char *ft_strjoin(char const *s1, char const *s2);
char *ft_strsepjoin(char **tab, char sep);
char *ft_strtrim(char const *s);
char **ft_strsplit(char const *s, char c);

View file

@ -26,3 +26,21 @@ int net_get_fd(int sock, int fd, int size)
return (-1);
return (0);
}
int net_get_large(int sock, int fd)
{
int i;
int num_blks;
int num_last_blk;
net_get(sock, (char*)&num_blks, sizeof(num_blks));
net_get(sock, (char*)&num_last_blk, sizeof(num_last_blk));
num_blks = ntohs(num_blks);
num_last_blk = ntohs(num_last_blk);
i = -1;
while (++i < num_blks - 1)
net_get_fd(sock, fd, NET_MAXSIZE);
if (num_last_blk)
net_get_fd(sock, fd, num_last_blk);
return (0);
}

View file

@ -12,3 +12,26 @@ int net_send(int sock, char *msg, int size)
return (1);
return (0);
}
int net_send_large(int sock, char *msg, int size)
{
int i;
int num_blks;
int num_last_blk;
num_blks = htons(size / NET_MAXSIZE + 1);
num_last_blk = htons(size % NET_MAXSIZE);
if (net_send(sock, (char*)&num_blks, sizeof(num_blks)))
return (1);
if (net_send(sock, (char*)&num_last_blk, sizeof(num_blks)))
return (1);
num_blks = ntohs(num_blks);
num_last_blk = ntohs(num_last_blk);
i = -1;
while (++i < num_blks - 1)
net_send(sock, msg + i * NET_MAXSIZE, NET_MAXSIZE);
if (num_last_blk)
net_send(sock, msg + i * NET_MAXSIZE, num_last_blk);
return (0);
}

View file

@ -0,0 +1,25 @@
#include "libft.h"
char *ft_strsepjoin(char **tab, char sep)
{
char *join;
char **p;
int len;
len = 0;
if (!(p = tab))
return (NULL);
while (*p)
len += ft_strlen(*p++) + 1;
if (!(join = ft_strnew(len)))
return (NULL);
*join = 0;
p = tab;
while (*p)
{
ft_strcat(join, *p++);
ft_strcat(join, &sep);
}
join[len - 1] = 0;
return (join);
}