|
|
1.1 root 1: /* pipe.c - ufn talks to dish */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/others/quipu/uips/ufn/RCS/pipe.c,v 7.0 90/06/13 18:52:42 mrose Exp $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/others/quipu/uips/ufn/RCS/pipe.c,v 7.0 90/06/13 18:52:42 mrose Exp $
9: *
10: *
11: * $Log: pipe.c,v $
12: * Revision 7.0 90/06/13 18:52:42 mrose
13: * *** empty log message ***
14: *
15: */
16:
17: /*
18: * NOTICE
19: *
20: * Acquisition, use, and distribution of this module and related
21: * materials are subject to the restrictions of a license agreement.
22: * Consult the Preface in the User's Manual for the full terms of
23: * this agreement.
24: *
25: */
26:
27:
28:
29: #include <stdio.h>
30: #include <signal.h>
31: #include "internet.h"
32:
33: /* DISH */
34:
35: int dish (command)
36: char *command;
37: {
38: int cc,
39: n;
40: char buffer[BUFSIZ];
41: static int sd;
42: static int dish_running = NOTOK;
43: static struct sockaddr_in sin;
44:
45: if (dish_running == NOTOK) {
46: if (get_dish_sock (&sin, 0) != 0) {
47: (void) fprintf (stderr,"can't get dish socket\n");
48: bye_bye:;
49: (void) fprintf (stderr,"Can't invoke '%s'\n",command);
50: exit (-1);
51: }
52:
53: dish_running = OK;
54: }
55:
56: if ((sd = start_tcp_client ((struct sockaddr_in *) 0, 0)) == NOTOK) {
57: (void) fprintf (stderr,"Unable to start tcp client\n");
58: goto bye_bye;
59: }
60: if (join_tcp_server (sd, &sin) == NOTOK) {
61: (void) close_tcp_socket (sd);
62: (void) fprintf (stderr,"unable to join to tcp socket\n");
63: goto bye_bye;
64: }
65:
66: n = send (sd, command, cc = strlen (command), 0);
67:
68: if (n != cc) {
69: (void) fprintf (stderr,"write to DUA failed\n");
70: goto bye_bye;
71: }
72:
73: for (;;) {
74: if ((cc = recv (sd, buffer, sizeof buffer - 1, 0)) == NOTOK) {
75: (void) fprintf (stderr,"read from DUA failed\n");
76: goto bye_bye;
77: }
78:
79: buffer[cc] = NULL;
80: if (cc == OK)
81: break;
82:
83: switch (buffer[0]) {
84: case '1':
85: case '2':
86: case '3':
87: (void) write (1,buffer + 1, cc - 1);
88:
89: while ((cc = recv (sd, buffer, sizeof buffer - 1, 0)) > OK)
90: (void) write (1,buffer + 1, cc - 1);
91:
92: break;
93:
94: default:
95: (void) fprintf (stderr, "Dish is asking difficult questions (%s)!!!",buffer + 1);
96: break;
97: }
98: break;
99: }
100:
101: (void) close_tcp_socket (sd);
102: }
103:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.