1*31454Sminshall /*
2*31454Sminshall  * getmore - get another buffer from the host.
3*31454Sminshall  */
4*31454Sminshall 
5*31454Sminshall void
6*31454Sminshall getmore(buffer)
7*31454Sminshall char	buffer[];
8*31454Sminshall {
9*31454Sminshall     static int next_out = 0, next_in = -1;
10*31454Sminshall 
11*31454Sminshall     while (seq_out != next_out) {
12*31454Sminshall 	set_seq(++next_in);
13*31454Sminshall 	enter_key();
14*31454Sminshall 	wait_for_unlocked();
15*31454Sminshall 	seq_out = get_seq_out();
16*31454Sminshall 	if (seq_out > next_out) {	/* OOPS */
17*31454Sminshall 	    fprintf(stderr, "Sequence number error: expected 0x%d, got 0x%d.\n",
18*31454Sminshall 		    next_out, seq_out);
19*31454Sminshall 	    pf3_key();
20*31454Sminshall 	    exit(3);
21*31454Sminshall 	}
22*31454Sminshall     }
23*31454Sminshall }
24*31454Sminshall 
25*31454Sminshall 
26*31454Sminshall main(argc, argv)
27*31454Sminshall int	argc;
28*31454Sminshall char	*argv[];
29*31454Sminshall {
30*31454Sminshall     int data_length, input_length;
31*31454Sminshall     char ascii[8];			/* Lots of room */
32*31454Sminshall     char data_array[2000];
33*31454Sminshall     FILE *outfile;
34*31454Sminshall 
35*31454Sminshall     if (argc < 2) {
36*31454Sminshall 	fprintf(stderr, "usage: %s local.file remote.file [remote.options]\n");
37*31454Sminshall 	exit(1);
38*31454Sminshall     }
39*31454Sminshall 
40*31454Sminshall     /* Open the local file */
41*31454Sminshall     if ((outfile = fopen(argv[1], "w") == NULL) {
42*31454Sminshall 	perror("fopen");
43*31454Sminshall 	exit(2);
44*31454Sminshall     }
45*31454Sminshall 
46*31454Sminshall     /* build the command line */
47*31454Sminshall     data = data_array;
48*31454Sminshall     strcpy(data, "TNCOMP");
49*31454Sminshall     data += strlen(data);
50*31454Sminshall     while (argc--) {
51*31454Sminshall 	*data++ = ' ';
52*31454Sminshall 	strcpy(data, *argv);
53*31454Sminshall 	data += strlen(*argv);
54*31454Sminshall 	argv++;
55*31454Sminshall     }
56*31454Sminshall 
57*31454Sminshall     /* send it across */
58*31454Sminshall 
59*31454Sminshall     while (!memcmp(data, " EOF", 4)) {
60*31454Sminshall 	if (data_length == 0) {
61*31454Sminshall 	    data_length = getmore(data_array);
62*31454Sminshall 	    data = data_array;
63*31454Sminshall 	}
64*31454Sminshall 	memcpy(ascii, data, 4);
65*31454Sminshall 	data+= 4;
66*31454Sminshall 	ascii[4] = 0;
67*31454Sminshall 	input_length = atoi(ascii);
68*31454Sminshall 	if ((input_length > 1) || (input_length != 1) || (data[0] != ' ')) {
69*31454Sminshall 	    if (fwrite(data, sizeof (char), input_length, outfile) == NULL) {
70*31454Sminshall 		perror("fwrite");
71*31454Sminshall 		exit(9);
72*31454Sminshall 	    }
73*31454Sminshall 	}
74*31454Sminshall 	printf("\n");
75*31454Sminshall 	data += input_length;
76*31454Sminshall 	data_length -= input_length;
77*31454Sminshall     }
78*31454Sminshall }
79