util: Added new tvh_pipe() helper routine.
This commit is contained in:
parent
fa6d71a719
commit
517d01378a
2 changed files with 27 additions and 0 deletions
|
@ -440,10 +440,18 @@ static inline const char *tvh_strbegins(const char *s1, const char *s2)
|
|||
return s1;
|
||||
}
|
||||
|
||||
typedef struct th_pipe
|
||||
{
|
||||
int rd;
|
||||
int wr;
|
||||
} th_pipe_t;
|
||||
|
||||
int tvh_open(const char *pathname, int flags, mode_t mode);
|
||||
|
||||
int tvh_socket(int domain, int type, int protocol);
|
||||
|
||||
int tvh_pipe(int flags, th_pipe_t *pipe);
|
||||
|
||||
void hexdump(const char *pfx, const uint8_t *data, int len);
|
||||
|
||||
uint32_t tvh_crc32(uint8_t *data, size_t datalen, uint32_t crc);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <fcntl.h>
|
||||
#include <sys/types.h> /* See NOTES */
|
||||
#include <sys/socket.h>
|
||||
#include <unistd.h>
|
||||
#include "tvheadend.h"
|
||||
|
||||
int
|
||||
|
@ -29,3 +30,21 @@ tvh_socket(int domain, int type, int protocol)
|
|||
pthread_mutex_unlock(&fork_lock);
|
||||
return fd;
|
||||
}
|
||||
|
||||
int
|
||||
tvh_pipe(int flags, th_pipe_t *p)
|
||||
{
|
||||
int fd[2], err;
|
||||
pthread_mutex_lock(&fork_lock);
|
||||
err = pipe(fd);
|
||||
if (err != -1) {
|
||||
fcntl(fd[0], F_SETFD, fcntl(fd[0], F_GETFD) | FD_CLOEXEC);
|
||||
fcntl(fd[1], F_SETFD, fcntl(fd[1], F_GETFD) | FD_CLOEXEC);
|
||||
fcntl(fd[0], F_SETFL, fcntl(fd[0], F_GETFL) | flags);
|
||||
fcntl(fd[1], F_SETFL, fcntl(fd[1], F_GETFL) | flags);
|
||||
p->rd = fd[0];
|
||||
p->wr = fd[1];
|
||||
}
|
||||
pthread_mutex_unlock(&fork_lock);
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue