Commit 5b712ea9d16b2017e54babf7d3695d774f6270d5

Add a container for service structures.
main.c
(3 / 5)
  
3535int
3636main(int argc, char **argv)
3737{
38 char *hostname=0x00;
39 char *svc=0x00;
4038 time_t t=0, status;
39 requested_socket req;
4140
4241 if (argc < 3) {
4342 usage(argv[0]);
4443 exit(0);
4544 }
4645
47 hostname = argv[1];
48 svc=argv[2];
46 req = mk_req(argv[1], argv[2]);
4947
50 while((status=attemptConnection(hostname, svc)) != RV_SUCCESS) {
48 while((status=attemptConnection(req)) != RV_SUCCESS) {
5149 t=time(NULL);
5250 char *err="unknown";
5351 switch(status) {
sockets.c
(15 / 4)
  
2222
2323#include "waitforsocket.h"
2424
25requested_socket mk_req(char *host, char *svc)
26{
27 requested_socket rv;
28
29 rv.host=host;
30 rv.svc=svc;
31 rv.success=0;
32
33 return rv;
34}
35
2536static enum returnvalues waitForConnect(int s)
2637{
2738 int selected=0;
7575}
7676
7777enum returnvalues
78attemptConnection(char *host, char *svc)
78attemptConnection(requested_socket req)
7979{
8080 struct addrinfo hints, *res, *res0;
8181 enum returnvalues rv=ERR_ERRNO;
8585 char *cause=NULL;
8686 int err=0;
8787
88 if (host == NULL || svc == NULL) {
88 if (req.host == NULL || req.svc == NULL) {
8989 return (0);
9090 }
9191
9292 memset(&hints, 0, sizeof(hints));
9393 hints.ai_family = PF_UNSPEC;
9494 hints.ai_socktype = SOCK_STREAM;
95 err=getaddrinfo(host, svc, &hints, &res0);
95 err=getaddrinfo(req.host, req.svc, &hints, &res0);
9696 if(err != 0) {
9797 fprintf(stderr, "Error looking up %s:%s: %s\n",
98 host, svc, gai_strerror(err));
98 req.host, req.svc, gai_strerror(err));
9999 return(ERR_DNS);
100100 }
101101
  
22 * Copyright (c) 2005 Dustin Sallings <dustin@spy.net>
33 */
44
5typedef struct {
6 char *host;
7 char *svc;
8 int success;
9} requested_socket;
10
511enum returnvalues { ERR_DNS=-3, ERR_TIMEOUT=-2, ERR_ERRNO=-1, RV_SUCCESS=0 };
612
7enum returnvalues attemptConnection(char *, char *);
13enum returnvalues attemptConnection(requested_socket);
14
15requested_socket mk_req(char *host, char *svc);