return ret;
}
+FILE *
+xfopen (const char *path, const char *mode)
+{
+ FILE *ret;
+
+ ret = fopen (path, mode);
+
+ if (ret == NULL) {
+ fprintf (stderr, "Error: fopen of %s failed: %s. Aborting.\n",
+ path, strerror (errno));
+ exit (1);
+ }
+
+ return ret;
+}
+
FILE *
xfdopen (int filedes, const char *mode)
{
}
void
-xfreopen (const char *path, const char *mode, FILE *stream)
+xdup2 (int oldfd, int newfd)
{
- FILE *ret;
+ int ret;
- ret = freopen (path, mode, stream);
- if (ret == NULL) {
- fprintf (stderr, "Error: freopen of %s failed: %s. Aborting.\n",
- path, strerror (errno));
+ ret = dup2 (oldfd, newfd);
+ if (ret == -1) {
+ printf ("Error: dup2 failed: %s. Aborting.\n",
+ strerror (errno));
exit (1);
}
}
}
}
+ttt_status_t
+xconnect (int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen)
+{
+ int ret;
+
+ ret = connect (sockfd, serv_addr, addrlen);
+ if (ret == -1) {
+ switch (errno) {
+ case ECONNREFUSED:
+ return TTT_STATUS_CONNECTION_REFUSED;
+ case EHOSTUNREACH:
+ case ENETUNREACH:
+ return TTT_STATUS_NETWORK_UNREACHABLE;
+ default:
+ fprintf (stderr, "Error: connect failed (errno = %d): %s. Aborting.\n",
+ errno, strerror (errno));
+ exit (1);
+ }
+ }
+
+ return TTT_STATUS_SUCCESS;
+}
+
void
xlisten (int s, int backlog)
{