#include <unistd.h>
#include <string.h>
#include <fcntl.h>
-#include <string.h>
#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>
static int usage(char *name)
{
- fprintf(stderr, "%s: hostname:port\n", name);
+ fprintf(stderr, "... | %s: hostname:port\n", name);
return 1;
}
{
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");
- return 1;
- }
+ if (check_input_pipe())
+ return usage(argv[0]);
hname = strdup(argv[1]);
p = strstr(hname, ":");
if (fd < 0)
return error("socket");
- fprintf(stderr, "connecting to %s, port %x\n", hname, addr.sin_port);
-
if (connect(fd, (struct sockaddr *) &addr, sizeof(addr)) < 0)
return error("connect");