#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
-#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#include <limits.h>
{
struct sockaddr_in addr;
char *p, *hname;
- struct stat sb;
int fd;
if (argc < 2)
return usage(argv[0]);
- if (fstat(STDIN_FILENO, &sb) < 0)
- return error("stat");
- if (!S_ISFIFO(sb.st_mode)) {
- fprintf(stderr, "stdin must be a pipe\n");
+ if (check_input_pipe())
return usage(argv[0]);
- }
hname = strdup(argv[1]);
p = strstr(hname, ":");
#include <string.h>
#include <fcntl.h>
#include <string.h>
-#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#include <assert.h>
int main(int argc, char *argv[])
{
- struct stat sb;
int fd;
if (argc < 2)
return usage(argv[0]);
- if (fstat(STDIN_FILENO, &sb) < 0)
- return error("stat");
- if (!S_ISFIFO(sb.st_mode)) {
- fprintf(stderr, "stdout must be a pipe\n");
+ if (check_input_pipe())
return usage(argv[0]);
- }
fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd < 0)
if (argc < 2)
return usage(argv[0]);
- if (fstat(STDOUT_FILENO, &sb) < 0)
- return error("stat");
- if (!S_ISFIFO(sb.st_mode)) {
- fprintf(stderr, "stdout must be a pipe\n");
+ if (check_output_pipe())
return usage(argv[0]);
- }
fd = open(argv[1], O_RDONLY);
if (fd < 0)
#include <arpa/inet.h>
#include <string.h>
#include <sys/time.h>
-#include <sys/stat.h>
#include <errno.h>
#include "splice.h"
struct sockaddr_in addr;
unsigned short port;
int fd, ret;
- struct stat sb;
if (argc < 3)
return usage(argv[0]);
- if (fstat(STDIN_FILENO, &sb) < 0)
- return error("stat");
- if (!S_ISFIFO(sb.st_mode)) {
- fprintf(stderr, "stdin must be a pipe\n");
+ if (check_input_pipe())
return usage(argv[0]);
- }
port = atoi(argv[2]);
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
-#include <sys/stat.h>
#include "splice.h"
int main(int argc, char *argv[])
{
- struct stat sb;
int fd, index;
- if (fstat(STDIN_FILENO, &sb) < 0)
- return error("stat");
- if (!S_ISFIFO(sb.st_mode)) {
- fprintf(stderr, "stdin must be a pipe\n");
+ if (check_input_pipe())
return usage(argv[0]);
- }
index = parse_options(argc, argv);
if (index == -1 || index + 1 > argc)
#define SPLICE_H
#include <sys/uio.h>
+#include <sys/stat.h>
#if defined(__i386__)
#define __NR_splice 313
return -1;
}
+static int __check_pipe(int pfd)
+{
+ struct stat sb;
+
+ if (fstat(pfd, &sb) < 0)
+ return error("stat");
+ if (!S_ISFIFO(sb.st_mode))
+ return 1;
+
+ return 0;
+}
+
+static inline int check_input_pipe(void)
+{
+ if (!__check_pipe(STDIN_FILENO))
+ return 0;
+
+ fprintf(stderr, "stdin must be a pipe\n");
+ return 1;
+}
+
+static inline int check_output_pipe(void)
+{
+ if (!__check_pipe(STDOUT_FILENO))
+ return 0;
+
+ fprintf(stderr, "stdout must be a pipe\n");
+ return 1;
+}
+
#endif
#include <string.h>
#include <getopt.h>
#include <sys/poll.h>
-#include <sys/stat.h>
#include <sys/types.h>
#include "splice.h"
int main(int argc, char *argv[])
{
unsigned char *b1, *b2;
- struct stat sb;
if (parse_options(argc, argv) < 0)
return usage(argv[0]);
- if (fstat(STDOUT_FILENO, &sb) < 0)
- return error("stat");
- if (!S_ISFIFO(sb.st_mode)) {
- fprintf(stderr, "stdout must be a pipe\n");
+ if (check_output_pipe())
return usage(argv[0]);
- }
b1 = ALIGN(malloc(SPLICE_SIZE + align_mask));
b2 = ALIGN(malloc(SPLICE_SIZE + align_mask));