strsepjoin
This commit is contained in:
parent
91f79ea663
commit
1c8189631d
6 changed files with 73 additions and 2 deletions
|
|
@ -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\
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
25
libft/srcs/str/ft_strsepjoin.c
Normal file
25
libft/srcs/str/ft_strsepjoin.c
Normal 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);
|
||||
}
|
||||
Loading…
Reference in a new issue