1*31459Sminshall #include <sys/types.h> 2*31459Sminshall #include <sys/socket.h> 3*31459Sminshall #include <netinet/in.h> 4*31459Sminshall #include <netdb.h> 5*31459Sminshall #include <stdio.h> 6*31459Sminshall 7*31459Sminshall #include "../api/api.h" 8*31459Sminshall 9*31459Sminshall 10*31459Sminshall static int sock = -1; 11*31459Sminshall 12*31459Sminshall api_open_api(string) 13*31459Sminshall char *string; /* if non-zero, where to connect to */ 14*31459Sminshall { 15*31459Sminshall struct sockaddr_in server; 16*31459Sminshall struct hostent *hp; 17*31459Sminshall char *getenv(); 18*31459Sminshall char thehostname[100]; 19*31459Sminshall int port; 20*31459Sminshall 21*31459Sminshall if (string == 0) { 22*31459Sminshall string = getenv("API3270"); /* Get API */ 23*31459Sminshall if (string == 0) { 24*31459Sminshall fprintf(stderr, 25*31459Sminshall "API3270 environmental variable not set - no API.\n"); 26*31459Sminshall return -1; /* Nothing */ 27*31459Sminshall } 28*31459Sminshall } 29*31459Sminshall 30*31459Sminshall if (sscanf(string, "%[^:]:%d", thehostname, &port) != 2) { 31*31459Sminshall fprintf(stderr, "API3270 environmental variable has bad format.\n"); 32*31459Sminshall return -1; 33*31459Sminshall } 34*31459Sminshall /* Now, try to connect */ 35*31459Sminshall sock = socket(AF_INET, SOCK_STREAM, 0); 36*31459Sminshall if (sock < 0) { 37*31459Sminshall perror("opening API socket"); 38*31459Sminshall return -1; 39*31459Sminshall } 40*31459Sminshall server.sin_family = AF_INET; 41*31459Sminshall hp = gethostbyname(thehostname); 42*31459Sminshall if (hp == 0) { 43*31459Sminshall fprintf(stderr, "%s specifies bad host name.\n", string); 44*31459Sminshall return -1; 45*31459Sminshall } 46*31459Sminshall bcopy(hp->h_addr, &server.sin_addr, hp->h_length); 47*31459Sminshall server.sin_port = htons(port); 48*31459Sminshall 49*31459Sminshall if (connect(sock, &server, sizeof server) < 0) { 50*31459Sminshall perror("connecting to API server"); 51*31459Sminshall return -1; 52*31459Sminshall } 53*31459Sminshall /* YEAH */ 54*31459Sminshall return 0; /* Happiness! */ 55*31459Sminshall } 56*31459Sminshall 57*31459Sminshall 58*31459Sminshall api_exch_api(regs, sregs) 59*31459Sminshall union REGS *regs; 60*31459Sminshall struct SREGS *sregs; 61*31459Sminshall { 62*31459Sminshall } 63