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