improve error handling for -c option

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@835 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2003-06-04 11:55:06 +00:00
parent f3914ac22e
commit eee154bb00

View File

@ -178,18 +178,6 @@
#define invalid_socket_fd(fd) (fd) < 0 #define invalid_socket_fd(fd) (fd) < 0
#endif #endif
#define INTERFACE_PORT 8081
#define HOST "khome.ncc.up.pt"
STD_PROTO(static void crash, (char *));
static void
crash(char *msg)
{
fprintf(stderr, msg);
exit(1);
}
void void
Yap_init_socks(char *host, long interface_port) Yap_init_socks(char *host, long interface_port)
{ {
@ -201,9 +189,15 @@ Yap_init_socks(char *host, long interface_port)
struct linger ling; /* For making sockets linger. */ struct linger ling; /* For making sockets linger. */
#if USE_SOCKET
he = gethostbyname(host); he = gethostbyname(host);
if (!he) { if (!he) {
crash("[can not get address for host]"); #if HAVE_STRERROR
Yap_Error(SYSTEM_ERROR, TermNil, "can not get address for host: %s", strerror(errno));
#else
Yap_Error(SYSTEM_ERROR, TermNil, "can not get address for host");
#endif
return;
} }
(void) memset((char *) &adr, '\0', sizeof(struct sockaddr_in)); (void) memset((char *) &adr, '\0', sizeof(struct sockaddr_in));
@ -220,7 +214,12 @@ Yap_init_socks(char *host, long interface_port)
s = socket ( AF_INET, SOCK_STREAM, 0); s = socket ( AF_INET, SOCK_STREAM, 0);
if (s<0) { if (s<0) {
crash("[ could not create socket ]"); #if HAVE_STRERROR
Yap_Error(SYSTEM_ERROR, TermNil, "could not create socket: %s", strerror(errno));
#else
Yap_Error(SYSTEM_ERROR, TermNil, "could not create socket");
#endif
return;
} }
ling.l_onoff = 1; ling.l_onoff = 1;
@ -230,22 +229,38 @@ Yap_init_socks(char *host, long interface_port)
r = connect ( s, (struct sockaddr *) &soadr, sizeof(soadr)); r = connect ( s, (struct sockaddr *) &soadr, sizeof(soadr));
if (r<0) { if (r<0) {
fprintf(stderr,"connect failed with %d\n",r); #if HAVE_STRERROR
crash("[ could not connect to interface]"); Yap_Error(SYSTEM_ERROR, TermNil, "connect failed, could not connect to interface: %s", strerror(errno));
#else
Yap_Error(SYSTEM_ERROR, TermNil, "connect failed, could not connect to interface");
#endif
return;
} }
/* now reopen stdin stdout and stderr */ /* now reopen stdin stdout and stderr */
#if HAVE_DUP2 && !defined(__MINGW32__) #if HAVE_DUP2 && !defined(__MINGW32__)
if(dup2(s,0)<0) { if(dup2(s,0)<0) {
fprintf(stderr,"could not dup2 stdin\n"); #if HAVE_STRERROR
return; Yap_Error(SYSTEM_ERROR, TermNil, "could not dup2 stdin: %s", strerror(errno));
#else
Yap_Error(SYSTEM_ERROR, TermNil, "could not dup2 stdin");
#endif
return;
} }
if(dup2(s,1)<0) { if(dup2(s,1)<0) {
fprintf(stderr,"could not dup2 stdout\n"); #if HAVE_STRERROR
return; Yap_Error(SYSTEM_ERROR, TermNil, "could not dup2 stdout: %s", strerror(errno));
#else
Yap_Error(SYSTEM_ERROR, TermNil, "could not dup2 stdout");
#endif
return;
} }
if(dup2(s,2)<0) { if(dup2(s,2)<0) {
fprintf(stderr,"could not dup2 stderr\n"); #if HAVE_STRERROR
return; Yap_Error(SYSTEM_ERROR, TermNil, "could not dup2 stderr: %s", strerror(errno));
#else
Yap_Error(SYSTEM_ERROR, TermNil, "could not dup2 stderr");
#endif
return;
} }
#elif _MSC_VER || defined(__MINGW32__) #elif _MSC_VER || defined(__MINGW32__)
if(_dup2(s,0)<0) { if(_dup2(s,0)<0) {
@ -286,6 +301,9 @@ Yap_init_socks(char *host, long interface_port)
#else #else
close(s); close(s);
#endif #endif
#else /* USE_SOCKET */
Yap_Error(SYSTEM_ERROR, TermNil, "sockets not installed", strerror(errno));
#endif /* USE_SOCKET */
} }
static Int static Int