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_sstrprint_fd.c\
|
||||||
sstr/ft_sstrsort.c\
|
sstr/ft_sstrsort.c\
|
||||||
sstr/ft_sstrstr.c\
|
sstr/ft_sstrstr.c\
|
||||||
|
str/ft_strsepjoin.c\
|
||||||
str/ft_atoi.c\
|
str/ft_atoi.c\
|
||||||
str/ft_convert_base.c\
|
str/ft_convert_base.c\
|
||||||
str/ft_putaddr_fd.c\
|
str/ft_putaddr_fd.c\
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
# define ACK 2
|
# define ACK 2
|
||||||
# define NACK 3
|
# define NACK 3
|
||||||
|
# define NET_MAXSIZE 512
|
||||||
|
|
||||||
# include <sys/socket.h>
|
# include <sys/socket.h>
|
||||||
# include <netdb.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 create_client(char *addr, int port, char *protoname);
|
||||||
|
|
||||||
int net_send(int sock, char *msg, int size);
|
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(int sock, char *msg, int size);
|
||||||
int net_get_fd(int sock, int fd, int size);
|
int net_get_fd(int sock, int fd, int size);
|
||||||
|
int net_get_large(int sock, int fd);
|
||||||
|
|
||||||
#endif
|
#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);
|
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_strsub(char const *s, unsigned int start, size_t len);
|
||||||
char *ft_strjoin(char const *s1, char const *s2);
|
char *ft_strjoin(char const *s1, char const *s2);
|
||||||
|
char *ft_strsepjoin(char **tab, char sep);
|
||||||
char *ft_strtrim(char const *s);
|
char *ft_strtrim(char const *s);
|
||||||
char **ft_strsplit(char const *s, char c);
|
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 (-1);
|
||||||
return (0);
|
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 (1);
|
||||||
return (0);
|
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